bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

面試guan:談談 Spring Cloud 與 Dubbo 有什么區(qū)別?

作者:IsToRestart
blog.csdn.net/weixin_51291483/article/details/109212137

十余年的泰和網站建設經驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。營銷型網站的優(yōu)勢是能夠根據用戶設備顯示端的尺寸不同,自動調整泰和建站的顯示方式,使網站能夠適用不同顯示終端,在瀏覽器中調整網站的寬度,無論在任何一種瀏覽器上瀏覽網站,都能展現優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)建站從事“泰和網站設計”,“泰和網站推廣”以來,每個客戶項目都認真落實執(zhí)行。

1、SpringCloud與Dubbo的區(qū)別

兩者都是現在主流的微服務框架,但卻存在不少差異:

  • 初始定位不同: SpringCloud定位為微服務架構下的一站式解決方案;Dubbo 是 SOA 時代的產物,它的關注點主要在于服務的調用和治理
  • 生態(tài)環(huán)境不同: SpringCloud依托于Spring平臺,具備更加完善的生態(tài)體系;而Dubbo一開始只是做RPC遠程調用,生態(tài)相對匱乏,現在逐漸豐富起來。
  • 調用方式: SpringCloud是采用Http協(xié)議做遠程調用,接口一般是Rest風格,比較靈活;Dubbo是采用Dubbo協(xié)議,接口一般是Java的Service接口,格式固定。但調用時采用Netty的NIO方式,性能較好。
  • 組件差異比較多,例如SpringCloud注冊中心一般用Eureka,而Dubbo用的是Zookeeper

SpringCloud生態(tài)豐富,功能完善,更像是品牌機,Dubbo則相對靈活,可定制性強,更像是組裝機。

  • SpringCloud:Spring公司開源的微服務框架,SpirngCloud 定位為微服務架構下的一站式解決方案。
  • Dubbo:阿里巴巴開源的RPC框架,Dubbo 是 SOA 時代的產物,它的關注點主要在于服務的調用,流量分發(fā)、流量監(jiān)控和熔斷

兩者的生態(tài)對比:

Spring Cloud 的功能很明顯比 Dubbo 更加強大,涵蓋面更廣,而且作為 Spring 的旗艦項目,它也能夠與 Spring Framework、Spring Boot、Spring Data、Spring Batch 等其他 Spring 項目完美融合,這些對于微服務而言是至關重要的。

使用 Dubbo 構建的微服務架構就像組裝電腦,各環(huán)節(jié)選擇自由度很高,但是最終結果很有可能因為一條內存質量不行就點不亮了,總是讓人不怎么放心,但是如果使用者是一名高手,那這些都不是問題。

而 Spring Cloud 就像品牌機,在 Spring Source 的整合下,做了大量的兼容性測試,保證了機器擁有更高的穩(wěn)定性,但是如果要在使用非原裝組件外的東西,就需要對其基礎原理有足夠的了解。

2、dubbo和Feign遠程調用的差異

Feign是SpringCloud中的遠程調用方式,基于成熟Http協(xié)議,所有接口都采用Rest風格。因此接口規(guī)范更統(tǒng)一,而且只要符合規(guī)范,實現接口的微服務可以采用任意語言或技術開發(fā)。但受限于http協(xié)議本身的特點,請求和響應格式臃腫,其通信效率相對會差一些。

Dubbo框架默認采用Dubbo自定義通信協(xié)議,與Http協(xié)議一樣底層都是TCP通信。但是Dubbo協(xié)議自定義了Java數據序列化和反序列化方式、數據傳輸格式,因此Dubbo在數據傳輸性能上會比Http協(xié)議要好一些。

不過這種性能差異除非是達極高的并發(fā)量級,否則無需過多考慮。

相關資料:

Dubbo采用自定義的Dubbo協(xié)議實現遠程通信,是一種典型的RPC調用方案,而SpringCloud中使用的Feign是基于Rest風格的調用方式。

1)Rest風格

REST是一種架構風格,指的是一組架構約束條件和原則。滿足這些約束條件和原則的應用程序或設計就是 RESTful。

Rest的風格可以完全通過HTTP協(xié)議實現,使用 HTTP 協(xié)議處理數據通信。REST架構對資源的操作包括獲取、創(chuàng)建、修改和刪除資源的操作正好對應HTTP協(xié)議提供的GET、POST、PUT和DELETE方法。

因此請求和想要過程只要遵循h(huán)ttp協(xié)議即可,更加靈活

SpringCloud中的Feign就是Rest風格的調用方式。

2)RPC

Remote Procedure Call,遠程過程調用,就是像調用本地方法一樣調用遠程方法。

RPC一般要確定下面幾件事情:

  • 數據傳輸方式: 多數RPC框架選擇TCP作為傳輸協(xié)議,性能比較好。
  • 數據傳輸內容: 請求方需要告知需要調用的函數的名稱、參數、等信息。
  • 序列化方式: 客戶端和服務端交互時將參數或結果轉化為字節(jié)流在網絡中傳輸,那么數據轉化為字節(jié)流的或者將字節(jié)流轉換成能讀取的固定格式時就需要進行序列化和反序列化

