MOSS 代替Spring Boot Admin 的服务治理工具

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 AdminMoss
服务画像
服务实例画像☑️
支持单Eureka集群☑️
支持单Consul集群☑️
支持单Nacos集群☑️
支持多Eureka集群,在线动态增加,删除,切换❌️
前端技术VueAnt 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.RELEASE2019.4.21稳定可用版本

1.2.2 Moss开发团队

姓名角色github地址
SoftwareKingOwnerhttps://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,性能指标收集打分
    • 服务评级-自动根据评级规则对服务进行跑批评分打星。

Spring Boot Admin的服务列表

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

服务列表

1.3.2 服务实例画像

服务实例

  • 服务实例画像
  • 实例调用拓扑-对接Skywalking,PinPoint等获取实例调用拓扑 

  • 实例Build信息-实例构建信息 

  • 实例Git提交信息-最后一次提交人的Git详细信息 

  • Spring Cloud使用功能列表

  • 实例的健康信息

  • 实例的上下线Event信息 

  • 服务日志级别-查看应用的日志级别,根据需要调整日志级别打印对应日志级别的信息 

  • 环境配置-查看当前应用的环境配置信息

  • 实例JMX信息-分类展示实例的JMX信息 

  • 查看JVM-实时展示应用实例的内存使用情况,GC次数,以及CPU和内存使用率 

  • 查看日志-增量实时获取应用的info日志或Error日志 

  • 查看线程-查看当前实例的线程情况  

  • 查看实例内部依赖-查看实例的内部Jar依赖情况,统计分析展示依赖拓扑等 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即可,快速接管服务。

me20190410195640.pnguploading.4e448015.gif转存失败重新上传取消多注册中心支持

1.3.5 服务报表数据

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

DashBoard报表数据

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/386617.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

程序员经验分享:Android高级工程师系列学习路线介绍,面试必备

前言 曾听过很多人说Android学习很简单&#xff0c;做个App就上手了&#xff0c;工作机会多&#xff0c;毕业后也比较容易找工作。这种观点可能是很多Android开发者最开始入行的原因之一。 在工作初期&#xff0c;工作主要是按照业务需求实现App页面的功能&#xff0c;按照设…

算法题+JVM+自定义View,隔壁都馋哭了

反思 昨晚去北京大望路阿里面试, 产生了严重的挫败感, 羞愧难当. 比不得从大学就有目标有理想, 一直在为目标努力学习技术的同学, 在大学唯一能拿得出手的就是参加了电子设计大赛, 学了点嵌入式的知识. 毕业后开始做android, 说得好听点叫做项目, 实际上就是搬代码, 真正记到…

终于有人把安卓程序员必学知识点全整理出来了,BAT大厂面试总结

行业激烈变化时&#xff0c;恰恰是机会最多的时候 坦白讲&#xff0c;许多人骨子里害怕变化和竞争。 其实大可不必。 一来&#xff0c;怕也没用嘛。二来&#xff0c;变化越快&#xff0c;组合要素增加了&#xff0c;意味着新的工作机会越多。 就像传统媒体VS新媒体。 放在…

c#反混淆工具de4dot 一般混淆都可以解决

c#反混淆工具de4dot 一般混淆都可以解决 使用方法&#xff1a; 1、CMD 打开 De4Dot 所在文件夹 最好是以管理员身份运行CMD 2、输入 De4Dot C:\Users\muzigaiyu\Desktop\demo.exe 回车 成功后会在软件所在文件夹生成 demo-cleaned.exe 在用dotpeek 或者其他软件打开exe即可看…

想学IT的必看!今年Android面试必问的这些技术面,架构师必备技能

第一次观看我文章的朋友&#xff0c;可以关注、点赞、转发一下&#xff0c;每天分享各种干货技术和程序猿趣事 前言 职场的金三银四跳槽季又来了&#xff0c;不同的是今年比往年「冷」一些&#xff0c;形式更加严峻一些&#xff0c;大家多多少少可能都听到或看到一些信息&…

阿里P7大牛亲自教你!BAT这种大厂履历意味着什么?积累总结

金九银十过后各大网络平台都是各种面经分享&#xff0c;包括已收offer&#xff0c;或面试失败的都有&#xff0c;相信大部分人都拿到了自己心仪的大厂offer&#xff0c;不过也有没有少数没能进到自己内心向往的大厂而懊恼的&#xff0c;那么到底如何才能进大厂&#xff0c;该准…

启动mac版docker自带的k8s

最近准备好好学习下k8s&#xff0c;为了图方便&#xff0c;直接使用docker集成的k8s&#xff0c;但是网上找了一些教程但都没能一次性成功&#xff0c;只好自己从头跑一遍&#xff0c;顺手写个教程可以方便有类似需求的同学参考。 话不多说&#xff0c;直接上步骤。 1.下载doc…

yum安装mysql

在CentOS7中默认安装有MariaDB&#xff0c;这个是MySQL的分支&#xff0c;但为了需要&#xff0c;还是要在系统中安装MySQL&#xff0c;而且安装完成之后可以直接覆盖掉MariaDB。 1. 下载并安装MySQL官方的 Yum Repository 1[rootBrianZhu /]# wget -i -c http://dev.mysql.com…

