1.认识微服务架构
微服务诞生背景
- 互联网行业的快速发展,需求变化快,用户数量变化快
- 敏捷开发深入人心,用最小的代价,做最快的迭代,频繁修改,测试,上线
- 容器技术的成熟,是微服务的技术基础
微服务架构的特点
- 将系统服务层完全独立出来,并将服务层抽取为一个一个的微服务
- 采用一些轻量协议进行传输
- 服务拆分粒度更细,有利于资源重复利用,提高开发效率
- 可以更加精准的制定每个服务的优化方案,提高系统可维护性
- 相比ESB更轻量
什么是微服务
- 使用一套小服务来开发单个应用的方式,每个服务运行在独立的进程里,一般采用轻量级的通讯机制互联,并且它们可以通过自动化的方式部署
微服务的特点 - 单一职责:独立的业务单独放在一个项目里,比如订单服务作为一个项目
- 轻量级通信:http,rpc,非轻量级(例如Java的RMI)
- 隔离性:每个服务相互隔离,不干扰
- 有自己的数据
- 技术多样性
架构
- 单体架构
- 所有功能集成在一个项目中
- 项目整个打包,可以部署到服务器运行
- 应用与数据库可以分开部署,提高性能
- 优点:
· 小项目的首选,开发成本低,架构简单 - 缺点:
· 项目复杂之后,很难有扩展和维护
· 扩展成本高,有瓶颈
· 技术栈受限
- 垂直架构
- 对于单体架构的拆分,大项目拆成单个的项目的架构
- 存在数据冗余
- 项目之间要处理数据同步,通过数据库同步
- 优点:
· 小项目的首选,架构简单
· 避免了单体架构的无限扩大
· 技术不在受限 - 缺点:
· 很多功能放在一个工程中,有一定瓶颈
· 系统性能扩展要通过集群节点扩展,成本较高
- SOA架构(面向服务的架构)
- 将重复性的功能进行抽取,抽取成对应的服务
- 通过 ESB 服务总线去访问
- 优点:
· 提高系统的可重用性
· ESB 减少系统接口耦合问题 - 缺点:
· 系统与服务界限模糊,不利于开发
· ESB 服务接口协议不固定,不利于系统维护
· 抽取粒度较大,仍存有一些耦合性
- 微服务架构
- 将服务层一个一个抽取为微服务
- 遵循单一原则
- 微服务之间采用一些轻量协议传输数据
- 优点:
· 服务拆分粒度非常细,利于开发
· 提高系统可维护性
· 比 ESB 更轻量
· 适用于互联网更新换代快的情况 - 缺点:
· 服务过多,服务治理成本高
· 开发技术要求更高
传统访问方式
微服务架构访问方式