我们从0到1设计开发了国信微服务架构,他是一个完整的,从前到后的架构。我们希望逐步分享出来,后续也会将此架构开源。
设计原则是:
1、配置依赖最小化;
2、开发速度最大化;
3、环境部署最简化;
RPC
选用grpc,因为grpc有以下几个优势:
1、多语言支持;
2、社区活跃,生命力强,七月份发布1.5版本;
3、支持ios、Android,支持SSL和自定义鉴权(支持国密),可以简单实现客户端到后台的多路复用、rpc调用;
4、只有通信层依赖于grpc,所以容易替换;
5、grpc使用pb协议,此协议在互联网上广泛使用,生命力强;
6、支持流stream,在流的基础上实现了Server Push,方便做变更通知,不再需要客户端做费力的Long Pull;
微服务架构组件说明:
服务注册发现
方案基于进程内LB方案,结合分布式一致的组件etcd3,进行设计开发,具备以下功能:
1、服务自动注册;
2、服务自动发现;
3、负载均衡;
4、注册中心异常保护;
5、异常通报下发;
6、服务降级;
服务中心
可视化服务管理平台,展示服务信息,包含功能如下:
1、server展示,包括ip地址、端口号、应用名称、接口名称;
2、api展示,显示proto文件内容;
3、api测试;
4、服务监控展示;
5、服务依赖动态图展示;
API网关
api网关基于vert.x实现,后期考虑采用原生netty进行升级:
1、由统一的入口来调用微服务的API;
2、API鉴权;
3、反向代理、数据剪裁、数据聚合;
4、流量控制;
5、监控报警;
6、TCP、HTTP等多协议支持;
开发框架
基于springboot进行业务开发:
1、权限管理,服务接口授权;
2、服务端流量控制;
3、业务线程池管理;
4、调用端和服务端TCP连接数管理;
5、服务过载快速失败;
6、TCP心跳保活;
7、调用链分析埋点;
8、超时管理;
9、泛化调用;
监控
参考Prometheus搭建监控中心,具有以下功能:
1、服务流量上报;
2、服务访问ip上报;
3、服务平均耗时情况上报;
4、异常上报;
5、日志收集服务;
6、调用链埋点;
配置中心
对配置信息进行统一管理,可做到一次打包,各个环境都可使用,具有以下功能:
1、资源类配置与业务类配置分离;
2、作用域分离(分为四大作用域:GLOBAL、IDC、SET、NODE);
3、配置中心异常容错;
网友评论