再谈微服务

微服务的概念

微服务架构是一种架构概念,旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦,他的主要作用是将功能分散到离散的各个服务中间,从而降低系统的耦合,并提供更加灵活的服务支持
概念
把一个大型的应用程序和服务拆分为数十个,或者数个的支持微服务,他可扩展单个组件而不是整个应用程序堆栈,从而满足服务等级协议
定义
围绕业务领域组件来创建应用,这些应用可独立的进行开发,管理和迭代,在分散的组件中使用云架构和平台式部署,管理和服务功能,使产品交付变得更加简单
ps:2011年为互联网元年 2012年为微服务元年

系统架构需要遵循三个标准:
提高敏捷性,及时响应业务需求,促进企业发展
提高用户体验,减少用户流失
降低成本
传统的开发模式
单体开发 即所有的功能都打包在一个war包,基本没有外部依赖
优点:开发简单,基本不会重互开发,集中式管理,没有分布式的调用消耗
缺点: 效率低,维护难,不灵活,稳定性差,扩展性不够

微服务架构设计模式
需要考虑的问题
API geteway
服务间的调用
服务发现
服务容错
服务部署
数据调用
在这里插入图片描述

聚合器微服务设计模式
在这里插入图片描述
聚合器调用多个服务实现应用程序所需的功能。它可以是一个简单的 WEB 页面,将检索到的数据进行处理展示。它也可以是一个更高层次的组合微服务,对检索到的数据增加业务逻辑后进一步发布成一个新的微服务,这符合DRY(编程过程中不写重复代码,将能够公共的部分抽象出来,封装成工具类或者用“abstraction”类来抽象公有的东西,降低代码的耦合性,这样不仅提高代码的灵活性、健壮性以及可读性,也方便后期的维护或者修改)原则。另外,每个服务都有自己的缓存和数据库。如果聚合器是一个组合服务,那么它也有自己的缓存和数据库。聚合器可以沿X轴和Z轴独立扩展。
代理微服务设计模式
在这里插入图片描述
在这种情况下,客户端并不聚合数据,但会根据业务需求的差别调用不同的微服务。代理可以仅仅委派请求,也可以进行数据转换工作
链式微服务设计模式

在这里插入图片描述
在这种情况下,服务A接收到请求后会与服务B进行通信,类似地,服务B会同服务C进行通信。所有服务都使用同步消息传递。在整个链式调用完成之前,客户端会一直阻塞。因此,服务调用链不宜过长,以免客户端长时间等待。
分支微服务设计模式
在这里插入图片描述
数据共享微服务设计模式
自治是微服务的设计原则之一,就是说微服务是全栈式服务。但在重构现有的“单体应用(Monolithic Application)”时,SQL 数据库反规范化可能会导致数据重复和不一致。因此,在单体应用到微服务架构的过渡阶段,可以使用这种设计模式,如下图所示
在这里插入图片描述
异步消息传递微服务设计模式
虽然 REST 设计模式非常流行,但它是同步的,会造成阻塞。因此部分基于微服务的架构可能会选择使用消息队列代替 REST 请求/响应,如下图所示
在这里插入图片描述

发布了34 篇原创文章 · 获赞 19 · 访问量 1479

猜你喜欢

转载自blog.csdn.net/qq_42236003/article/details/94384903