持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第13天,点击查看活动详情
什么是微服务?
微服务(或微服务架构)是一种云原生架构方法,其中单个应用程序由许多松散耦合且可独立部署的较小组件或服务组成。
微服务特点:
- 单一职责的。一个微服务应该都是单一职责的,这才是“微”的体现,一个微服务解决一个业务问题(注意是一个业务问题而不是一个接口)。
- 面向服务的。将自己的业务能力封装并对外提供服务,这是继承SOA的核心思想,一个微服务本身也可能使用到其它微服务的能力。
- 服务之间通过HTTP协议相互通信
- 可独立部署
- 服务集中化管理
- 微服务是一个分布式系统
微服务框架
目前国内企业使用的微服务框架主要是Spring Cloud和Dubbo。 Spring Cloud全家桶提供了各种各样的组件,基本可以覆盖微服务的服务治理的方方面面,以下列出了Spring Cloud一些常用组件:
这里的组件大多数使用的是阿里的。
个人觉得阿里的一些组件比较方便,当然国外的很多已经闭源或者停止更新了,如Eureka,Zuul等。
服务注册中心
微服务不得不使用的组件:服务注册中心。所有服务都要注册到服务注册中心,同时也可以从服务注册中心获取当前可用的服务清单。
其作用相当于房产中介,卖房时在房产中介挂上其房子信息,需要买房的人则在房产中介查看可以买的房子。
服务注册中心必须要有高可用性和实时更新功能。
常用的组件有:Nacos、Eureka。
网关路由:
作为系统的路由,接收请求,发送请求到相应服务并响应。可以理解为反向代理,其负责代理服务端。
常用的网关组件:Gateway、Zuul
微服务优缺点
优点:
- 使大型的复杂应用可以持续交付和持续部署。
- 每个服务足够内聚,足够小,代码容易理解这样能聚焦一个指定的业务功能或业务需求。
- 微服务能使用不同的语言开发。
缺点:
- 运维成本过高,部署数量较多。
- 分布式系统的复杂性及分布式事务。
- 接口调整成本高。