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.pswp.cn/news/386617.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/386617.shtml
英文地址,請注明出處:http://en.pswp.cn/news/386617.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Django之form表單組件、cookie與session

---恢復內容開始--- Form表單組件 引例&#xff1a; 先來看一個注冊的例子&#xff0c;全部用的是reg函數來實現的。 views.py文件 def reg(request):errors {username:,password:}if request.method POST:username request.POST.get(username)password request.POST.get(p…

程序員經驗分享:Android高級工程師系列學習路線介紹,面試必備

前言 曾聽過很多人說Android學習很簡單&#xff0c;做個App就上手了&#xff0c;工作機會多&#xff0c;畢業后也比較容易找工作。這種觀點可能是很多Android開發者最開始入行的原因之一。 在工作初期&#xff0c;工作主要是按照業務需求實現App頁面的功能&#xff0c;按照設…

Java實現將文件或者文件夾壓縮成zip

Java實現將文件或者文件夾壓縮成zip 最近碰到個需要下載zip壓縮包的需求&#xff0c;于是我在網上找了下別人寫好的zip工具類。但找了好多篇博客&#xff0c;總是發現有bug。因此就自己來寫了個工具類。 這個工具類的功能為&#xff1a; &#xff08;1&#xff09;可以壓縮文件…

算法題+JVM+自定義View,隔壁都饞哭了

反思 昨晚去北京大望路阿里面試, 產生了嚴重的挫敗感, 羞愧難當. 比不得從大學就有目標有理想, 一直在為目標努力學習技術的同學, 在大學唯一能拿得出手的就是參加了電子設計大賽, 學了點嵌入式的知識. 畢業后開始做android, 說得好聽點叫做項目, 實際上就是搬代碼, 真正記到…

n2n內網穿透打洞部署全過程 + nginx公網端口映射

內網穿透、打洞工具有很多&#xff0c;此前在windows上使用的是vidcc這個玩意&#xff0c;也正因為linux不支持。自此在linux嘗試過一些打洞工具&#xff0c;ssh 反向代理這些&#xff0c;因為安全性不便捷等多種原因&#xff0c;最終選擇了n2n。 由于初次接觸n2n&#xff0c;對…

Windows下快速刪除上萬個文件和子目錄

為什么會慢 如果直接在Windows文件管理器里刪除的話&#xff08;通過菜單或者鍵盤Del或者ShiftDel&#xff09;&#xff0c;刪除這個數量的文件需要大概10幾分鐘&#xff0c;具體根據文件數量目錄層次不同耗時不同。這么慢是因為在刪除之前系統有個準備階段&#xff0c;在這個階…

終于有人把安卓程序員必學知識點全整理出來了,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即可看…

餐廳點餐系統:測試與部署

項目測試與部署 1.系統測試 項目調試完成后&#xff0c;將項目打包成war包放入tomcat/wabapps文件夾&#xff0c;本機啟動tomcat&#xff0c;redis緩存&#xff0c;mysql數據庫等服務&#xff0c;本機訪問localhost&#xff1a;8080/BookFood&#xff0c;測試系統的各個功能是否…

SpringCloud與Seata分布式事務初體驗

在本篇文章中我們在SpringCloud環境下通過使用Seata來模擬用戶購買商品時由于用戶余額不足導致本次訂單提交失敗&#xff0c;來驗證下在MySQL數據庫內事務是否會回滾。 本章文章只涉及所需要測試的服務列表以及Seata配置部分。 用戶提交訂單購買商品大致分為以下幾個步驟&…

想學IT的必看!今年Android面試必問的這些技術面,架構師必備技能

第一次觀看我文章的朋友&#xff0c;可以關注、點贊、轉發一下&#xff0c;每天分享各種干貨技術和程序猿趣事 前言 職場的金三銀四跳槽季又來了&#xff0c;不同的是今年比往年「冷」一些&#xff0c;形式更加嚴峻一些&#xff0c;大家多多少少可能都聽到或看到一些信息&…

springboot集成redis使用redis作為session報錯ClassNotFoundException類RememberMeServices

springboot 集成redis使用redis作為緩存&#xff0c;會報錯的問題。 錯誤信息&#xff1a; java.lang.IllegalStateException: Error processing condition on org.springframework.boot.autoconfigure.task.TaskSchedulingAutoConfiguration.taskSchedulerat org.springframew…

阿里巴巴分布式事務利器Seata環境準備

阿里巴巴自從跟SpringCloud共同發起創建微服務開源社區時&#xff0c;開啟了SpringCloud Alibaba分支&#xff0c;而且在生態內提供了一款適用于分布式應用程序&#xff08;Dubbo、SpringCloud等&#xff09;的事務框架Seata&#xff0c;該框架經過多個大版本的發布&#xff0c…

對于‘敲什么都隊’自主開發的《校園服務》軟件的使用體驗

信1805-1 邊信哲 20183694 在六月十三日我系組織的2017級軟件工程交流大會中&#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…