微服务基础架构概述
公司的系统架构向微服务架构演进,需要建设一套微服务基础架构。
整体逻辑架构如图:
1、基础技术
以spring Boot、Spring Cloud为主体,其他技术为辅设计微服务基础架构。
通讯协议采用Restful。
2、设计原则
服务无状态
单一职责
高内聚低耦合
服务单向调用,避免循环依赖、双向依赖
水平扩展>垂直扩展
3、端口约定
微服务基础架构占用部分端口、新增微服务端口统一分配
4、注册中心
具备高可用性的Eureka符合我们的期望
5、配置中心
携程Apollo:企业生产级,spring cloud实现,开源
6、网关
SCG:性能表现佳
Hystrix:熔断重试
令牌桶:限流降级
7、安全设计
Https:通讯安全
Oauth + JTW :服务访问安全
黑白名单:访问控制
AES:签名认证
8、监控中心
端点监控:Spring acturtor+ spring boot admin
链路监控:sky walking,开源、低侵入
基础设施:zabbix
9、统一日志
可选性较少,采用开源免费的Elastic Stack
10、DEVOPS
精力受限,采用Maven + jenkins简单粗暴的实现。
11、部署环境
公司系统特殊性,微服务需要可能部署在物理机、虚拟机、Docker、阿里云、腾讯云、华为云等多种介质上,微服务设计需要考虑部署环境多样性。
12、非JVM应用
Spring Sidecar进行代理服务注册,支持nodejs,python;
调用eureka的HTTP接口,自主实现服务的注册、心跳、查询功能;
服务调用采用HTTP REST服务,天生支持异构应用;
Apollo提供了Java和.Net的原生客户端,也提供了Http接口,其它应用也可以方便的使用;
13、代码生成
maven插件,命令行执行,最大程度简化开发。