For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
异步消息通信机制的应用在微服务开发项目中是非常常见的一个通信机制,下面我们就通过案例分析来了解一下,异步消息通信的优缺点分析。
这种模式还包括了一个在消息生产者和接收端之间的消息代理。这种模式通常需要引入消息代理,因此会增加额外的复杂性。然而,这样做的好处远不止于抽象。
优点
容易扩展。客户端和服务器之间直接通信的一个主要问题是,为了让客户端能够发送消息,服务器需要有空闲的处理能力,但这受到单个服务可以执行的并行处理量的限制。如果客户端需要发送更多的数据,那么服务就需要扩容并拥有更多的处理能力。这有时可以通过扩展服务部署的基础设施来解决,使用更好的处理器或更多的内存,但总会有上限。相反,我们可以继续使用较低规格的基础设施,并让多个副本并行工作。消息代理可以将接收到的消息分发到多个目标服务,可以根据需求,让副本接收相同的数据或不同的消息。
易于添加新服务。创建新服务、订阅希望接收的消息类型、将新服务连接到工作流,都会很简单。生产者不需要知道新服务,只需要知道需要发送什么样的消息。
简单的重试机制。如果消息的传递由于服务器宕机而失败,只要消息代理愿意,可以自动继续尝试,不需要编写特殊的逻辑。
事件驱动。异步消息可以帮助我们创建事件驱动体系架构,这是微服务交互的有效方式之一。与其让单个服务因为等待同步响应而被阻塞,或者更糟的是,让它不断轮询某个存储介质来等待响应,还不如编写服务代码,以便在数据准备就绪时通知它们。当需要等待响应时,服务可以处理其他事情(比如处理下一个传入的请求)。这种架构可以更快的数据处理、更有效的使用资源和提供更好的整体通信体验。
缺点
调试困难。由于没有明确的数据流,只是承诺消息会被尽快处理,因此调试数据流和数据处理路径可能会成为一场噩梦。这就是为什么通常需要在接收到消息时生成一个ID,这样就可以通过日志跟踪消息在内部系统中的路径。
没有明确的直接响应。考虑到此模式的异步特性,一旦从客户端接收到请求,可能的响应是“OK,收到了,一旦准备好,我会让您知道”。对于无效请求,还可以发送400错误。问题是,客户端不能直接访问服务端的执行逻辑返回的输出,而是需要单独请求。作为一种替代方法,客户端可以订阅响应消息类型。通过这种方式,一旦响应消息到达,客户端将立即得到通知。
代理成为单点故障。如果没有正确配置消息代理,它可能会成为架构的问题。虽然不必忍受自己编写的不稳定的服务,但却被迫维护一个几乎不知道如何使用的消息代理。
这绝对是一个有趣的模式,并且提供了很大的灵活性。如果生产者端需要产生大量消息,那么在生产者和消费者之间有一个类似缓冲区的结构将增加系统的稳定性。
虽然处理过程可能会很慢,但有了缓冲区后,扩展将变得容易得多。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。