springcloud 微服务鉴权_Java微服务框架spring cloud
Spring Cloud是什么
Spring Boot 讓我們從繁瑣的配置文件中解脫了出來,而 Spring Cloud,它利用Spring Boot的開發便利性巧妙地簡化了分布式系統基礎設施的開發,如服務發現注冊、配置中心、消息總線、負載均衡、斷路器、數據監控等,都可以用Spring Boot的開發風格做到一鍵啟動和部署。Spring并沒有重復制造輪子,它只是將目前各家公司開發的比較成熟、經得起實際考驗的服務框架組合起來,通過Spring Boot風格進行再封裝屏蔽掉了復雜的配置和實現原理,最終給開發者留出了一套簡單易懂、易部署和易維護的分布式系統開發工具包。
Spring Cloud組成
微服務是可以獨立部署、水平擴展、獨立訪問(或者有獨立的數據庫)的服務單元,springcloud就是這些微服務的大管家,采用了微服務這種架構之后,項目的數量會非常多,springcloud需要管理好這些微服務需要很多框架支持。
下圖是 Spring Cloud 所包含的框架圖:常用組件詳細介紹
?服務治理
服務注冊與發現是 Spring Cloud 中最核心的組件之一,整個系統中所有的服務都可以注冊到注冊中心,然后由注冊中心進行統一調度,方便后續的水平擴展以及故障轉移等。目前 Spring Cloud 主要通過整合 Netflix 的相關產品來實現這方面的功能(Spring Cloud Netflix),包括用于服務注冊和發現的 Eureka,調用斷路器 Hystrix,調用端負載均衡 Ribbon,Rest 客戶端 Feign,智能服務路由 Zuul,用于監控數據收集和展示的 Spectator、Servo、Atlas,用于配置讀取的 Archaius 和提供 Controller 層 Reactive 封裝的 RxJava。除此之外,針對于服務的注冊和發現,除了 Eureka,Spring Cloud 也整合了 Consul 和 Zookeeper 作為備選,但是因為這兩個方案在 CAP 理論上都遵循 CP 而不是 AP,所以官方并沒有推薦使用。分布式鏈路監控
Spring Cloud Sleuth 提供了全自動、可配置的數據埋點,以收集微服務調用鏈路上的性能數據,并發送給 Zipkin 進行存儲、統計和展示。
消息組件
既然是微服務架構,那服務間的調用肯定是無法避免的。Spring Cloud Stream 對于分布式消息的各種需求進行了抽象,包括發布訂閱、分組消費、消息分片等功能,實現了微服務之間的異步通信。Spring Cloud Stream 也集成了第三方的 RabbitMQ 和 Apache Kafka 作為消息隊列的實現。而 Spring Cloud Bus 基于 Spring Cloud Stream,主要提供了服務間的事件通信(比如刷新配置)。配置中心
隨著服務的不斷增多,同時每個服務也會有多個環境(開發環境、測試環境、生產環境等),每個環境的配置文件又會有所不同,但是其中又有許多配置是可以共用的,如果每個服務自己去管理這些配置,會給維護帶來很大的麻煩,這時候,我們就需要引入配置中心去統一管理這些配置。基于 Spring Cloud Netflix 和 Spring Cloud Bus,Spring 又提供了 Spring Cloud Config,實現了配置集中管理、動態刷新的配置中心概念。配置通過 Git 或者簡單文件來存儲,支持加解密。完全控制
Spring Cloud Security 基于 OAuth2 這個開放網絡的安全標準,提供了微服務環境下的單點登錄、資源授權、令牌管理等功能。命令行工具
Spring Cloud Cli 提供了以命令行和腳本的方式來管理微服務及 Spring Cloud 組件的方式。集群工具
Spring Cloud Cluster 提供了集群選主、分布式鎖(暫未實現)、一次性令牌(暫未實現)等分布式集群需要的技術組件。
Spring Cloud 各個組件如何來配套使用如上圖:Spring Cloud 各個組件相互配合,合作支持了一套完整的微服務架構。注:
1.Eureka 負責服務的注冊與發現,很好將各服務連接起來
2.Hystrix 負責監控服務之間的調用情況,連續多次失敗進行熔斷保護
3.Hystrix dashboard,Turbine 負責監控 Hystrix 的熔斷情況,并給予圖形化的展示
4.Spring Cloud Config 提供了統一的配置中心服務
5.當配置文件發生變化的時候,Spring Cloud Bus 負責通知各服務去獲取最新的配置信息
6.所有對外的請求和服務,都通過 Zuul 來進行轉發,起到 API 網關的作用
7.最后使用 Sleuth+Zipkin 將所有的請求數據記錄下來,方便進行后續分析
SpringCloud和Dubbo
SpringCloud和Dubbo都是現在主流的微服務架構
SpringCloud是Apache旗下的Spring體系下的微服務解決方案Dubbo是阿里系的分布式服務治理框架對比圖如下:
最大區別:SpringCloud拋棄了Dubbo的RPC通信,采用的是基于HTTP的REST方式。從技術維度上,其實SpringCloud遠遠的超過Dubbo,Dubbo本身只是實現了服務治理,而SpringCloud現在以及有21個子項目以后還會更多。所以其實很多人都會說Dubbo和SpringCloud是不公平的,但是由于RPC以及注冊中心元數據等原因,在技術選型的時候我們只能二者選其一,所以我們常常用他倆來對比。Dubbo和Spring Cloud并不是完全的競爭關系,兩者所解決的問題域不一樣:Dubbo的定位始終是一款RPC框架,而Spring Cloud的目的是微服務架構下的一站式解決方案。
本文轉載自開測如果對文章有任何疑問或建議
可以留言告訴我們
往期精彩回顧
2019年度精選文章
360技術中臺招聘啦!!
花椒前端基于 Docker 的 SSR 持續開發集成環境實踐
360技術公眾號
技術干貨|一手資訊|精彩活動
掃碼關注我們總結
以上是生活随笔為你收集整理的springcloud 微服务鉴权_Java微服务框架spring cloud的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 天玑8100/骁龙7双芯加持!OPPO
- 下一篇: 世界卫生网宣布猴痘为“大流行病” WHO