微服务商城系统消息中间件选型
微服务架构下系统会被拆分为多个独立的服务,每个服务使用自己的数据库和其它基础设施,服务间的通讯就需要可靠的消息系统来提供支持。消息在微服务架构中起着至关重要的作用,尤其是在商城系统中消息必需保证送达不能出现消息的丢失情况,一旦消息出现问题就会带来数据不一致的严重后果。同时商城系统还拥有庞大的数据量,所以消息系统的吞吐能力同样非常重要。所以在消息系统的选型中可靠性和性能是两个核心指标。
由于微服务架构下的消息队列对性能和可靠性有着非常高的要求,ShopNC商城系统微服务版使用RabbitMQ作为默认消息系统。RabbitMQ是一个开源的消息代理和队列服务器,用来通过普通协议在完全不同的应用之间共享数据,或者简单的将作业排队以便让分布式服务器进行处理。RabbitMQ 使用Erlang开发性能非常优秀,同时 Exchange 概念可以实现丰富的功能,消息确认、消息事务和消息持久化,可以有效的保证消息的可靠性。并且官方提供多种开发语言的客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP 等。在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗,非常适合作为商城系统微服务架构的消息中间件使用。随着数据量的增长以后还可以平滑的切换为支持海量数据的Kafka。