整体方案架构图如下所示:
平台服务
2.1平台基础服务说明
生产环境平台基础服务都需要保证高可用
2.1.1 MySQL数据库
MySQL5.5以上版本 或者 5.5.5-10.3.10-MariaDB
数据库已经按业务领域进行了分库操作,不同的微服务对应独立的Database
2.1.2 MongoDB数据库
版本要求:4.0以上版本
存储一些文档型数据,部分业务有用到
2.1.3 业务Redis服务集群
版本要求:5.0
平台其他业务数据的缓存、分布式ID、 分布式锁相关业务
此服务不需要持久化数据
2.1.4 ElasticSearch集群服务
版本要求:6.4.2
需要额外安装中文分词插件
存储系统日志
存储用户行为日志
存储系统预警信息
存储接口调用信息
2.1.5 Logstash 日志收集服务
版本要求:6.4.2
需要部署至少两个日志收集服务,用以保障服务的可靠性
收集的日志直接存入ES
2.1.6 Kibana 运营可视化服务
版本要求:6.4.2
系统日志检索
用户行为日志分析
接口调用日志分析
运营数据分析
应用埋点信息可视化
商业BI
2.1.7 Git代码仓库服务
用于存储和管理微服务所有配置信息
更新配置信息,及时通知配置中心服务进行服务配置动态更新
2.1.8 RabbitMQ 消息队列服务集群
版本要求:3.X版本
整个微服务集群的健康检查通信
链路追踪数据收集
微服务间消息异步通信
消息总线服务
集群状态更新
2.1.9 Nginx服务器
最新版本
生产环境需要开启HTTPS
提供web前端项目部署配置
2.2 微服务平台基础服务说明
生产环境平台基础服务都需要保证高可用
2.2.1 服务注册中心eureka
简介:采用Spring cloud官方推荐Eureka组件实现,Eureka是Netflix开源的一款提供服务注册和发现的产品,它提供了完整的Service Registry和Service Discovery实现。具有注册中心、负载均衡、故障转移的功能。
生产环境需要部署至少三个节点,保证注册中心自身的高可用
2.2.2 配置中心springcloud-config
简介:采用Spring cloud 的spring-cloud-config组件,我们的外部配置文件集中放置在一个git仓库里,用来管理所有的配置文件,维护的时候需要更改配置时,只需要在本地更改后,推送到远程仓库,所有的服务实例都可以通过config server来获取配置文件,这时每个服务实例就相当于配置服务的客户端config client
生产环境需要部署至少两个节点,保证配置中心的高可用
配置信息缓存
监听配置信息更改
动态通知业务微服务即时根据配置信息的修改进行调整
2.2.3 链路追踪服务 springcloud-sleuth-zipkin
简介:采用Zipkin组件,Zipkin是一个分布式追踪系统。它有助于收集解决微服务架构中延迟问题所需的时序数据。它管理这些数据的收集和查找。
生产环境需要部署至少两个节点,保证数据收集中心的高可用
接口链路追踪数据采用消息总线进行采集,底层依赖于RabbitMQ服务
非生产环境环境默认采用全量收集,线上建议调整采样率小于10%
用于记录请求调用链、调用时长记录
2.2.4 微服务网关 springcloud-zuul
生产环境需要部署至少两个节点,保证接口网关的高可用和负载均衡
配置文件实时更新和机型接入信息更新需要用到消息总线服务,底层依赖于RabbitMQ服务
客户端设备鉴权
用户身份鉴权
会话认证
接口调用请求响应数据统计与监控
限流、降级
灰度发布
2.2.5 分布式事务协调中心 txlcn-tm
简介: 采用txlcn开源框架,TX-LCN定位于一款事务协调性框架,框架其本身并不操作事务,而是基于对事务的协调从而达到事务一致性的效果。
生产环境需要部署至少三个节点,保证高可用
只要各个tm实例的redis、DB配置指向同一地址,则被视为同一个集群
协调跨微服务的应用进行同一事务操作
2.2.6 定时调度控制中心集群 xxl-job-admin
简介: XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。
生产环境需要部署至少三个节点,保证高可用
基于成熟的定时任务作业框架Quartz cron表达式执行定时任务。
提供了可视化管理后台
提供了动态管理定时任务的接口
所有xxl-job-admin服务的mysql地址全指向同一个,即自动视为同一个集群,客户端连接集群时配置的服务端地址间以逗号分隔即可
注意:这个开源工具还是基于springboot1.X版本的,版本有些旧了,目前还没有更新,不过快速集成进平台进行业务开发还挺方便
2.2.7 监控中心服务spring admin
简介:监控所有服务状态,服务关闭可进行邮件报警
生产环境需要部署至少两个节点,保证高可用。
在不同的机器上直接启动服务,自动组成集群
可以监控服务健康状态,如环境变量、配置信息、日志级别控制、线程栈信息、垃圾回收状态、服务负载情况、接口调用情况等等
2.2.8 普罗米修斯监控/报警
简介:监控所有服务状态、机器健康状态,可以配置规则进行报警处理
生产环境需要部署至少两个节点,保证高可用。
一些常用的基础服务可以通过官方提供的exporter进行数据采集
springboot项目均可以直接通过集成promethus依赖,配置需要暴露的端点即可,所以我们的所有springcloud体系内的项目均可以直接接入
2.2.9 Hystrix监控面板及数据聚合(Turbine)
简介:监控服务当前负载情况、接口调用状态,具体内容可以参考下图