微服务架构五大设计模式详解,助你领跑行业

薪科技快评 2024-05-28 22:08:14

微服务架构设计模式详解(5种主流模式)

微服务架构

微服务,一种革命性的架构模式,主张将大型应用分解为若干小服务,通过轻量级通信机制互联。每个服务专注特定业务,具备独立部署能力,轻松融入生产环境,为系统带来高效、灵活的构建与部署体验。

如下图所示:

为什么需要微服务架构

公司初期,业务相对简单,正是验证商业模式的关键时刻。此时,单体服务因其高效性,在业务复杂度低、系统简单的情况下,成为提升生产力的优选方案。

如下图所示:

随着公司的发展,业务复杂性慢慢提高,以及访问量越来越大,会出现如下情况:

编译时间过长、回归测试周期过长;开发效率降低,因为,所有业务都混在一起;团队扩展了,需要分工明确了,按照业务来发展,大家都高效;聚合设计模式

为了尽量减少服务之间的通信,我们可以使用服务聚合模式。

基本上服务聚合设计模式,是接收来自客户端、或 API 网关的请求。

然后分配给内部多个后端微服务,再将结果合并,并在一个响应结构中发给请求发起人。

如下图左侧所示:

这种模式,可以帮助简化客户端与微服务之间的通信,并提供更好的性能和用户体验。

代理设计模式

如下图左侧所示:

比如:

Service Mesh是一种轻量级的微服务代理框架,用于管理微服务之间的通信。

异步消息传递设计模式

如果通信只是在少数几个微服务之间进行,那么同步通信就很好。

REST虽流行但同步易阻塞,微服务架构中,消息队列因其异步性,常作为REST请求/响应的替代选择,提升系统性能。

如下图所示:

在微服务架构中,若需实现多服务间无依赖、松耦合的交互,推荐采用基于异步消息的通信方式,确保服务间的高效协同。

链式设计模式

微服务间存在多级依赖,如Sale微服务即依赖于Product和Order微服务,实现高效服务交互与协作。

所有服务都使用同步消息传递,在整个链式调用完成之前,客户端会一直阻塞。

因此,服务调用链不宜过长,以免客户端长时间等待。

如下图所示:

数据共享设计模式

我们已经说过,在微服务里,为每个服务分配一套单独的数据库是理想方案。

在后面的阶段里,我们可以转到每个服务一套数据库的模式,直到我们完全做到了这一点。

但在重构现有的单体应用时,SQL数据库反规范化可能会导致数据重复和不一致。

因此,在单体应用到微服务架构的过渡阶段,可以使用这种设计模式。

如下图所示:

在这种情况下,部分微服务可能会共享缓存、和数据库存储。

-对此,您有什么看法见解?-

-欢迎在评论区留言探讨和分享。-

0 阅读:3

薪科技快评

简介:薪科技评说,发现技术的点滴,记录科学的飞跃!