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