先看下项目的功能梳理图:
项目已经完成了 5 个 web 模块和 4 个服务模块。其中运营商后台的调用关系最多,用到了商家商品服务、广告内容服务、搜索服务和页面生成服务。这种模块之间的依赖也称之为耦合。而耦合越多,之后的维护工作就越困难。那么如果改善系统模块调用关系、减少模块之间的耦合呢?
下面介绍一种解决方案----消息中间件。
什么是消息中间件
消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。对于消息中间件,常见的角色大致也就有 Producer(生产者)、Consumer(消费者)。
常见的消息中间件产品:
1)ActiveMQ
ActiveMQ 是 Apache 出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持 JMS1.1 和 J2EE 1.4 规范的 JMS Provider 实现。
2)RabbitMQ
AMQP 协议的领导实现,支持多种场景。淘宝的MySQL 集群内部有使用它进行通讯,OpenStack 开源云平台的通信组件,最先在金融行业得到运用。
3)ZeroMQ
史上最快的消息队列系统
4)Kafka
Apache 下的一个子项目 。特点:高吞吐,在一台普通的服务器上既可以达到 10W/s的吞吐速率;完全的分布式系统。适合处理海量数据。
改造系统模块调用关系
我们通过引入消息中间件 ActiveMQ,使得 运营商系统 与搜索服务、页面生成服务解除了耦合。