springboot很多以来jar包是在外部当时候,如何打dockerfile到阿里云

首先保证springboot与各种jar包文件夹在同一目录 dockerfile如下内容 FROM frolvlad/alpine-oraclejdk8 VOLUME /usr/cloud ADD lib /lib/ ADD lib_attachment /lib_attachment/ ADD lib_bigdata /lib_bigdata/ ADD lib_bpm /lib_bpm/ ADD lib_deploy /lib_deploy/ ADD lib_el…

阿里P7大牛手把手教你!一眼就能看懂的Android自学手册,真香!

前言 曾听过很多人说Android学习很简单&#xff0c;做个App就上手了&#xff0c;工作机会多&#xff0c;毕业后也比较容易找工作。这种观点可能是很多Android开发者最开始入行的原因之一。 在工作初期&#xff0c;工作主要是按照业务需求实现App页面的功能&#xff0c;按照设…

【VScode】使用VScode 来写markdown时序图

准备工作在VScode中下载插件Markdown Preview Enhanced插件创建一个.md文件在VScode中打开文件&#xff0c;界面内点击右键可以看到Open preview to the side(还有很多方法外面都能搜到)&#xff0c;可以进行实时预览效果开始markdown第一行主标题&#xff08;次标题依次加#&am…

大项目之网上书城(八)——数据库大改添加图书

目录 大项目之网上书城&#xff08;八&#xff09;——数据库大改&添加图书主要改动1.数据库新增表代码2.数据库新增触发器3.其他对BookService和BookDao的修改代码4.addBook.jsp代码效果图5.AddNewBookServlet代码大项目之网上书城&#xff08;八&#xff09;——数据库大…

hping3工具DOS攻击实验

需要两台机器&#xff0c;一台扮演攻击源&#xff0c;另一做目标源。 攻击源地址:10.0.40.4 被攻击机器地址:10.0.40.246 2 被攻击的机器上安装tcpdump&#xff0c;tcpdump主要是用来抓包的&#xff0c;看看网络数据包是否到达。 $ yum install tcpdump -y 3 首先开启tcp…

腾讯T2亲自讲解!搞懂开源框架设计思想真的这么重要吗?系列篇

Java相关 无论什么级别的Android从业者&#xff0c;Java作为Android开发基础语言。不管是工作还是面试中&#xff0c;Java都是必考题。如果不懂Java的话&#xff0c;薪酬会非常吃亏&#xff08;美团尤为重视Java基础&#xff09; 详细介绍了Java泛型、注解、并发编程、数据传…

阿里P7亲自教你!我的头条面试经历分享,完整PDF

前言 转眼间&#xff0c;2020 年已过去一大半了&#xff0c;2020 年很难&#xff0c;各企业裁员的消息蛮多的&#xff0c;降职&#xff0c;不发年终奖等等。2020 年确实是艰难的一年。然而生活总是要继续&#xff0c;时间不给你丧的机会&#xff01;如果我们能坚持下来&#x…

Java多线程 ——线程基础和锁锁锁

Java多线程(一) 一、线程的定义二、Synchronize线程同步三、偏向锁、自旋锁、重量级锁四、volatile关键字 4.1.普通变量运算的物理意义4.2.有无解决的方案4.3.volatile的几个特性&#xff08;参考https://www.cnblogs.com/kubidemanong/p/9505944.html&#xff09;五、Compare …

阿里P7级别面试经验总结,进阶学习资料!

一、前言 本人面试已经很久之前了&#xff0c;分享一下我做美团面试官的经历吧。 美团上海面试&#xff0c;2-1及以下美团是不社招的&#xff0c;校招和2-2~2-3社招一般是三面&#xff0c;格外优秀3-1及以上会加签面试。初面技术基础&#xff0c;二面业务感知和技术项目&#…

阿里P8大牛亲自教你!史上最全的Android面试题集锦,这原因我服了

一、架构师专题 想要掌握复杂的技术&#xff0c;必须要理解其原理和架构。本模块结合实际一线互联网大型项目理解架构思维&#xff0c;抽丝剥茧&#xff0c;层层深入&#xff0c;帮助大家成为Android架构师&#xff0c;在思想上对架构认识有一次升华&#xff0c;并知其所以然&a…

面向对象程序设计——UML分析和本学期总结

​ 随着第四单元UML第二次作业的结束&#xff0c;本学期的OO学习也宣告结束了&#xff08;但还得写博客&#xff09;&#xff0c;下面就对本单元和本次作业做一个总结。 第四单元两次作业的架构设计 ​ 本单元是对UML的结构进行解析&#xff0c;第一次作业是对UML类图的解析&am…

docker linux k8s kubeadm

一. 安装docker 1.添加yum国内依赖 yum -y install yum-utils yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo2.安装docker yum -y install docker-ce docker-ce-cli containerd.io3.启动docker systemctl start docker4…