稳定高效大型系统架构---集群中间件开发
来源:互联网 发布:linux怎么安装aptget 编辑:程序博客网 时间:2024/06/06 06:44
在建设复杂,稳定,高效的大型系统时,C/S多层结构,体现出较强的优势。其winform应用程序,继往开来,可以提供B/S结构很难实现操作方面性、操作复杂性及界面处理速度(当然,我不是说B/S做不到,是相对难于实现)。而多层系统,对于客户端来说,其一台出现故障,无怪乎一个工作台停止运作。但是其中间层服务器,出现故障,将导致整个工作体现瘫痪。本文特此对多层系统,中间层稳定架构,做一些技术架构讲述。
---技术分析员 李海 ---nclihai@tom.com
一个偶然的机会,使我接处到Corba中间件。当时公司还特意让我北京borland公司学习一段时间。我对其visibroke中间件佩服的五体投地,从理论上讲:如果你架设的中间层,可以实现多台并发运行,又能实现负荷平衡,还能实现故障热切换,那么你就有了99.99999%稳定的中间件服务器。对此,我在学习时间倾赋了所有时间和精力,就连女朋友吵着去看长城,我都不想去。
那现在来说,稳定的中间件应该是什么样子呢?
对于客户端请求,如果发现服务停止,可以实现服务无缝转移---这叫不丢失任何服务.
对于多个客户端请求,可以讲请求轮巡到不同的服务器上---这样叫负荷平摊,如果再做到可以根据客户端数量方面地增减服务器数量,那就能很通过简单增加服务器,实现系统效率的提升。
最牛的是,如果你再加上分布式程序设计。一个函数,根据服务器负荷平摊的特点,可以让多个服务器,同时为一个函数工作。visibroke完全可以做到这点。
可以visibroke太贵了,好多西就是贵,贵得公司放弃这个选择。不过,对此优秀的中间层算法,在我脑子里一直徘徊。后来我换了公司,新的看中我对中间层的理解,特聘请我开发中间层。到目前为此,我的中间层也在几个城市三警系统上安全稳定地运行,还没有出现过故障。虽然还有很多不完美的地方,但今天把这些实现算法拿出来,提供交流。
从纵向上,思考:
第一:客户端请求,实现轮巡。
知道了请求,需要轮巡。就要先知道有那些服务器---》 设计服务器注册注销机制。
还要知道请求当前,每台服务器上有那些负荷---》客户端请求计算机制。
然后根据这些,计算当前请求由那个服务器来完成任务。
第二:故障热切换
经试验验证,故障有三种情况
A)请求选择服务器前,有故障。
B)服务器选中后,准备开始要服务时,故障。
C)服务正在进行时,发生故障。
为解决以上问题,我做出如下架构:
• 在客户端,开发了安全访问机制,保证在有服务存在的情况,单次的访问异常,可以容错;同时若访问时发生故障,重新请求。
• 中间层开发了负荷平衡机制,其建立的集群,对客户端来说,是一个透明体。客户端只需要知道公布的服务集群IP地址,由负荷平衡自动分配请求;同时服务器发生故障时,自动从集群中移去,将请求切换至其它正常的服务器上。(中间层是一个无状态,多线程,分布式的应用程序服务,对任何一个请求,由哪台服务器提供服务都可以达到一致的目标)
• 其架构如下图:
- 稳定高效大型系统架构---集群中间件开发
- 高效稳定的大型网站系统架构分析
- 高效稳定的大型网站系统架构分析(转)
- 大型web系统架构——mysql中间件应用
- 《大型网站系统与Java中间件实践》--大型网站及其架构的演进过程(上)
- 《大型网站系统与Java中间件实践》--大型网站及其架构的演进过程(下)
- 大型网站架构之JAVA中间件
- 大型网站架构之JAVA中间件
- 大型系统架构
- 大型系统架构演化
- 大型系统架构演化
- 大型分布式系统架构
- 大型网站系统架构
- 大型网站系统架构
- 大型网站系统架构
- 大型网站系统架构
- 大型网站系统与Java中间件实践
- 大型网站系统与Java中间件实践
- 图像处理,神经网络,模式识别领域的几本好书。
- 35岁学太极系列(1)-缘起功夫梦
- Oracle 10g标准版与企业版
- WEB界面开发规范
- python整理十——生成器表达式与列表解析
- 稳定高效大型系统架构---集群中间件开发
- c#邮件群发
- 个人所得税计算公式
- 向数据插入记录时对于空值字段的处理
- Com+事务
- 暂时告别.NET
- .net中的4种事务总结
- (转)Visual Studio2008的新功能:代码度量
- 清华北大成出产美国博士最多的本科学校