因為有序列化和反序列化的需求,因此對數據傳輸格式有嚴格要求,不如Http靈活

Dubbo協(xié)議就是RPC的典型代表。

我們看看Dubbo協(xié)議和Feign的調用區(qū)別:

3、Eureka和Zookeeper注冊中心的區(qū)別

SpringCloud和Dubbo都支持多種注冊中心,不過目前主流來看SpringCloud用Eureka較多,Dubbo則以Zookeeper為主。兩者存在較大的差異:

  • 從集群設計來看: Eureka集群各節(jié)點平等,沒有主從關系,因此可能出現數據不一致情況;ZK為了滿足一致性,必須包含主從關系,一主多從。集群無主時,不對外提供服務
  • CAP原則來看: Eureka滿足AP原則,為了保證整個服務可用性,犧牲了集群數據的一致性;而Zookeeper滿足CP原則,為了保證各節(jié)點數據一致性,犧牲了整個服務的可用性。
  • 服務拉取方式來看: Eureka采用的是服務主動拉取策略,消費者按照固定頻率(默認30秒)去Eureka拉取服務并緩存在本地;ZK中的消費者首次啟動到ZK訂閱自己需要的服務信息,并緩存在本地。然后監(jiān)聽服務列表變化,以后服務變更ZK會推送給消費者。

4、SpringCloud中的常用組件有哪些?

Spring Cloud的子項目很多,比較常見的都是Netflix開源的組件:

Spring Cloud Config

集中配置管理工具,分布式系統(tǒng)中統(tǒng)一的外部配置管理,默認使用Git來存儲配置,可以支持客戶端配置的刷新及加密、解密操作。

Spring Cloud Netflix

Netflix OSS 開源組件集成,包括Eureka、Hystrix、Ribbon、Feign、Zuul等核心組件。

  • Eureka:服務治理組件,包括服務端的注冊中心和客戶端的服務發(fā)現機制;
  • Ribbon:負載均衡的服務調用組件,具有多種負載均衡調用策略;
  • Hystrix:服務容錯組件,實現了斷路器模式,為依賴服務的出錯和延遲提供了容錯能力;
  • Feign:基于Ribbon和Hystrix的聲明式服務調用組件;
  • Zuul:API網關組件,對請求提供路由及過濾功能。

Spring Cloud Bus

用于傳播集群狀態(tài)變化的消息總線,使用輕量級消息代理鏈接分布式系統(tǒng)中的節(jié)點,可以用來動態(tài)刷新集群中的服務配置。

Spring Cloud Consul

基于Hashicorp Consul的服務治理組件。

Spring Cloud Security

安全工具包,對Zuul代理中的負載均衡OAuth2客戶端及登錄認證進行支持。

Spring Cloud Sleuth

Spring Cloud應用程序的分布式請求鏈路跟蹤,支持使用Zipkin、HTrace和基于日志(例如ELK)的跟蹤。

Spring Cloud Stream

輕量級事件驅動微服務框架,可以使用簡單的聲明式模型來發(fā)送及接收消息,主要實現為Apache Kafka及RabbitMQ。

Spring Cloud Task

用于快速構建短暫、有限數據處理任務的微服務框架,用于向應用中添加功能性和非功能性的特性。

Spring Cloud Zookeeper

基于Apache Zookeeper的服務治理組件。

Spring Cloud Gateway

API網關組件,對請求提供路由及過濾功能。

Spring Cloud OpenFeign

基于Ribbon和Hystrix的聲明式服務調用組件,可以動態(tài)創(chuàng)建基于Spring MVC注解的接口實現用于服務調用,在Spring Cloud 2.0中已經取代Feign成為了一等公民。

5、微服務調用關系復雜,如何做監(jiān)控和錯誤排查?

企業(yè)中對于微服務監(jiān)控有一套東西,叫做APM。比如:SpringCloudSeluth+Zipkin,Pinpoint、Skywalking,可以實現性能監(jiān)控、鏈路跟蹤(精確到某個代碼,某條sql)、CPU運行情況,鏈路運行耗時。

當然, 還可以借助于分布式日志管理系統(tǒng)。把項目運行的日志收集,形成統(tǒng)計報表,放入elasticsearch,便于搜索查看。比如:ELK技術棧、GrayLog

6、Hystix的作用是什么?

Hystix是Netflix開源的一個延遲和容錯庫,用于隔離訪問遠程服務、第三方庫,防止出現級聯(lián)失敗。比較常用的手段就是線程隔離和服務熔斷。

近期熱文推薦:

1.1,000+ 道 Java面試題及答案整理(2022最新版)

2.勁爆!Java 協(xié)程要來了。。。

3.Spring Boot 2.x 教程,太全了!

4.別再寫滿屏的爆爆爆炸類了,試試裝飾器模式,這才是優(yōu)雅的方式!!

5.《Java開發(fā)手冊(嵩山版)》最新發(fā)布,速速下載!

覺得不錯,別忘了隨手點贊+轉發(fā)哦!

分享題目:面試guan:談談 Spring Cloud 與 Dubbo 有什么區(qū)別?
地址分享:http://vcdvsql.cn/article38/dsdihpp.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供網站導航網站建設靜態(tài)網站用戶體驗服務器托管

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)