当设计师严格遵循单一的架构模式(例如微服务)时,他们可能会牺牲灵活性以换取简单性,这有时会限制整个系统的适应性和效率。
如传统上所实现的微服务将一个系统分解为小型且可独立部署的服务。每个微服务负责一个特定的功能模块,并通过同步请求-响应消息与其他服务进行通信。
这种方法有其优势,但也可能导致紧密的时间耦合和对即时响应的高度依赖性,随着系统的扩展和需求的变化,这可能会形成瓶颈。以下是如何通过更灵活的消息传递策略来克服这种僵化的问题。
想象一下,分布式架构中的每个组件都可以使用一种_消息调解器(消息中介者),这种消息中介者可以处理同步、异步和基于事件的通信。设计师不再强制要求每种交互都必须是同步的,而是可以根据具体需求选择不同的通信方式。
这给架构带来了以下可能性:
混合式通讯模式- 实时通信:适用于需要即时回应的情境,例如当一个服务需要另一个服务的回应才能继续时。例如,支付服务可能需要先确认交易状态,才能继续处理订单。
- 异步通信方式:用于不需要实时反馈的情况,有助于避免瓶颈。例如,推荐服务可以根据客户的浏览行为来更新推荐,而不影响主应用程序的运行。
- 事件话题:适用于需要多个服务对单一事件作出反应的情况。当订单被提交时,可以发布一个关于“订单下单”的事件,例如库存管理、发货和数据分析等服务可以独立地作出反应,而不需要彼此之间直接请求。
仅同步通信需要阻塞等待响应,这可能限制高吞吐量系统。启用异步消息传递允许服务“发送并忘记”,继续执行其他任务,无需等待响应。结果是一个紧密耦合度较低的系统,从而能够更轻松地应对工作负载峰值。
增强的容错能力传统的微服务如果链中一个服务失败,可能会遭受连锁故障,因为在每个同步请求等待响应期间,每个服务都在等待响应。通过采用异步和事件驱动的消息处理方式,服务可以重试操作或排队请求,或者即使某些部分出问题也能继续运行。系统可以通过暂时调整通信方式来保持弹性,直到受影响的服务恢复正常。
灵活扩展随着组织的发展,它们的架构需求也在不断增长。一种混合消息传递方法使它们能够在必要时灵活切换通信模式,而无需彻底重构系统。曾经的同步服务可以重新配置为异步队列或事件,具体取决于性能要求、用户需求和系统负载。
服务开发者的设计自由一种消息调解方式允许服务开发者设计最适合其服务目的的沟通方式,而不是将每个服务强制适应请求-响应模式。例如,日志服务可以异步发布消息,减少对核心应用的延迟影响;而客服界面则可以依赖同步消息,确保用户的问题能够实时地处理。
主要收获虽然微服务提供了结构,但如果这种结构过于僵硬,反而会成为限制。通过启用灵活的消息传递模式,同步、异步和基于事件的交互共存,设计者可以保持系统高效能、响应快速且具备韧性。
这种方法既能应对可预测的需求,也能应对不可预测的需求,使架构能够灵活应对现实世界中的业务需求。这样的系统不会被局限在单一模式中,而是保持灵活并更具前瞻性,能够在不影响其基础优势的情况下适应变化。
谢谢阅读!
哦,欢迎提问或发表评论啦。
要是你觉得这有用,给我们点个赞支持一下,让我们知道我们走对了路。
共同学习,写下你的评论
评论加载中...
作者其他优质文章