论文部分内容阅读
网易严选电商系统基于微服务架构进行设计与开发,按照业务逻辑的不同被拆分成一组可以独立开发与部署的微服务,服务之间通过HTTP调用和RPC这两种轻量级通信方式来实现相互通信。但这两种通信方式都属于同步点对点通信的范畴,会造成服务之间存在高耦合、请求易阻塞以及请求无缓冲等缺陷。随着服务规模的不断扩张以及服务请求量的急剧增加,这些缺陷也被不断地放大从而影响着整个系统的性能和稳定性。为了解决上述问题,我们开发了消息发布订阅服务(简称MPS),扩展了微服务之间的通信方式,提供了服务与服务之间异步通信的能力。MPS采用具有高吞吐率以及高可用性特点的消息中间件Kafka作为消息存储与消费的底层技术支持,并在Kafka定义的Topic基础上提出了逻辑Topic的概念作为消息发布订阅的基本单元。本文主要介绍消息发布订阅服务的设计与实现,将该服务划分成服务接入管理、消息生产、消息消费推送、消息失败处理以及缓存等五个模块。服务接入管理模块负责管理接入MPS的外部服务、外部服务创建的逻辑Topic以及对逻辑Topic的订阅等信息。消息生产模块负责将外部服务发布到MPS的消息持久化存储到Kafka集群中。消息消费推送模块通过对Kafka集群中的消息进行消费并主动推送给外部服务来简化外部服务的消息获取逻辑。消息失败处理模块针对消息推送失败的情况提供了容错机制来避免消息丢失。缓存模块通过对数据库中的相关数据进行缓存来提高查询效率。目前消息发布订阅服务初始版本已经开发完成并被部署到生产环境中,越来越多的服务通过与MPS对接实现了性能和调用关系的优化。