javascript
MOSS 代替Spring Boot Admin 的服务治理工具
1.1 什么是服務(wù)治理
服務(wù)治理,我也稱之為微服務(wù)治理,是指用來管理微服務(wù)的整個(gè)生命周期。包括應(yīng)用的創(chuàng)建,服務(wù)名的規(guī)范,服務(wù)的上下線,服務(wù)的遷移,整個(gè)服務(wù)的生老病死等方方面面的治理。
1.2 Moss概述
Moss(莫斯)是服務(wù)治理平臺(tái)的代號(hào),取名靈感來自電影《流浪地球》中的莫斯(Moss),Moss是電影《流浪地球》中領(lǐng)航員號(hào)空間站的人工智能機(jī)器人-負(fù)責(zé)管理空間站所有事務(wù)以及流浪地球的計(jì)劃,而Moss跟Boss一樣,是所有微服務(wù)的老板,所有微服務(wù)的生命周期將歸其統(tǒng)管。
為什么會(huì)出現(xiàn)Moss?因?yàn)榛赟pring Cloud的微服務(wù)體系,缺乏統(tǒng)一的可視化的納管治理平臺(tái)。
Spring Cloud中國社區(qū)從2017年11月份,開始規(guī)劃Spring Cloud Admin的開發(fā)和設(shè)計(jì),專注于研究這個(gè)領(lǐng)域。Moss將會(huì)選擇一個(gè)合適的時(shí)機(jī)開源,需要更多了解的可以加我微信Software_King。
1.2.1 競品分析
Moss的競品分析對(duì)比如下表所示:
| 服務(wù)畫像 | ? | ? |
| 服務(wù)實(shí)例畫像 | ?? | ? |
| 支持單Eureka集群 | ?? | ? |
| 支持單Consul集群 | ?? | ? |
| 支持單Nacos集群 | ?? | ? |
| 支持多Eureka集群,在線動(dòng)態(tài)增加,刪除,切換 | ?? | ? |
| 前端技術(shù) | Vue | Ant Design Pro |
| 支持Spring Boot 1.5.X和Spring Boot 2.0.X | ?? | ? |
| 服務(wù)調(diào)用拓?fù)?/strong> | ? | ? |
| 在線查看Jar依賴 | ? | ? |
| 服務(wù)歸屬(項(xiàng)目,Owner) | ? | ? |
| 服務(wù)和實(shí)例支持模糊查詢 | ? | ? |
| 服務(wù)閃爍告警 | ? | ? |
| 服務(wù)評(píng)分打星 | ? | ? |
| 服務(wù)列表畫像 | ? | ? |
| 服務(wù)實(shí)例列表畫像 | ? | ? |
| 服務(wù)實(shí)例內(nèi)部組件列表,使用哪些Spring Cloud組件 | ? | ? |
其中????表示功能相對(duì)較弱???表示功能完整強(qiáng)大???表示功能缺失
1.2.1 Moss RoadMap
Roadmap 時(shí)間點(diǎn):
??表示當(dāng)前穩(wěn)定可用版本
| ??1.0.0.RELEASE | 2019.4.21 | 穩(wěn)定可用版本 |
1.2.2 Moss開發(fā)團(tuán)隊(duì)
| SoftwareKing | Owner | https://github.com/SoftwareKing |
| iShawnWang | 前端開發(fā) | https://github.com/iShawnWang |
| homeant | 前后臺(tái)開發(fā) | https://github.com/homeant |
| VancySavoki | 后端開發(fā) | https://github.com/VancySavoki |
1.3 Moss的功能
- Moss的功能包括服務(wù)畫像,服務(wù)實(shí)例畫像,服務(wù)上下線事件記錄,服務(wù)上下線websocket消息通知,針對(duì)生產(chǎn)應(yīng)用可配置多種服務(wù)上線通知工具,支持多種注冊(cè)中心,比如Eureka,Consul,Nacos.支持動(dòng)態(tài)連接注冊(cè)中心進(jìn)去切換進(jìn)行服務(wù)治理操作。
1.3.1 服務(wù)畫像
-
服務(wù)畫像:
- 服務(wù)概要信息-包括服務(wù)實(shí)例數(shù),UP數(shù),DOWN數(shù),OffLine數(shù),服務(wù)歸屬的項(xiàng)目,歸屬的Owner等。
- 服務(wù)健康指標(biāo)-展示服務(wù)的健康信息
- 服務(wù)請(qǐng)求映射-展示出服務(wù)對(duì)外提供的所有REST接口
- 服務(wù)調(diào)用鏈-展示服務(wù)的依賴調(diào)用拓?fù)?/li>
- 服務(wù)API監(jiān)控-通過http trace和全鏈路監(jiān)控對(duì)API進(jìn)行監(jiān)控
- 服務(wù)內(nèi)部組件狀態(tài)-內(nèi)部組件的依賴,使用版本狀態(tài)
- 服務(wù)性能指標(biāo)-對(duì)服務(wù)進(jìn)行QPS,性能指標(biāo)收集打分
- 服務(wù)評(píng)級(jí)-自動(dòng)根據(jù)評(píng)級(jí)規(guī)則對(duì)服務(wù)進(jìn)行跑批評(píng)分打星。
PS: Spring Boot Admin服務(wù)墻,如上圖所示,看完之后誰能告訴我,它的服務(wù)畫像能畫出什么來。 Moss的服務(wù)畫像列表如下所示,對(duì)比顯而易見!
1.3.2 服務(wù)實(shí)例畫像
- 服務(wù)實(shí)例畫像
-
實(shí)例調(diào)用拓?fù)?對(duì)接Skywalking,PinPoint等獲取實(shí)例調(diào)用拓?fù)?
-
實(shí)例Build信息-實(shí)例構(gòu)建信息?
-
實(shí)例Git提交信息-最后一次提交人的Git詳細(xì)信息?
-
Spring Cloud使用功能列表
-
實(shí)例的健康信息
-
實(shí)例的上下線Event信息?
-
服務(wù)日志級(jí)別-查看應(yīng)用的日志級(jí)別,根據(jù)需要調(diào)整日志級(jí)別打印對(duì)應(yīng)日志級(jí)別的信息?
-
環(huán)境配置-查看當(dāng)前應(yīng)用的環(huán)境配置信息
-
實(shí)例JMX信息-分類展示實(shí)例的JMX信息?
-
查看JVM-實(shí)時(shí)展示應(yīng)用實(shí)例的內(nèi)存使用情況,GC次數(shù),以及CPU和內(nèi)存使用率?
-
查看日志-增量實(shí)時(shí)獲取應(yīng)用的info日志或Error日志?
-
查看線程-查看當(dāng)前實(shí)例的線程情況??
-
查看實(shí)例內(nèi)部依賴-查看實(shí)例的內(nèi)部Jar依賴情況,統(tǒng)計(jì)分析展示依賴拓?fù)涞?
-
HttpTrace-按時(shí)間展示http請(qǐng)求的軌跡信息,包括請(qǐng)求的路徑,Response的狀態(tài),調(diào)用耗時(shí)等?
- 支持GC Log日志查看?
1.3.3 服務(wù)納管
項(xiàng)目對(duì)應(yīng)多個(gè)應(yīng)用,每個(gè)應(yīng)用由多個(gè)實(shí)例組成提供具體的服務(wù),服務(wù)的生命周期管理需要可控,可追溯,可監(jiān)控,可規(guī)范。 由Spring Cloud體系構(gòu)建的微服務(wù)體系,應(yīng)用名即服務(wù)名。服務(wù)納管分為歷史應(yīng)用納管和新應(yīng)用納管。
- 新應(yīng)用納管: 新應(yīng)用使用Moss-Client,啟動(dòng)時(shí)連接Moss對(duì)應(yīng)用名進(jìn)行統(tǒng)一攔截check,從而規(guī)范應(yīng)用名。
- 舊應(yīng)用納管: 舊應(yīng)用引入對(duì)應(yīng)的版本的Moss-Client,在Moss平臺(tái)對(duì)其手動(dòng)接入管理,錄入應(yīng)用名。
1.3.4 多注冊(cè)中心支持
Moss通過注冊(cè)中心接管Spring Cloud體系的微服務(wù)。支持動(dòng)態(tài)連接注冊(cè)中心,填注冊(cè)中心的URL即可,快速接管服務(wù)。
轉(zhuǎn)存失敗重新上傳取消
1.3.5 服務(wù)報(bào)表數(shù)據(jù)
Moss通過注冊(cè)中心接管Spring Cloud體系的微服務(wù)。然后獲取每個(gè)服務(wù)使用Spring Boot的版本和Spring Cloud的版本,Moss的接入率以報(bào)表數(shù)據(jù)展示。
1.3.6 事件日志
1.3.7 元數(shù)據(jù)管理
1.3.9 Spring Cloud組件使用情況
2.Moss的架構(gòu)設(shè)計(jì)
2.1 Moss的架構(gòu)設(shè)計(jì)
Moss基于Spring Boot Admin 2.1.3版中的spring-boot-admin-server模塊二次開發(fā),基于可擴(kuò)展思想。前端采用Ant Design Pro,采用Spring Boot+shiro+JWT+LDAP實(shí)現(xiàn)整個(gè)權(quán)限認(rèn)證管理。通過Moss-Cloud-Adapter模塊支持多注冊(cè)中心,應(yīng)用啟動(dòng)對(duì)應(yīng)用名進(jìn)行check是否規(guī)范。
實(shí)現(xiàn)細(xì)節(jié)后續(xù)補(bǔ)充
2.2 Moss的服務(wù)設(shè)計(jì)
Moss服務(wù)端主要自動(dòng)探測EndPoint,代理EndPoint,對(duì)接各種注冊(cè)中心,提供可視化的管理。
2.3 Moss的客戶端設(shè)計(jì)
moss客戶端主要用于內(nèi)置預(yù)設(shè)自研端點(diǎn)和管理配置信息,使接入方無感知接入。
實(shí)現(xiàn)細(xì)節(jié)后續(xù)補(bǔ)充
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 導(dǎo)入IDE運(yùn)行
- 用戶名 - xujin
- 密碼 - 123456
2.3.3 docker鏡像運(yùn)行
1.根目錄安裝各個(gè)依賴?mvn install -Dmaven.test.skip=true
2.根目錄進(jìn)入moss-web目錄 docker鏡像打包:?cd moss-web && mvn package && mvn docker:build
3.根目錄進(jìn)入docker-compose啟動(dòng)?cd docker-compose && docker-compose -f docker-compose.yml up
3.Moss的實(shí)現(xiàn)細(xì)節(jié)
關(guān)于Moss的實(shí)現(xiàn)細(xì)節(jié),后續(xù)文章進(jìn)行揭秘!敬請(qǐng)期待。
- Moss Client如何內(nèi)置預(yù)設(shè)Spring Boot的Management信息
- Moss client如何兼容Spring Boot 1.5.X和Spring Boot 2.x的Metrics信息
- Moss client如何解決運(yùn)維訪問管理端口Health端點(diǎn)不需要前綴,而Moss治理需要帶/actuator前綴
- Moss服務(wù)端的選型設(shè)計(jì)和擴(kuò)展
- Moss的動(dòng)態(tài)連接注冊(cè)中心,支持多種注冊(cè)中心的
- @RestControllerEndpoint與@Endpoint端點(diǎn)寫法引起的坑
- 注冊(cè)到Eureka上的應(yīng)用名為大寫,而注冊(cè)到Nacos上的應(yīng)用名為小寫,Moss需要忽略大小寫匹配
- 等等~~~~~~~~~~~~~
4 GC日志路徑設(shè)置參考
-Xloggc:${YOUR_WORK_DIR}/logs/${APP_NAME}/gc.log -verbose.gc -XX:+PrintGCDateStamps
logging:registry:files:- name: gclogpath: logs/${spring.application.name}/gc.log4.1 切換支持注冊(cè)中心
默認(rèn)的注冊(cè)注冊(cè)中心是 eureka,如果希望切換到其他注冊(cè)中心,如 ZooKeeper, 可以通過激活 profile 切換注冊(cè)中心。在以下 pom 中已預(yù)設(shè)兩種注冊(cè)中心,使用時(shí)自行切換即可。
- moss-web/pom.xml
- moss-service/pom.xml
- moss-client/moss-sample-2.1.x
- moss-client/moss-sample-1.5.x
總結(jié)
以上是生活随笔為你收集整理的MOSS 代替Spring Boot Admin 的服务治理工具的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Sentinel在订单大量服务调用的应用
- 下一篇: SpringCloud与Seata分布式