基于消息中间件开发的优点
Posted key_3_feng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于消息中间件开发的优点相关的知识,希望对你有一定的参考价值。
通过消息中间件,可以在多个微服务之间进行可靠的异步通信,从而降低微服务之间的耦合度,改善应用性能,提升应用的可扩展性,提高系统的可用性和更灵活的系统集成。
1、降低应用耦合
对于一个基于微服务的应用系统来讲,可能存在数十个甚至更多微服务,这些微服务之间需要进行数据交互或者流程处理。如果没有使用消息中间件,那么这些微服务之间需要通过硬编码的方式实现业务需要。但是如果采用了消息中间件,虽然不能够完全消除点对点的调用,但可以大大减少微服务之间的依赖和调用,从而降低应用间的耦合度。
如果微服务之间的直接调用减少,就可以减少(甚至消除)对其他微服务的影响。每个微服务仅需关注自己的业务逻辑、数据处理以及如何将消息发送给消息服务器或者监听消息服务器中所关心的消息即可,而不用关心其他微服务如何处理消息,也无须知道一条消息来自哪个微服务。
2、改善应用性能
通过使用消息服务器,消息发送者将消息发送到消息队列后就可以立即返回,而无须等待消息消费方完成处理。微服务之间的处理变成了异步处理模式,提升了性能,使系统具有了更好的响应延迟。在应用访问的高峰时段,通过消息中间件可以起到一定的缓冲作用,从而减轻对数据库存储的负载压力。
另外,如果某个消息消费方无法快速处理消息队列中的消息,那么在传统单体架构中开发者需要尝试创建更多的线程来处理。这对代码编写和硬件设备都是一个不小的挑战。但在微服务架构下,开发者可以通过对该微服务实施水平扩展,创建更多的微服务实例来消费即可。这样,消费方的系统瓶颈就不会成为上游发送方的瓶颈了。
3、提升应用的可扩展性
在消息中间件的通信架构中,一个微服务不需要知道所发送的消息由谁消费,也就是说可以在无须修改消息发送方情况下很容易地添加一个新的消费者,或者为消费者添加新的功能。这种应用架构非常符合面向对象的开闭原则:一个软件实体,如类、模块和函数,应该对扩展开放,而对修改关闭。就是说,对于应用,应该通过扩展来实现相应的功能变化,而不是通过修改现有代码来实现。
4、提高系统的可用性
基于消息服务器进行通信是可靠的,所发送的消息不会丢失,并且大部分消息中间件都提供将消息持久化到磁盘的功能。因此,当消息发送方将消息发送到消息服务器时,消息就由消息中间件进行存储和分发,即使消费方宕机也不会影响到消息发送方的处理。在消费方宕机的时间内消息发送方还可以发送消息,并不会丢失,当消费方上线时就可以及时对消息进行处理。
反之,如果消息发送方宕机也不会影响消费方的正常运转。开发者还可以配合一些其他技术,如使用Redis作为分布式缓存,当所依赖的某微服务不可用时,就可以优雅地进行服务降级,进一步降低微服务之间的相互影响,从而提升系统的可用性。另外,在分布式事务中,通过本地事务和消息服务器的配合,可以保证数据最终的一致性。
5、更灵活的系统集成
应用系统之间的集成,除了可以通过接口集成外,还可以通过消息中间件进行集成。通过消息中间件进行集成,使系统的集成可以跨平台,同时降低了对网络协议复杂性的处理。
以上是关于基于消息中间件开发的优点的主要内容,如果未能解决你的问题,请参考以下文章