应用场景分析
随着互联网技术的蓬勃发展和微服务架构思想的兴起,系统架构开始追求小型化、轻量化,原有的大型集中式的IT系统通常需要进行垂直拆分,孵化出颗粒度更小的众多小型系统,因此对系统间松耦合的要求越来越高。目前RPC、服务治理、消息中间件逐渐成为互联网架构的标配。
引入消息中间件,使得服务之间实现可靠的异步调用,从而降低系统之间的耦合度,提高系统的可用性。消息中间件的一个重要的应用场景是解决系统之间数据的一致性(最终一致性)。消息中间件的两大核心点是异步与解耦,经典应用场景是数据同步。下面通过示例进行应用场景分析。
某公司的IT系统由多个子系统构成,例如基础数据平台、社交平台、订单平台。各个子系统之间使用单独的数据库,这样就需要进行基础数据的管理,比如用户信息表、行政区域表。如果按照职责划分,这些数据是在基础数据平台上进行维护,各个子系统的业务表需要关联这些基础数据,所有基础数据的表结构也会同时存在于各个子系统之间,此时数据的同步如何解决呢?
解决方案1:基础平台数据发生变化后,通过调用社交平台、订单平台提供的数据同步接口完成数据同步。
该方案的缺点是基础平台必须依赖各个业务子系统,当业务系统增加时,需要修改基础平台同步代码或配置文件,基础平台与各个业务子系统强耦合。
解决方案2:引入消息中间件,基础平台在数据发生变化后,发送一条消息到消息服务器,同步更新至各子系统。
各个业务系统订阅数据同步消息主题,自己负责消息消费,依靠Rocket MQ提供的消息重试机制,便于进行异常处理。