Moss-让Spring Cloud应用“不再流浪”

× 文章目录
  1. 1.什么是Moss
    1. 1.1 什么是服务治理
    2. 1.2 Moss概述
    3. 1.3 Moss的功能
      1. 1.3.1 服务画像
      2. 1.3.2 服务实例画像
      3. 1.3.3 服务纳管
      4. 1.3.4 多注册中心支持
      5. 1.3.5 服务报表数据
  2. 2.Moss的架构设计
    1. 2.1 Moss的架构设计
    2. 2.2 Moss的服务设计
    3. 2.3 Moss的客户端设计
      1. 2.3.1 Moss-Client
  3. 3.Moss的实现细节

摘要: 本文介绍了什么是Moss以及Moss的功能包括服务画像,服务实例画像,服务上下线事件记录,服务上下线websocket消息通知,针对生产应用可配置多种服务上线通知工具,支持多种注册中心,比如Eureka,Consul,Nacos.支持动态连接注册中心进去切换进行服务治理操作。

1.什么是Moss

1.1 什么是服务治理

服务治理,我也称之为微服务治理,是指用来管理微服务的整个生命周期。包括应用的创建,服务名的规范,服务的上下线,服务的迁移,整个服务的生老病死等方方面面的治理。

1.2 Moss概述

Moss(莫斯)是服务治理平台的代号,取名灵感来自电影《流浪地球》中的莫斯(Moss),Moss是电影《流浪地球》中领航员号空间站的人工智能机器人-负责管理空间站所有事务以及流浪地球的计划,而Moss跟Boos一样,是所有微服务的老板,Moss首字母M取Micro Service中Micro的首字母。所有微服务的生命周期将归其统管。

为什么会出现Moss?因为基于Spring Cloud的微服务体系,缺乏统一的可视化的纳管治理平台

Spring Cloud中国社区从2017年11月份,开始规划Spring Cloud Admin的开发和设计,专注于研究这个领域。Moss将会选择一个合适的时机开源,需要更多了解的可以加我微信Software_King。

1.3 Moss的功能

Moss的功能包括服务画像,服务实例画像,服务上下线事件记录,服务上下线websocket消息通知,针对生产应用可配置多种服务上线通知工具,支持多种注册中心,比如Eureka,Consul,Nacos.支持动态连接注册中心进去切换进行服务治理操作。

1.3.1 服务画像

  • 服务画像:
    • 服务概要信息-包括服务实例数,UP数,DOWN数,OffLine数,服务归属的项目,归属的Owner等
    • 服务健康指标-展示服务的健康信息
    • 服务请求映射-展示出服务对外提供的所有REST接口
    • 服务调用链-展示服务的依赖调用拓扑
    • 服务API监控-通过http trace和全链路监控对API进行监控
    • 服务内部组件状态-内部组件的依赖,使用版本状态
    • 服务性能指标-对服务进行QPS,性能指标收集打分
    • 服务评级-自动根据评级规则对服务进行跑批评分打星。

1.3.2 服务实例画像

  • 服务实例画像
    • 实例调用拓扑-对接Skywalking,PinPoint等获取实例调用拓扑
    • 实例Build信息-实例构建信息
    • 实例Git提交信息-最后一次提交人的Git详细信息
    • Spring Cloud使用功能列表
    • 实例的健康信息
    • 实例的上下线Event信息
    • 服务日志级别-查看应用的日志级别,根据需要调整日志级别打印对应日志级别的信息
    • 环境配置-查看当前应用的环境配置信息
    • 实例JMX信息-分类展示实例的JMX信息
    • 查看JVM-实时展示应用实例的内存使用情况,GC次数,以及CPU和内存使用率
    • 查看日志-实时获取应用的info日志或Error日志
    • 查看线程-查看当前实例的线程情况
    • 查看实例内部依赖-查看实例的内部Jar依赖情况,统计分析展示依赖拓扑等
    • HttpTrace-按时间展示http请求的轨迹信息,包括请求的路径,Response的状态,调用耗时等
    • 支持GC Log日志查看

1.3.3 服务纳管

项目对应多个应用,每个应用由多个实例组成提供具体的服务,服务的生命周期管理需要可控,可追溯,可监控,可规范。
由Spring Cloud体系构建的微服务体系,应用名即服务名。服务纳管分为历史应用纳管和新应用纳管。

  • 新应用纳管: 新应用使用Moss-Client,启动时连接Moss对应用名进行统一拦截check,从而规范应用名。
  • 旧应用纳管: 旧应用引入对应的版本的Moss-Client,在Moss平台对其手动接入管理,录入应用名。

1.3.4 多注册中心支持

Moss通过注册中心接管Spring Cloud体系的微服务。支持动态连接注册中心,填注册中心的URL即可,快速接管服务。

1.3.5 服务报表数据

Moss通过注册中心接管Spring Cloud体系的微服务。然后获取每个服务使用Spring Boot的版本和Spring Cloud的版本,Moss的接入率以报表数据展示。

2.Moss的架构设计

2.1 Moss的架构设计

Moss基于Spring Boot Admin 2.1.2版中的spring-boot-admin-server模块二次开发,基于可扩展思想。前端采用Ant Design Pro,采用Spring Boot+shiro+JWT+LDAP实现整个权限认证管理。通过Moss-Cloud-Adapter模块支持多注册中心,应用启动对应用名进行check是否规范。

实现细节后续补充

2.2 Moss的服务设计

Moss服务端主要自动探测EndPoint,代理EndPoint,对接各种注册中心,提供可视化的管理。

2.3 Moss的客户端设计

moss客户端主要用于内置预设自研端点和管理配置信息,使接入方无感知接入。

实现细节后续补充

2.3.1 Moss-Client

Moss客户端支持两种Spring Boot版本,分别是Spring Boot 1.5.X和Spring Boot 2.X,使用只需引入moss-client-starter即可。示例2.x的客户端如下所示。

1.引入moss-client-starter

1
2
3
4
5
<dependency>
<groupId>org.xujin.moss</groupId>
<artifactId>moss-client-2.x</artifactId>
<version>1.0.0.RELEASE</version>
</dependency>

2.在application.yml中增加配置如下

1
2
3
info.groupId: @project.groupId@
info.artifactId: @project.artifactId@
info.version: @project.version@

3.在pom中增加maven插件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<plugin>
<groupId>pl.project13.maven</groupId>
<artifactId>git-commit-id-plugin</artifactId>
<version>2.1.15</version>
<executions>
<execution>
<goals>
<goal>revision</goal>
</goals>
</execution>
</executions>
<configuration>
<dotGitDirectory>${project.basedir}/.git</dotGitDirectory>
</configuration>
</plugin>

3.Moss的实现细节

关于Moss的实现细节,后续文章进行揭秘!敬请期待。

  • Moss Client如何内置预设Spring Boot的Management信息
  • Moss client如何兼容Spring Boot 1.5.X和Spring Boot 2.x的Metrics信息
  • Moss client如何解决运维访问管理端口Health端点不需要前缀,而Moss治理需要带/actuator前缀
  • Moss服务端的选型设计和扩展
  • Moss的动态连接注册中心,支持多种注册中心的
  • @RestControllerEndpoint与@Endpoint端点写法引起的坑
  • 等等~~~~~
如果您觉得文章不错,可以打赏我喝一杯咖啡!