有哪些配置中心的框架
㈠ 闈欒剦閰嶇疆涓蹇冪殑鎽嗚炬湁鍝浜
宸ヤ綔鍙般佹娊椋庢煖銆佽嵂鏌溿佸懠鍚告満銆傞潤鑴夐厤緗涓蹇冩槸閲嶈佺殑鍖葷枟涓蹇冿紝鑰屽伐浣滃彴鏄鏀劇疆闈欒剦娉ㄥ皠鎵闇鐨勫悇縐嶅櫒鏉愬拰鑽鐗╋紝鎶介庢煖鐢ㄤ簬椋庡共娑堟瘨鍚勭嶅尰鐤楃敤錛岃嵂鏌滅敤浜庡瓨鏀鵑潤鑴夋敞灝勫悇縐嶇殑鑽鐗╋紝鍛煎惛鏈烘槸鐢ㄤ簬鐥呬漢鍑虹幇闂棰樿屽懠鍚告墍鐢ㄧ殑鏈哄櫒銆
㈡ java系統架構有哪些apache
java系統架構有一下幾種:
_ava框架 一、Spring框架。 Spring框架是Java後端框架家族中最強大的,擁有IOC和AOP兩大利器,簡化了開發的復雜性。此外,Spring現在可以與所有主流開發框架集成,這是一個通用框架。Spring使Java開發變得簡單。
?2.SpringMVC框架。 它是MVC的開源框架,用來代替Struts,是Spring項目的重要組成部分,可以與SpringIOC容器結合,具有松耦合、配置方便、代碼分離等特點,使Java程序員更容易開發WEB項目。
_SpringBoot框架。 SpringBoot是Spring開源組織下的一個子項目,也是Spring組件的一站式解決方案,主要是為了簡化使用Spring的框架難度。
?
_摹CloudSpring。
_饈且幌盜鋅蚣艿撓行蚣希悄殼白釗讓諾奈⒎窨蚣艿氖籽J紫齲_pringBoot開發的便利性,巧妙地簡化了分布式系統基礎的開發,如服務發現注冊、配置中心、消息匯流排、負載平衡、斷路器、數據監控等。,可以使用SpringBoot的開發風格一鍵啟動和部署。
_濉Netty。 JBOSS提供的開源非同步Netty是基於事件驅動的網路通信框架。能迅速提高開發性能,高可靠性的網路伺服器和客戶端程序,netty簡化了網路應用的編程開發過程,使用開發網路編程變得極其簡單。
_Quartz。 Quartz是一個基於Java廣泛使用的開源任務調度框架。做過定時任務的沒用過這個框架嗎?
?7.jQuery。 JQuery是一個快速簡潔的JavaScript框架,它包裝了JavaScript常用的功能代碼,提供了一種簡單的JavaScript設計模式,極大地簡化了JavaScript編程。
?8.4jLog。 Log4j是Apache的開源日誌框架。通過Log4j,我們可以將程序中的日誌信息輸出到控制台和文件中記錄日誌。Log4j2是最古老的日誌框架,其主流版本是Log4j2。Log4j2是一個重新構建的日誌框架,它拋棄了之前Log4j的不足,吸收了Logback的優秀日誌框架設計。
㈢ SpringCloud寰鏈嶅姟緇勪歡浠嬬粛
Spring Cloud鏄涓緋誨垪妗嗘灦鐨勬湁搴忛泦鍚堬紙妗嗘灦闆嗭級錛屼粬鍒╃敤Spring Boot鐨勫紑鍙戜究鍒╂у閥濡欑殑綆鍖栦簡鍒嗗竷寮忕郴緇熷熀紜璁炬柦鐨勫紑鍙戱紝濡傛湇鍔″彂鐜版敞鍐屻侀厤緗涓蹇冦佹秷鎮鎬葷嚎銆佽礋杞藉潎琛°佹柇璺鍣ㄣ佹暟鎹鐩戞帶絳夈
SpringCloud鍒╃敤SpringBoot鐨勫紑鍙戜究鍒╂у閥濡欏湴綆鍖栦簡鍒嗗竷寮忕郴緇熷熀紜璁炬柦鐨勫紑鍙戱紝SpringCloud涓哄紑鍙戜漢鍛樻彁渚涗簡蹇閫熸瀯寤哄垎甯冨紡緋葷粺鐨勪竴浜涘伐鍏鳳紝鍖呮嫭閰嶇疆綆$悊銆佹湇鍔″彂鐜般佹柇璺鍣ㄣ佽礬鐢便佸井浠g悊銆佷簨浠舵葷嚎銆佸叏灞閿併佸喅絳栫珵閫夈佸垎甯冨紡浼氳瘽絳夌瓑錛屽畠浠閮藉彲浠ョ敤SpringBoot鐨勫紑鍙戦庢牸鍋氬埌涓閿鍚鍔ㄥ拰閮ㄧ講銆
SpringCloud騫舵病鏈夐噸澶嶅埗閫犺疆瀛愶紝瀹冨彧鏄灝嗙洰鍓嶅悇瀹跺叕鍙稿紑鍙戠殑姣旇緝鎴愮啛銆佺粡寰楄搗瀹為檯鑰冮獙鐨勬湇鍔℃嗘灦緇勫悎璧鋒潵錛岄氳繃SpringBoot椋庢牸榪涜屽啀灝佽呭睆钄芥帀浜嗗嶆潅鐨勯厤緗鍜屽疄鐜板師鐞嗭紝鏈緇堢粰寮鍙戣呯暀鍑轟簡涓濂楃畝鍗曟槗鎳傘佹槗閮ㄧ講鍜屾槗緇存姢鐨勫垎甯冨紡緋葷粺寮鍙戝伐鍏峰寘
涓嬮潰鏄瘲pring Cloud鐨勬暣浣撴灦鏋勫浘錛
娉ㄥ唽涓蹇冨彲浠ヨ存槸寰鏈嶅姟鏋舵瀯涓鐨勨滈氳褰曗濓紝浠栬板綍浜嗘湇鍔″拰鏈嶅姟鍦板潃鐨勬槧灝勫叧緋匯傚湪鍒嗗竷寮忔灦鏋勪腑錛屾湇鍔′細娉ㄥ唽鍒拌繖閲岋紝褰撴湇鍔¢渶瑕佽皟鐢ㄥ叾浠栨湇鍔℃椂錛屽氨鍦ㄨ繖閲屾壘鍒板瑰簲鏈嶅姟鐨勫湴鍧錛岃繘琛岃皟鐢ㄣ
娉ㄥ唽涓蹇冪殑涓昏佷綔鐢
Ribbon鏄疦etflix鍙戝竷鐨勪竴涓璐熻澆鍧囪錛屾湁鍔╀簬鎺у埗HTTP鍜孴CP瀹㈡埛絝琛屼負銆傚湪Spring Cloud涓錛孍ureka涓鑸閰嶅悎Ribbon榪涜屼嬌鐢錛孯ibbon鎻愪緵浜嗗㈡埛絝璐熻澆鍧囪鐨勫姛鑳斤紝Ribbon鍒╃敤浠嶦ureka涓璇誨彇鍒扮殑鏈嶅姟淇℃伅錛屽湪璋冪敤鏈嶅姟鑺傜偣鎻愪緵鐨勬湇鍔℃椂錛屼細鍚堢悊鐨勮繘琛岃礋杞姐
鍦⊿pring Cloud涓鍙浠ュ皢娉ㄥ唽涓蹇冨拰Ribbon閰嶅悎浣跨敤錛孯ibbon鑷鍔ㄧ殑浠庢敞鍐屼腑蹇冧腑鑾峰彇鏈嶅姟鎻愪緵鑰呯殑鍒楄〃淇℃伅錛屽苟鍩轟簬鍐呯疆鐨勮礋杞藉潎琛$畻娉曪紝璇鋒眰鏈嶅姟銆
Ribbon鍘熺悊
鍑犵嶈礋杞藉潎琛$瓥鐣ワ細
Hystrix鏄疦etflix寮婧愮殑涓嬈懼歸敊妗嗘灦錛屽寘鍚甯哥敤鐨勫歸敊鏂規硶銆傚湪楂樺苟鍙戣塊棶涓嬶紝緋葷粺鎵渚濊禆鐨勬湇鍔$殑紼沖畾鎬у圭郴緇熺殑褰卞搷闈炲父澶э紝渚濊禆鏈夊緢澶氫笉鍙鎺х殑鍥犵礌錛屾瘮濡傜綉緇滆繛鎺ュ彉鎱錛岃祫婧愮獊鐒剁箒蹇欙紝鏆傛椂涓嶅彲鐢錛屾湇鍔¤劚鏈虹瓑銆侶ystrix鍒╃敤鐔旀柇銆佺嚎紼嬫睜闅旂匯佷俊鍙烽噺闅旂匯侀檷綰у洖閫絳夋柟娉曟潵澶勭悊渚濊禆闅旂伙紝浣跨郴緇熷彉寰楅珮鍙鐢ㄣ
Hystrix涓昏佹彁渚涗簡浠ヤ笅鍑犵嶅歸敊鏂規硶錛
Spring Cloud Gateway鏄瘲pring瀹樻柟鎺ㄥ嚭鐨勬湇鍔$綉鍏崇殑瀹炵幇妗嗘灦錛岀浉瀵逛簬鏈嶅姟緗戝叧鐨勬傚康鏈夌偣綾諱技浜庝紶緇熺殑鍙嶅悜浠g悊鏈嶅姟鍣錛堝俷ginx錛夛紝浣嗗弽鍚戜唬鐞嗕竴鑸閮藉彧鏄鍋氫笟鍔℃棤鍏崇殑杞鍙戣鋒眰錛岃屾湇鍔$綉鍏充笌鏈嶅姟鐨勬暣鍚堢▼搴︽洿楂橈紝鍙浠ョ湅浣滀篃鏄鏁翠釜鏈嶅姟浣撶郴鐨勭粍鎴愰儴鍒嗭紝閫氳繃榪囨護鍣ㄧ瓑緇勪歡鍙浠ュ湪緗戝叧涓闆嗘垚涓浜涗笟鍔″勭悊鐨勬搷浣滐紙姣斿傛潈闄愯よ瘉絳夛級銆
鏍稿績鍔熻兘錛
Spring Cloud Stream鏄涓涓鐢ㄦ潵涓哄井鏈嶅姟搴旂敤鏋勫緩娑堟伅椹卞姩鑳藉姏鐨勬嗘灦銆
鐗圭偣錛
灞忚斀搴曞眰 MQ 瀹炵幇緇嗚妭錛孲pring Cloud Stream 鐨 API 鏄緇熶竴鐨勩傚傛灉浠 Kafka 鍒囧埌 RocketMQ錛屽彲浠ョ洿鎺ヤ慨鏀歸厤緗銆
涓 Spring 鐢熸佹暣鍚堟洿鍔犳柟渚褲係pring Cloud Data Flow鐨勬祦璁$畻閮芥槸鍩轟簬 Spring Cloud Stream錛汼pring Cloud Bus 娑堟伅鎬葷嚎鍐呴儴涔熸槸鐢ㄧ殑 Spring Cloud Stream銆
閰嶇疆涓蹇冨姛鑳斤細
鍒嗗竷寮忛摼璺榪借釜錛屽氨鏄灝嗕竴嬈″垎甯冨紡璇鋒眰榪樺師鎴愯皟鐢ㄩ摼璺錛岃繘琛屾棩蹇楄板綍錛屾ц兘鐩戞帶騫跺皢涓嬈″垎甯冨紡璇鋒眰鐨勮皟鐢ㄦ儏鍐甸泦涓灞曠ず銆傛瘮濡傚悇涓鏈嶅姟鑺傜偣涓婄殑鑰楁椂錛岃鋒眰鍏蜂綋鍒拌揪鍝鍙版満鍣ㄤ笂銆佹瘡涓鏈嶅姟鑺傜偣鐨勮鋒眰鐘舵佺瓑絳夈
鍒嗗竷寮忛摼璺榪借釜鏂規堬細
㈣ 開源推薦-C++開發的微服務框架Tars
Tars致力於建設微服務技術生態,在底層基礎設施、服務框架、上層應用以及DevOps等方面,都做了較為深入的研發。
2020年3月10日,Linux基金會正式宣布旗下的TARS開源項目成立TARS子基金會。這是一個 專注於微服務領域 的開源基金會,致力於幫助企業擁抱微服務體系架構,解決在使用微服務方面可能出現的問題。這是首個 起源於中國開源項目 的國際開源基金會,也是Linux基金會下 唯一聚焦微服務技術生態 的子基金會。
Tars基金會里目前收錄了9個項目,分為5部分:工具集(Tars Lab)、服務治理(Service Governance)、微服務開發框架(Development Framwork)、存儲(DCache)和基礎設施(Infrustructure)。
1、Tars Lab
Tars Lab項目提供了壓力測試TarsJMeter,基準測試集TarsBenchmark和一些開發工具包。TarsJavaStart,可以生成服務端和客戶端的TarsJava腳手架,快速開始Tars服務的開發。TarsTools,是一款支持多種IDE的JetBrains插件,為實現編輯Jce/Tars文件使用的(支持Intellij IDEA、Android Studio、PhpStorm、WebStorm、GoLand、CLion等)。
2、服務治理
服務治理包含了2個項目:TSeer專注於處理服務注冊與發現;TarsGateway是基於Tars框架開發的微服務網關,除具備網關的基礎功能外,還可以自動將HTTP轉換成Tars-RPC協議。
3、微服務開發框架
這部分只包含Tars一個項目,核心模塊由C++開發,提供了多語言開發框架,默認rpc調用,是Tars基金會的核心項目。其他項目都是圍繞這個項目研發的。
4、微服務存儲
這部分只包含DCache一個項目,它是基於Tars框架開發的 分布式共享內存存儲系統 ,支持常用的kv數據結構、支持二級索引、支持在線擴縮容、支持自動持久化到後端db等特性。DCache依賴Tars框架的運行,但也得益於Tars,使得存儲服務的運維成本幾乎為0。
5、微服務基礎設施
這是一個將Tars與K8S融合使用的項目,致力於將Tars融入到K8S生態中。
在這方面還有一個更優秀的項目K8SFramework,致力於將Tars與K8S深度融合,相信未來會納入到基金會中。
| Tars的前世今生
Tars的前身是騰訊內部的TAF框架,已經經過了10年的驗證,穩定運行與1.6w+伺服器,100多個業務線中。
據統計, Tars已在超過 120 家公司、 261200 台伺服器上穩定運行。
在分布式環境下,所有的微服務(包括DCache的服務)都可以通過框架自帶的控制台-TarsWeb進行管理, 可以做到所有服務狀態可監控,可以在控制台上進行啟停、修改配置、執行運維指令等操作。
在分布式部署的情況下,可以通過Web控制台實現一鍵升級、回退。
Tars自帶配置中心,分級配置,可以統一修改配置,做到「一點修改,全局生效」。
在服務部署時,可以在界面上填寫要發布的節點,一鍵部署、擴容。
框架提供了狀態監控的能力,可以監控服務的調用質量,如流量情況,平均耗時、超時率和異常率。
框架狀態可以在控制台上一鍵核查。
Tars提供配套的性能測試工具,這也是Tars基金會的子項目。性能測試工作不再依賴專業的測試人員。
| Tars優勢
1、原生RPC調用
Tars使用自研的RPC協議通信,服務之間建立長連接,在通信頻繁的場景下具備顯著的性能優勢。
2、多語言支持
除C++和Java外,Tars還支持NodeJs,PHP,Go等語言,提供了相應的SDK。當團隊技術棧多樣化時,可以多語言協同開發,無縫對接,開發者可以選擇自己熟悉的語言進行開發,提升團隊整體效率。
在這方面,Spring Cloud想要支持異構語言,需要藉助SideCar構建Service Mesh。 業界現在有一些比較流行的服務網格解決方案,但是 並沒有形成統一的標准 , 可移植性不高 。比較常見的像Istio,由於是代理模式,而且非長連接,會存在 更大的延遲 。另一方面,Istio的部署和運維都非常 復雜 ,需要更多的學習成本和運維成本。
3、內置服務治理功能
Tars框架內嵌了豐富的服務治理功能,包括熔斷、限流、負載均衡、認證、加密等。同時,在服務監控、數據採集,以及灰度部署、跨機房部署等方面,都原生支持,集成度高。
Spring Cloud要支持這些功能,要麼需要集成其他組件,要麼需要設計開發來實現。都需要付出額外的學習成本和研發成本。
4、運維監控
Tars為使用者提供了一體化的運維管理控制台,我們可以在Web上進行一鍵部署、擴容、升級、回退等運維操作。
Spring Cloud並沒有配套的工具。要實現Web管控, 需要藉助K8S和容器,同樣需要付出額外的成本。
5、國產化
Tars是國內公司主導的開源項目,這一點就不多說什麼了。
6、「套裝」優勢
Tars框架提供了微服務相關的一體化解決方案,常規情況下不需要再去集成其他組件,不存在兼容性問題。這就好比MacBook和兼容機的區別,兼容機你可能需要付出更多的試錯成本才能達到想要的效果。
| 劣勢
1、項目熱度
Tars開源較晚,到目前只有5年多時間,項目熱度不如Spring Cloud,應用也沒Spring Cloud廣泛。
2、Tars的雲原生之路
Tars和K8s的深度融合也開源不久(2020年7月,K8SFramework),還有待落地驗證。這個項目現在的更新頻率較高,不建議在生產中使用。但是從這一點也可以看到社區工作者對Tars與K8S融合的高漲熱情,相信未來這個項目一定會大放異彩!
Tars在微服務開發、運維、監控等方面提供了一體化的解決方案,可以幫助我們低成本構建企業級微服務。適用於各種規模的團隊,各種規模的系統。
在做技術選型時,如果團隊中有C++開發人員,或者有多語言開發的情況,而且團隊規模、資源有限的情況下,建議選擇Tars。它在運維、監控、測試等方面會為我們節約大量成本。
未來,隨著 K8SFramework 項目的日漸成熟,相信Tars生態會被更多的團隊熟知和使用。
㈤ 基於Spring+SpringMVC+Mybatis分布式敏捷開發系統架構(附源碼)
前言
zheng項目不僅僅是一個開發架構,而是努力打造一套從 前端模板 - 基礎框架 - 分布式架構 - 開源項目 - 持續集成 - 自動化部署 - 系統監測 - 無縫升級 的全方位J2EE企業級開發解決方案。
項目介紹
基於Spring+SpringMVC+Mybatis分布式敏捷開發系統架構,提供整套公共微服務服務模塊:內容管理、支付中心、用戶管理(包括第三方)、微信平台、存儲系統、配置中心、日誌分析、任務和通知等,支持服務治理、監控和追蹤,努力為中小型企業打造全方位J2EE企業級開發解決方案。
技術
名稱
官網
技術
名稱
官網
架構圖
模塊依賴
Spring+SpringMVC+Mybatis框架集成公共模塊,包括公共配置、MybatisGenerator擴展插件、通用BaseService、工具類等。
基於bootstrap實現的響應式Material Design風格的通用後台管理系統,zheng項目所有後台系統都是使用該模塊界面作為前端展示。
各個子系統前台thymeleaf模板,前端資源模塊,使用nginx代理,實現動靜分離。
本系統是基於RBAC授權和基於用戶授權的細粒度許可權控制通用平台,並提供單點登錄、會話管理和日誌管理。接入的系統可自由定義組織、角色、許可權、資源等。用戶許可權=所擁有角色許可權合集+用戶加許可權-用戶減許可權,優先順序:用戶減許可權>用戶加許可權>角色許可權
文件存儲系統,提供四種方案:
阿里雲OSS
服務網關,對外暴露統一規范的介面和包裝響應結果,包括各個子系統的交互介面、對外開放介面、開發加密介面、介面文檔等服務,可在該模塊支持驗簽、鑒權、路由、限流、監控、容錯、日誌等功能。示例圖:
API網關
內容管理系統:支持多標簽、多類目、強大評論的內容管理,有基本單頁展示,菜單管理,系統設置等功能。
統一掃碼支付
通用用戶管理系統, 實現最常用的用戶注冊、登錄、資料管理、個人中心、第三方登錄等基本需求,支持擴展二次開發。
微信公眾號管理平台,除實現官網後台自動回復、菜單管理、素材管理、用戶管理、消息群發等基礎功能外,還有二維碼推廣、營銷活動、微網站、會員卡、優惠券等。
微信小程序後台
基於Netty實現SocketIO的實時推送系統。支持命名空間、二進制數據、SSL、ACK等功能。
環境搭建
開發指南
maven編譯安裝zheng/pom.xml文件即可
啟動演示
約定優於配置(convention over configuration),此框架約定了很多編程規范,下面一一列舉:
資料庫模型
拓撲圖
㈥ 微服務框架之Spring Cloud簡介
在了解 Spring Cloud 之前先了解一下微服務架構需要考量的核心關鍵點,如下圖:
對於以上等核心關鍵點的處理,不需要我們重復造車輪, Spring Cloud 已經幫我們集成了,它使用 Spring Boot 風格將一些比較成熟的微服務框架組合起來,屏蔽掉了復雜的配置和實現原理,為快速構建微服務架構的應用提供了一套基礎設施工具和開發支持。
Spring Cloud 所提供的核心功能包含:
Spring Cloud架構圖
Spring Cloud子項目
Spring Cloud 旗下的子項目大致可以分為兩類:
如下:
1. Spring Cloud 與 Spring Boot
Spring Boot 可以說是微服務架構的核心技術之一。通過在 Spring Boot 應用中添加 Spring MVC 依賴,就可以快速實現基於 REST 架構的服務介面,並且可以提供對 HTTP 標准動作的支持。而且 Spring Boot 默認提供 JackJson 序列化支持,可以讓服務介面輸入、輸出支持 JSON 等。因此,當使用 Spring Cloud 進行微服務架構開發時,使用 Spring Boot 是一條必經之路。
2. Spring Cloud 與服務治理( Eureka )
服務治理是 Spring Cloud 的核心,在實現上其提供了兩個選擇,即 Consul 和 Netflix 的 Eureka 。
Eureka 提供了服務注冊中心、服務發現客戶端,以及注冊服務的 UI 界面應用。
在 Eureka 的實現中,節點之間相互平等,有部分注冊中心「掛掉」也不會對整個應用造成影響,即使集群只剩一個節點存活,也可以正常地治理服務。即使所有服務注冊節點都宕機, Eureka 客戶端中所緩存的服務實例列表信息,也可讓服務消費者能夠正常工作,從而保障微服務之間互相調用的健壯性和應用的彈性。
3. Spring Cloud 與客戶端負載均衡( Ribbon )
Ribbon 默認與 Eureak 進行無縫整合,當客戶端啟動的時候,從 Eureka 伺服器中獲取一份服務注冊列表並維護在本地,當服務消費者需要調用服務時, Ribbon 就會根據負載均衡策略選擇一個合適的服務提供者實例並進行訪問。
Spring Cloud 通過集成 Netflix 的 Feign 項目,為開發者提供了聲明式服務調用,從而簡化了微服務之間的調用處理方式。並且默認 Feign 項目集成了 Ribbon ,使得聲明式調用也支持客戶端負載均衡功能。
4. Spring Cloud 與微服務容錯、降級( Hystrix )
為了給微服務架構提供更大的彈性,在 Spring Cloud 中,通過集成 Netflix 下子項目 Hystrix ,通過所提供的 @HystrixCommand 註解可以輕松為我們所開發的微服務提供容錯、回退、降級等功能。此外, Hystrix 也默認集成到 Feign 子項目中。
Hystrix 是根據「斷路器」模式而創建。當 Hystrix 監控到某服務單元發生故障之後,就會進入服務熔斷處理,並向調用方返回一個符合預期的服務降級處理( fallback ),而不是長時間的等待或者拋出調用異常,從而保障服務調用方的線程不會被長時間、不必要地佔用,避免故障在應用中的蔓延造成的雪崩效應。
而 Hystrix 的儀表盤項目( Dashboard )可以監控各個服務調用所消耗的時間、請求數、成功率等,通過這種近乎實時的監控和告警,可以及時發現系統中潛在問題並進行處理。
5. Spring Cloud 與服務網關( Zuul )
Spring Cloud 通過集成 Netflix 中的 Zuul 實現 API 服務網關功能,提供對請求的路由和過濾兩個功能
路由功能負責將外部請求轉發到具體的微服務實例上,是實現外部訪問統一入口的基礎。
過濾器功能則負責對請求的處理過程進行干預,是實現請求校驗、服務聚合等功能的基礎。
通過 Zuul ,可以將細粒度的服務組合起來提供一個粗粒度的服務,所有請求都導入一個統一的入口,對外整個服務只需要暴露一個 API 介面,屏蔽了服務端的實現細節。通過 Zuul 的反向代理功能,可以實現路由定址,將請求轉發到後端的粗粒度服務上,並做一些通用的邏輯處理。此外, Zuul 默認會與 Eureka 伺服器進行整合,自動從 Eureka 伺服器中獲取所有注冊的服務並進行路由映射,實現 API 服務網關自動配置。
6. Spring Cloud 與消息中間件( Stream )
Spring Cloud 為簡化基於消息的開發,提供了 Stream 子項目,通過建立消息應用抽象層,構建了消息收發、分組消費和消息分片等功能處理,將業務應用中的消息收發與具體消息中間件進行解耦,使微服務應用開發中可以非常方便地與 Kafka 和 RabbitMQ 等消息中間件進行集成。
Spring Cloud Bus 基於 Stream 進行擴展,可以作為微服務之間的事件、消息匯流排,用於服務集群中狀態變化的傳播。
比如 Spring Cloud Config 藉助 Bus ,可以實現配置的動態刷新處理。
7. Spring Cloud 與分布式配置中心( Config )
針對微服務架構下的配置文件管理需求, Spring Cloud 提供了一個 Config 子項目。 Spring Cloud Config 具有中心化、版本控制、支持動態更新和語言獨立等特性。
在 Config 子項目中將微服務應用分為兩種角色:配置伺服器( Config Server )和配置客戶端( Config Client )。使用配置伺服器集中地管理所有配置屬性文件,配置服務中心可以將配置屬性文件存儲到 Git 、 SVN 等具有版本管理倉庫中,也可以存放在文件系統中。默認採用 Git 的方式進行存儲,因此可以很容易地對配置文件進行修改,並實現版本控制。
8. Spring Cloud 與微服務鏈路追蹤( Sleuth )
Spring Cloud 中的 Sleuth 子項目為開發者提供了微服務之間調用的鏈路追蹤。
Sleuth 核心思想就是通過一個全局的 ID 將分布在各微服務服務節點上的請求處理串聯起來,還原了調用關系,並藉助數據埋點,實現對微服務調用鏈路上的性能數據的採集。
因此,通過 Sleuth 可以很清楚地了解到一個用戶請求經過了哪些服務、每個服務處理花費了多長時間,從而可以對用戶的請求進行分析。此外,通過將採集的數據發送給 Zipkin 進行存儲、統計和分析,從而可以實現可視化的分析和展示,幫助開發者對微服務實施優化處理。
9. Spring Cloud 與微服務安全( Security )
Spring Cloud Security 為我們提供了一個認證和鑒權的安全框架,實現了資源授權、令牌管理等功能,同時結合 Zuul 可以將認證信息在微服務調用過程中直接傳遞,簡化了我們進行安全管控的開發。
Spring Cloud Security 默認支持 OAuth 2.0 認證協議,因此單點登錄也可以非常容易實現,並且 OAuth2.0 所生成的令牌可以使用 JWT 的方式,進一步簡化了微服務中的安全管理。
10. Spring Cloud 的其他子項目