微服务最近几年异常流行起来,很多企业的系统架构从传统架构向分布式架构转型,分布式架构里微服务架构成为主流。结合自己参与的微服务架构改造项目,讲述下个人对微服务架构的理解和心得。
1、微服务架构提出的目的?
微服务是系统架构上的一种设计风格,类似RESTFUL是一种资源访问风格,而不是具体的技术一样。
它的内涵是将一套原本独立的系统拆分多个微型服务,微服务内部高内聚,服务之间低耦合。
服务之间通过基于HTTP的RESTful API进行通信协作。
被拆分的每一个小型服务都围绕着系统中某一项或一些耦合度较高的业务功能进行构建,
而且每个服务的版本独立迭代和演进,服务内部的数据源、构建、TEST和deploy独立开来。
由于服务访问接口采用标准的HTTP通信协议,所有这些微服务可以使用不同的语言来编写,比如Java、nodeJS、GO等。
2、微服务的优点和缺点:
优点:业务代码耦合度降低、每个服务独立部署、每个服务独立运行在自己的进程环境里、系统扩展性强、能快速响应高并发的扩容
缺点:运维挑战大、接口的协议一致性、需做好容错机制、需要完善的服务监控能力
3、微服务架构的核心思想:
运维职能转变:技术运维转技术运营
团队管理:按服务划分团队和按服务考核团队KPI
独立演进:服务各自演进和迭代,其中开发、编译、部署、测试、发布,有独立流程、独立版本、接口契约化,进程隔离
服务无状态:stateless service,无状态可以方便服务的自动水平扩展
服务自动弹性伸缩
去中心化治理(组件能针对不同的业务特点选择不同的技术平台)
基础设施自动化(自动化测试、自动化部署)
容错降级设计(网络抖动或任意服务节点失效或任意服务节点访问超时均不应该影响正常业务运行)
提高服务复用性:重用、组合已有的服务实现新的业务功能服务