微服务主流技术架构

1. 注册中心

主流技术栈:Zookeeper、Eureka、Consul、Nacos

Zookeeper: 多用于Dubbo,leader+follower,leader写同步到follower,follower可以读。CP,leader崩溃的时候,为了保证数据一致性,要重新选举leader以及数据同步,集群可能会短暂不可用;

Eureka: 多用于Spring Cloud NetFlix,peer-to-peer,每个节点都能读都能写,异步复制。AP,不同的节点可能读到的数据不一样,任何节点宕机,其他节点正常工作;

Consul: 多用于Spring Cloud,基于raft算法的CP模型;

Nacos(推荐): 用于Spring Cloud Alibaba,支持CP和AP。功能最为完善,包括了雪崩保护、自动注销实例、坚挺支持、多数据中心、跨注册中心同步、Spring Cloud集成、Dubbo集成、k8s集成。

 

2. RPC框架

主流技术栈:Feign+Ribbon、Dubbo、gRPC

Feign+Ribbon: Spring Cloud NetFlix技术栈,轻量级框架,基于Spring MVC写的controller暴露出的http接口,本质是发送http请求给Tomcat,tomcat收到解析这个http请求,交给Spring MVC写的controller来处理;

Dubbo: 自定义协议,组装请求、序列化,重量级框架;

gRPC: 跨语言通信,要生成代码;

 

3.  微服务开发完整流程

1)系统设计(概要设计、详细设计/简化设计)

概要设计:业务架构、技术架构、业务流程、技术方案、部署方案;

详细设计:接口定义、数据库表结构、核心类建模(领域设计)、各个接口被请求时的系统运行时序图、技术方案细化;

简化设计:运行流程图、技术方案、接口、表、时序图。

2)开发代码

3)本地自测:单元测试、dev环境自测

4)持续集成

5)联调测试/功能测试:日常环境联调、测试;

6)预发布测试:模拟线上环境,可进行压力测试、全链路压测、性能测试、可用性测试、稳定性测试,线上流量回放;

7)线上部署。

 

4. 部署方案

1)滚动发布:一个服务部署在多台机器上,部署的时候每台机器依次停机tomcat,再重新启动tomcat; 滚动发布风险加大,自动发布完成后出现问题,要全量重新部署,时间较长;

2)灰度发布:上线不是一次性滚动全部发布到所有机器,只部署比如1台机器,切比如10%的流量,观察并运行一段时间,没有问题后进行全量发布;一旦出现问题,只会影响灰度的部分系统和数据;

3)蓝绿发布:灰度发布全量部署以后,仍然有可能出现问题,回滚很慢,此时可以将流量全部立马切回老集群;一般用于大版本的发布。

 


版权声明:本文为QQsilhonette原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。