网站、数据库的衍变之路(六)

上文中简单讲到了集群的原理,由于缺乏研究的环境,没办法自己组网实验,因此,贫道对这方面并没有深刻的理解,而只是停留在理论理解上。在评论里,看到有朋友让我讲讲这方面,那我就讲一些我的理解,同时附上一些资源。大家都知道,完整的OSI是分7层的。一般来说,集群使用的OSI模型的第四层或者第七层进行扩展的。按我的理解,从性能上4层要由于7层,而功能上,7层要优于4层。而这个扩展也分硬件和软件的,硬件的价格贵,但是物有所值;而软件的,比如Windows集群服务这种,价格上相对便宜,而性能上肯定不如专门的集群交换机。

关于为什么使用第四层扩展来实现集群,大家可以参考这篇文章:
http://www.hudong.com/wiki/第四层交换 

关于OSI模型:

http://baike.baidu.com/view/113948.htm

当然,上面链接的是真正的长篇大论。TCP/IP的连接方式决定了第四层的可扩展性。在TCP/IP连接中,用到的东西有客户端IP,客户端MAC,服务器IP,服务MAC。但客户端对服务器发出请求时候,客户端是不知道服务器的MAC地址是多少的,只是请求服务器端的IP。服务器端拿到请求客户端的IP,就可以用一组算法,定位到另外一台服务器进行处理,这是理想的情况。但是这种理想的情况比较难实现。而用过RAW Socket的朋友都知道,传到某局域网的数据并不是只有目标机器能接收,其它机器也可以拿到。而Windows的集群就是利用这样的方式,在N台服务器中,服务器M拿到数据后验证为自己要处理的,那么M就会有响应。其它服务器则会丢掉这个包。关键问题是M服务器与主服务器的IP和MAC地址都不一样,这就注定了,如果M直接对客户端回应,那么客户端会丢掉这个包。而Windows集群服务,虚拟了一个MAC地址,这个MAC地址为集群内的计算机公用。但服务器回复客户端时,就使用这个MAC地址。相当于M回复客户端时,使用了主服务器为代理的一种模式。这种方式很像是面试投递简历,你把简历投递出去,你并不知道简历是哪个人处理的,而处理完后,回复给你的还是这个邮箱地址就行了。这个邮箱要是是很多人公用的,那么就和这里的原理一样了。

集群的知识在中小项目中并不需要使用,这就注定了学习集群是高成本的。但是使用集群确实能降低成本。比如,你的网站访问量越来越大了,网站支撑不住,如果不使用集群,你也可以使用垂直分割等办法。但是那样你将不得不修改整个程序,包括架构。甚至很多流程都需要修改,并且数据结构也完全变掉了。可以说开发成本异常高。而使用集群,只需要把原先的程序在多台服务器上放上拷贝就可以了。改动量非常小。

 

最近又研究网络,发现MAC只在内网中起作用,上面的讲法部分有错误,这方面还要继续研究~~

posted @ 2009-09-25 23:30 Birdshover 阅读(...) 评论(...) 编辑 收藏