论文部分内容阅读
传统的消息中间件由于其架构和设计思想,存在着单点失效和可扩展性差的问题。为了积极应对市场变化带来的各种机遇和挑战,企业要求应用系统规模更加动态,架构更加灵活,响应更加迅速。基于分布式架构的消息总线应运而生,它采用了去中心化的设计,消息服务由多台地位平等的节点组成的集群协作提供。但这样的消息系统面临着几方面的挑战:如何高效合理地分配多个节点的工作负载、如何保证消息不丢失、如何处理节点失效等。这样的系统实现起来十分复杂,并且需要大量的推理和验证。因此,对一个消息总线的核心组件消息代理中部分功能进行设计并仿真是一个具有较高研究价值和实际意义的课题,对实现一个完整的消息系统具有重大的指导意义。本文根据对现有系统的研究和总结,提出了一种新的消息代理的设计方案,并基于NS2这种成熟的使用C++实现的仿真系统进行了仿真实现。其后,设计了几组场景对仿真系统进行测试,并完成了对测试结果的分析。首先对现有的消息系统进行了分析,结合它们的优缺点和存在的挑战提出了消息代理的设计目标,包括灵活的负载均衡、保证消息不丢失以及高可用性。基于前述调研分析和设计目标,对各个目标提出具体的设计方案。负载均衡机制的设计包括以下几个部分:分割主题的所有权、对消息进行重排序、消息代理的工作负载的计算以及使用分布式协调服务。保证消息不丢失的设计主要借助于外部持久化服务。针对高可用性,则设计了消息代理的失效恢复机制。接下来,本文根据设计方案设计了仿真消息系统的总体架构与系统中核心的数据结构,以及发布者、订阅者和消息代理三个模块之间交互的接口;分别对消息系统中的三个模块进行了详细设计,包括模块内部相关功能的具体流程设计;此外,还介绍了仿真系统的输入与输出数据的设计。在仿真系统的实现章节,本文给出了三个模块的核心算法设计与部分代码实现,并以文字的形式描述了消息的处理流程。随后,本文展示了所设计的几组场景下整个仿真系统运行的结果与相关图表,阐述了分析之后得到的结论。最后,对作者在课题期间的工作成果进行了总结。