微服务的定义
进程中进行,服务之间通过HTTP的RESTful API进行通信协作。被拆分的每一个小型服务都围绕着系统中的某一项或一些耦合度较高的业务功能进行构建,
并且每个服务都维护着自身的数据存储、业务开发、自动化测试案例以及独立部署机制。由于有了轻量级的通信协作基础,所以这些微服务可以使用不同的语言来编写。
微服务的困境:
1、运维的新挑战 需要维护的进程数增加
2、接口的一致性 拆分了服务,但是业务逻辑的依赖不会消除,需要更加完善的接口和版本管理。
3、分布式的复杂性 比如:网络延迟、分布式事务、异步消息
微服务架构的九大特性:
服务组件化:
组件,是一个可以独立更换和升级的单元。就像PC中的CPU、内存、显卡硬盘一样,独立且可以更换升级而不影响其他单元。
按业务组织团队
做产品的态度:
每个小团队都应该以做产品的方式,对其产品的整个生命周期负责。而不是以项目的形式,以完成开发与交付并将成果交接给维护者为最终目标。
智能端点与哑管道
我们需要粗粒度的通信,在微服务架构中通常会使用这两种服务调用方式:
1、使用HTTP的RESTful API或轻量级的消息发送协议,实现消息传递与服务调用的触发
2、通过轻量级消息总线上传递消息,类似RabbitMQ等一些提供可靠异步交换的中间件
去中心化治理
在采用集中化的架构治理方案时,通常在技术平台上都会制定统一的标准,但是每种技术都有自己的短板,并且可能因为系统底层原因解决得不是很好,最终成为系统的瓶颈。
在实施微服务时,通过采用轻量级的契约定义接口,使得我们对于服务本身的具体技术平台不再那么敏感,这样整个微服务架构系统中的各个组件就能针对其不同的业务特点选择不同的技术平台。
去中心化管理数据
在实施微服务架构时,都希望让每一个服务来管理其自有的数据库,这就是数据管理的去中心化。
由于数据存储在不同的数据库实例中,数据一致性也成为微服务亟待解决的问题之一。分布式事务本身实现难度极大,所以在微服务架构中,更强调各服务之间进行“无事务”调用,而对于数据一致性,只要求数据在
最后的处理状态是一致的即可;若发生错误,通过补偿机制来进行处理,使得错误数据能够达到最终的一致性。
基础设施自动化
自动化测试、自动化部署
容错设计
演进式设计
以上是 微服务的定义 的全部内容, 来源链接: utcz.com/z/513357.html