1-1 微服务
上图是一个比较有代表性的微服务架构图
1-2 软件架构的进化
1-3 什么是微服务
单一职责:只把紧密相关的业务放在一起,无关的业务独立出去
轻量级通信:微服务之间采用轻量级通信机制,即平台无关,语言无关,比如RPC,可以跨语言进行通信
隔离性:每个微服务运行在自己的线程中,不会相互干扰
有自己的数据:即每个微服务都有自己独立的数据存储系统,降低数据结构的复杂度
技术多样性:微服务由开发人员自己选择技术,最后只要能给出相应的API就可以了
1-4 画出微服务架构图
单体架构形式
微服务架构
1-5 微服务架构的优势和不足
优势:
独立性:微服务从项目部署,容错,数据库都是单独管理的,每个服务之间都是相互独立的,只需要管理好自己就可以了,每个服务之间接收的数据访问的体量可能是不同的,
比如登录注册的QPS比如是10,而用户信息服务的QPS可能是100,这样就可以启动2个登录信息服务,启动5个用户信息服务,可以在扩缩容上做的非常精细,减少不必要的资源浪费。在容错上,当一个微服务出现问题时,只会影响到自己,并且可以快速恢复,并不会影响整个的服务提高了整个服务的可用性,每个服务有自己独立的数据库,数据表的多少和结构变得相对简单,数据表也会减少。
敏捷性:对于使用者来说,微服务暴露的接口比较简单,因为她们的功能都很单一,并且有清晰的API,对于使用者来说,理解起来比较容易,同时可以适应页面
变化,比如来了一个新需求的时候,就可以很容易找到需要修改哪个微服务
技术栈灵活:每个微服务都可以有自己的技术栈
高效团队:微服务高效灵活
不足:
额外的工作:需要将业务拆分,如何拆分也需要考虑
数据一致性:每个微服务都有自己的数据库,保证数据一致性有挑战
沟通成本:修改微服务涉及的地方较多,沟通成本相应增大