< 2025年4月 >
30 31 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 1 2 3
4 5 6 7 8 9 10

  在最近的一次大数据技术讨论会上,有一家公司的技术高管谈到松耦合和紧耦合的性能表现的话题。正好Laxcus大数据管理系统的设计,从0.x、1.x到2.x版本,也经历了从紧耦合到松耦合的发展过程。做为亲历者,对这两种架构的设计和运行效果,我们有清楚的了解和认识。下面就说一说这件事。写此博文,也希望给做系统设计的兄弟们,尤其是做高并发、复杂数据计算的同行提供一点参考。

  先说紧耦合,这种架构是我们在Laxcus 0.x、1.x中采用的。如下图所示,紧耦合架构本质是一个Client/Server模型。客户机发起请求给服务器,服务器收到,根据请求做出应答,然后反馈给客户机。这种架构最典型的应用就是我们每天都用到的WEB服务。优点嘛,就是简单。架构简单、设计简单、开发周期短、能够快速投入部署和应用。在Laxcus集群的早期运行中,这些特点都得到有力的验证。

紧耦合架构

  但是到了后期,随着Laxcus集群规模的不断扩大,访问量的不断增加,尤其是数据计算量、计算时间成倍数的增长后,紧耦合架构渐渐不堪重负,缺点开始不断暴露出来,主要有以下几个方面:

  1. 无法支持大规模的计算业务。因为大数据业务对计算机资源占比普遍很大,导致多任务并行能力有限。举个例子,我们曾在一台Pentium IV 2.G + 2G的机器上测试一项小规模的数据处理业务。当并行任务量达到100多个的时候,计算机已经发生超载现象。

  2. 计算机载荷无法控制。换句话说,就是计算机不能控制超载现象,而超载对硬件伤害非常大,这会严重降低计算机稳定运行能力和使用寿命。

  3. 任务执行过程中管理难度大。任务在执行过程中不受管控。

  4. 对网络资源消耗大。同步操作在数据发送和数据返回之间,有很大一段是空闲的,这种空闲占用是对网络资源的极大浪费。

  5. 安全控制力度差。因为服务器直接暴露给客户机,容易引发网络攻击行为。

  6. 程序代码之间关联度过高,不利于模块化处理。

  7. 以上现象最终导致系统稳定性变差。

  这些问题出现后,我们开始考虑修改系统设计。经过多番考量、比较、权衡之后,我们决定改用松耦合架构重新规划系统设计。新框架是在原来Client/Server模型之上的改进,即在Client/Server模型之间加入一个代理(Agent),把CS模型变成CAS模型。在新的架构下,客户机的角色不变,代理服务器承担起与客户机通信,和对客户机的识别判断工作,服务器位于代理服务器后面,对客户机来说不可见,它只负责数据处理工作。另外我们也把CS模型的同步操作改为CAS的代理处理。

  在设计新架构的同时,我们还发现,如果要适应松耦合架构,原来在紧耦合架构下运行的程序代码,因为现在的工作方式发生了发生了变化,它们几乎都要重写。这可是一个庞大的工程,需要消耗大量的人力、时间去修改和调试。所以我们在松耦合架构之上,结合代理服务器,又设计了一套Invoke/Produce机制。这是另一种代理方案,是针对数据处理进行抽象化处理和分组分级管理。原来的数据处理和业务逻辑套用这套机制后,程序代码基本不用修改,转移到CAS模型上运行就可以了。 

 

松耦合架构

  新架构设计和代码修改完成后,我们在原来的集群上,和紧耦合架构做了各种对比测试。结果表现是出其的好,不仅解决了紧耦合架构上存在的所有问题,而且其中很多技术指标还超出了我们的预估,主要表现以下一些方面:

  1. 多任务并行处理能力获得极大提升。同样是上述那个数据处理,紧耦合架构只能支持最大约100多个并行,而转到松耦合架构上,达到了8700多个。这还只是在Pentium IV 2.0芯片上的表现,放到Core 2平台,并行处理任务很轻松地超过10000个。

  2. 实现负载自适应机制。(根据当时运行环境,松耦合架构分配并行工作任务,避免超载现象)。

  3. 实现了运行任务的随机控制。 (松耦合架构对运行中的工作任务进行随机调整和控制,进一步避免了持续超载现象)。

  4. 基本杜绝了网络攻击行为。由于代理服务器的隔绝和筛查作用,同时结合其它安全管理手段,外部攻击在代理服务器处就被识别和过滤掉了,这样就保护了后面的服务器不受影响。

  5. Invoke/Produce机制改善了程序结构的模块化,有利于实现复杂的数据业务处理。

  6. 异步操作减少了网络资源消耗和操作关联。

  7. 综合以上措施,它们共同增强了系统稳定性。

 

  最后用一张表格对两种架构做个对比,做为两种架构性能特点的总结。有关Laxcus详细介绍,请见《Laxcus大数据管理系统》一文。

 

紧耦合架构

松耦合架构

工作方式

同步

异步

程序关联依赖

业务逻辑关系

集中控制

分散控制

设计难度

容易

比较复杂

响应能力

和并行工作量成反比

时效表现

实时

无要求

业务适用范围

简单计算

复杂计算

安全

应用领域

小规模并行处理环境

大规模、超大规模并行处理环境

系统稳定性

 

posted on   laxcus  阅读(9376)  评论(1)    收藏  举报
编辑推荐:
· dotnet 9 通过 AppHostRelativeDotNet 指定自定义的运行时路径
· 如何统计不同电话号码的个数?—位图法
· C#高性能开发之类型系统:从 C# 7.0 到 C# 14 的类型系统演进全景
· 从零实现富文本编辑器#3-基于Delta的线性数据结构模型
· 记一次 .NET某旅行社酒店管理系统 卡死分析
阅读排行:
· 用c#从头写一个AI agent,实现企业内部自然语言数据统计分析
· 三维装箱问题(3D Bin Packing Problem, 3D-BPP)
· Windows上,10分钟构建一个本地知识库
· Java虚拟机代码是如何一步一步变复杂且难以理解的?
· 使用 AOT 编译保护 .NET 核心逻辑,同时支持第三方扩展
点击右上角即可分享
微信分享提示