1.1 什么是服务治理

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

1.2 Moss概述

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 Moss的功能

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

1.3.1 服务画像

  • 服务画像:

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

PS: Spring Boot Admin服务墙,如上图所示,看完之后谁能告诉我,它的服务画像能画出什么来。 Moss的服务画像列表如下所示,对比显而易见!

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的接入率以报表数据展示。

1.3.6 事件日志

1.3.7 元数据管理

1.3.9 Spring Cloud组件使用情况

2.Moss的架构设计

2.1 Moss的架构设计

Moss基于Spring Boot Admin 2.1.3版中的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 即可。示例2.x的客户端如下所示。

1.引入 moss-client

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

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

info.groupId: @project.groupId@
info.artifactId: @project.artifactId@
info.version: @project.version@

3.在pom中增加maven插件

<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>

2.3.2 导入IDE运行

  1. 为方便快速演示,默认内置了 h2 数据库。
  2. 导入 IDEA 运行主程序org.xujin.moss.MossApplication.java
  3. 启动之后访问 http://localhost:8086/
  • 用户名 - xujin
  • 密码 - 123456
  1. 如需修改后端数据库,将 moss-web/src/main/resources/config/application.yml 中 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

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端点写法引起的坑
  • 注册到Eureka上的应用名为大写,而注册到Nacos上的应用名为小写,Moss需要忽略大小写匹配
  • 等等~~~~~~~~~~~~~

4 GC日志路径设置参考

-Xloggc:${YOUR_WORK_DIR}/logs/${APP_NAME}/gc.log -verbose.gc -XX:+PrintGCDateStamps

logging:registry:files:- name: gclogpath: logs/${spring.application.name}/gc.log

4.1 切换支持注册中心

默认的注册注册中心是 eureka,如果希望切换到其他注册中心,如 ZooKeeper, 可以通过激活 profile 切换注册中心。在以下 pom 中已预设两种注册中心,使用时自行切换即可。

  • moss-web/pom.xml
  • moss-service/pom.xml
  • moss-client/moss-sample-2.1.x
  • moss-client/moss-sample-1.5.x

MOSS 代替Spring Boot Admin 的服务治理工具相关推荐

  1. Springboot 系列(十七)迅速使用 Spring Boot Admin 监控你的 Spring Boot 程序

    1. Spring Boot Admin 是什么 Spring Boot Admin 是由 codecentric 组织开发的开源项目,使用 Spring Boot Admin 可以管理和监控你的 S ...

  2. Springboot 系列(十七)迅速使用 Spring Boot Admin 监控你的 Spring Boot 程序,支持异常邮件通知

    点赞再看,动力无限.Hello world : ) 微信搜「 程序猿阿朗 」. 本文 Github.com/niumoo/JavaNotes 和 未读代码博客 已经收录,有很多知识点和系列文章. 1. ...

  3. Spring Boot Admin(SBA)

    Spring Boot Admin(SBA)是一个针对Spring Boot的Actuator接口进行UI美化封装的监控工具.他可以返回在列表中浏览所有被监控Spring Boot项目的基本信息比如: ...

  4. SpringCloud(8)微服务监控Spring Boot Admin

    1.简介 Spring Boot Admin 是一个管理和监控Spring Boot 应用程序的开源软件.Spring Boot Admin 分为 Server 端和 Client 端,Spring ...

  5. 一文读懂 Spring Boot、微服务架构和大数据治理三者之间的故事

    微服务架构 微服务的诞生并非偶然,它是在互联网高速发展,技术日新月异的变化以及传统架构无法适应快速变化等多重因素的推动下诞生的产物.互联网时代的产品通常有两类特点:需求变化快和用户群体庞大,在这种情况 ...

  6. Spring Boot Admin:微服务应用监控

    摘要 Spring Boot Admin 可以对SpringBoot应用的各项指标进行监控,可以作为微服务架构中的监控中心来使用,本文将对其用法进行详细介绍. Spring Boot Admin 简介 ...

  7. 一文透析 Spring Boot、微服务架构和大数据治理三者之间的故事

    微服务架构 微服务的诞生并非偶然,它是在互联网高速发展,技术日新月异的变化以及传统架构无法适应快速变化等多重因素的推动下诞生的产物.互联网时代的产品通常有两类特点:需求变化快和用户群体庞大,在这种情况 ...

  8. 《深入理解 Spring Cloud 与微服务构建》第十五章 微服务监控 Spring Boot Admin

    <深入理解 Spring Cloud 与微服务构建>第十五章 微服务监控 Spring Boot Admin 文章目录 <深入理解 Spring Cloud 与微服务构建>第十 ...

  9. Spring Cloud与微服务学习总结(8)——Spring Boot、微服务架构和大数据治理三者之间的故事

    前言 微服务的诞生并非偶然,它是在互联网高速发展,技术日新月异的变化以及传统架构无法适应快速变化等多重因素的推动下诞生的产物.互联网时代的产品通常有两类特点:需求变化快和用户群体庞大,在这种情况下,如 ...

最新文章

  1. tensorflow从入门到放弃(二)
  2. PowerDesigner16建表在SQL SERVER 2008报 对象名 'sysproperties' 无效。
  3. 计算机中减法的实现原理
  4. BJRangeSliderWithProgress
  5. 经典面试题(8):关于逻辑运算符,下面代码运行的结果是什么?
  6. 转:linux下挂载移动硬盘
  7. Cow Roller Coaster
  8. 视频教程-产品原型图设计Axure教程-Axure
  9. linux virbr0是什么意思
  10. 1191 家谱树(拓扑排序)
  11. 大厂软件测试流程完整版
  12. linux 缩小硬盘镜像,缩小qcow2格式kvm虚拟镜像磁盘大小[转]
  13. RabbitMQ预研
  14. 以Edge浏览器为例演示清除浏览器的缓存
  15. 计算机电路基础知识点,《计算机电路基础(1)》课教学经验点滴论文.doc
  16. 科普文章-另一个视角解读计算机编码 修订版
  17. pyqt5 源码 eric 记录
  18. IntelliJ IDEA 15 EAP Adds On-the-Fly Code Duplicates Detection
  19. Android总笔记(未全)
  20. Ubuntu 20.04 live server版安装(详细版)

热门文章

  1. 新唐M031学习笔记(一)定时器基础计数应用
  2. duilib设置滚动条自动滚动到底
  3. php标签嵌入规范,HTML标签嵌套的详细规则
  4. leetcode 69. x 的平方根 思考分析
  5. python函数与模块学习_Python函数与模块学习1
  6. java pdf添加图片水印图片_Java 在PDF中添加文本水印、图片水印
  7. 论ACM ICPC_Ruins He
  8. C语言随机数生成超详解
  9. Linux系统编程(五)时序竞态
  10. C语言中信号函数(signal)的使用