微服务定义:所谓微服务,就是一些具有足够小的粒度、能够相互协作且自治的服务体系。
构建微服务架构:涉及服务建模、实现技术、基础设施和研发过程等各个维度。
微服务具有如下特点:
(1)服务组件化
所谓组件是一种可独立替换和升级的软件单元,服务之间利用诸如RPC(RemoteProcedure Call 远程调用)等通信机制完成交互。
(2)按业务能力组织服务
每个服务都围绕着业务进行构建,并且能够被独立的部署到生产或类生产环境。
(3)去中心化
(4)基础设施自动化
微服务架构优势与挑战:
(1)技术优势
微服务提供的是一种高内聚低耦合的组件化方案,使用微服务架构迫使我们利用诸如(Domain Driven Design,DDD)领域驱动设计的思想展开策略设计和技术设计。微服务高度独立,提供了宝贵的技术自由度。
(2)业务组织优势
微服务团队之间只需要进行少量的协调工作,降低研发过程浪费。
微服务面临的挑战:
(1)技术架构挑战
微服务架构带来的独立性可能导致每个服务采用不同的技术体系,如果具有版本关联性的服务很多且版本的更新频率很高,将会面临如何管理版本问题。
(2)研发过程
如何把非功能性需求分解到各个微服务中,把握需求优先级等。
服务标准:
服务无状态、可重用、可发现、自治、松耦合。服务
服务级别:
一级服务具备完善的的容错降级机制对低级别服务的熔断、定期压测、配置高级别的监控报警流程等。
二级服务多采用异步方式进行交互,容忍暂时的数据不一致性
三级服务科随时降级整个服务
服务拆分于集成
服务拆分模式本质上是基于不同的业务进行拆分。拆分步骤上推荐数据库先行,数据模型能否彻底分开,很大程度上决定了微服务的边界能否彻底划清。
服务集成
(1)接口集成
RPC远程调用、REST、消息传递、企业服务总线
(2)数据集成
共享数据库、数据复制等方式
(3)客户端集成
(4)外部集成
微服务架构的关键元素:
服务容错、服务隔离、服务限流、服务降级等。
(1)服务注册中心
微服务都需要通过服务治理实现自动化的注册与发现。
(2)服务的可靠性
对于服务失败,常见的对应策略有超时和重试机制。
微服务框架实现技术选型:
1、技术选选型的参考标准
(1)核心组件的完备性:服务通信,事件驱动、负载均衡、服务路由、API网关和配置中心
事件驱动:表现形式通常是各种消息中间件,如实现JSM规范的ActiveMQ、实现AMQP的RabbitMQ,大数据流式计算领域中引用非常广泛的是Kafka,相对轻量级的选用RabbitMQ。
Dubbo 与 Spring Cloud 功能一览表