服务治理,我也称之为微服务治理,是指用来管理微服务的整个生命周期。包括应用的创建,服务名的规范,服务的上下线,服务的迁移,整个服务的生老病死等方方面面的治理。
Moss(莫斯
)是服务治理平台的代号
,取名灵感来自电影《流浪地球》中的莫斯(Moss),Moss是电影《流浪地球》中领航员号空间站的人工智能机器人-负责管理空间站所有事务以及流浪地球的计划,而Moss跟Boss一样,是所有微服务的老板,所有微服务的生命周期将归其统管。
为什么会出现Moss
?因为基于Spring Cloud的微服务体系,缺乏统一的可视化的纳管治理平台
。
Spring Cloud中国社区从2017年11月份,开始规划Spring Cloud Admin的开发和设计,专注于研究这个领域。Moss将会选择一个合适的时机开源,需要更多了解的可以加我微信Software_King。
1.2.1 竞品分析
Moss的竞品分析对比如下表所示:
对比选项 | Spring Boot Admin | Moss |
---|---|---|
服务画像 | ❌ | ✅ |
服务实例画像 | ☑️ | ✅ |
支持单Eureka集群 | ☑️ | ✅ |
支持单Consul集群 | ☑️ | ✅ |
支持单Nacos集群 | ☑️ | ✅ |
支持多Eureka集群,在线动态增加,删除,切换 | ❌️ | ✅ |
前端技术 | Vue | Ant Design Pro |
支持Spring Boot 1.5.X和Spring Boot 2.0.X | ☑️ | ✅ |
服务调用拓扑 | ❌ | ✅ |
在线查看Jar依赖 | ❌ | ✅ |
服务归属(项目,Owner) | ❌ | ✅ |
服务和实例支持模糊查询 | ❌ | ✅ |
服务闪烁告警 | ❌ | ✅ |
服务评分打星 | ❌ | ✅ |
服务列表画像 | ❌ | ✅ |
服务实例列表画像 | ❌ | ✅ |
服务实例内部组件列表,使用哪些Spring Cloud组件 | ❌ | ✅ |
其中 ☑️ 表示功能相对较弱 ✅ 表示功能完整强大 ❌ 表示功能缺失
1.2.1 Moss RoadMap
Roadmap 时间点:
✅ 表示当前稳定可用版本
版本 | Milestone | 主要特性 |
---|---|---|
✅ 1.0.0.RELEASE | 2019.4.21 | 稳定可用版本 |
1.2.2 Moss开发团队
姓名 | 角色 | github地址 |
---|---|---|
SoftwareKing | Owner | https://github.com/SoftwareKing |
iShawnWang | 前端开发 | https://github.com/iShawnWang |
homeant | 前后台开发 | https://github.com/homeant |
VancySavoki | 后端开发 | https://github.com/VancySavoki |
1.3.1 服务画像
服务画像:
包括服务实例数,UP数,DOWN数,OffLine数,服务归属的项目,归属的Owner等
。所有REST接口
对服务进行QPS,性能指标收集打分
PS: Spring Boot Admin服务墙,如上图所示,看完之后谁能告诉我,它的服务画像能画出什么来。 Moss的服务画像列表如下所示,对比显而易见!
1.3.2 服务实例画像
Spring Cloud使用功能列表
实例的健康信息
环境配置-查看当前应用的环境配置信息
1.3.3 服务纳管
项目对应多个应用,每个应用由多个实例组成提供具体的服务,服务的生命周期管理需要可控,可追溯,可监控,可规范。 由Spring Cloud体系构建的微服务体系,应用名即服务名。服务纳管分为历史应用纳管和新应用纳管。
1.3.4 多注册中心支持
Moss通过注册中心接管Spring Cloud体系的微服务。支持动态连接注册中心,填注册中心的URL即可,快速接管服务。
转存失败重新上传取消
1.3.5 服务报表数据
Moss通过注册中心接管Spring Cloud体系的微服务。然后获取每个服务使用Spring Boot的版本和Spring Cloud的版本,Moss的接入率以报表数据展示。
1.3.6 事件日志
1.3.7 元数据管理
1.3.9 Spring Cloud组件使用情况
Moss基于Spring Boot Admin 2.1.3版中的spring-boot-admin-server模块二次开发,基于可扩展思想。前端采用Ant Design Pro,采用Spring Boot+shiro+JWT+LDAP实现整个权限认证管理。通过Moss-Cloud-Adapter模块支持多注册中心,应用启动对应用名进行check是否规范。
实现细节后续补充
Moss服务端主要自动探测EndPoint,代理EndPoint,对接各种注册中心,提供可视化的管理。
moss客户端主要用于内置预设自研端点和管理配置信息,使接入方无感知接入。
实现细节后续补充
2.3.1 Moss-Client
Moss客户端支持两种Spring Boot版本,分别是Spring Boot 1.5.X和Spring Boot 2.X,使用只需引入 moss-client 即可。示例2.x的客户端如下所示。
1.引入 moss-client
org.xujin.moss moss-client-2.x 1.0.0.RELEASE
2.在application.yml中增加配置如下
info.groupId: @project.groupId@ info.artifactId: @project.artifactId@ info.version: @project.version@
3.在pom中增加maven插件
pl.project13.maven git-commit-id-plugin 2.1.15 revision ${project.basedir}/.git
2.3.2 导入IDE运行
spring.profiles.active
的 h2 改为 mysql,并修改 application-mysql 中的连接地址、username/password。2.3.3 docker镜像运行
1.根目录安装各个依赖 mvn install -Dmaven.test.skip=true
2.根目录进入moss-web目录 docker镜像打包: cd moss-web && mvn package && mvn docker:build
3.根目录进入docker-compose启动 cd docker-compose && docker-compose -f docker-compose.yml up
关于Moss的实现细节,后续文章进行揭秘!敬请期待。
-Xloggc:${YOUR_WORK_DIR}/logs/${APP_NAME}/gc.log -verbose.gc -XX:+PrintGCDateStamps
logging: registry: files: - name: gclog path: logs/${spring.application.name}/gc.log
默认的注册注册中心是 eureka,如果希望切换到其他注册中心,如 ZooKeeper, 可以通过激活 profile 切换注册中心。在以下 pom 中已预设两种注册中心,使用时自行切换即可。