java開發面試問答----微服務篇

RPC

  • rpc即遠程過程調用,它的出現是爲了解決分佈式系統中多個應用之間的調用關係,使調用其餘應用的方法的過程像本地調用同樣方便。
  • rpc和restful的區別:rpc是一種編程模型,一種調用思想,而restful是具體的一種實現方式,一般rpc設計時是面向過程的,而restful是結合了http動詞面向資源的,rpc的底層實現可使用restful封裝
  • rpc和rmi的區別:一樣,rmi只是java的一種訪問遠程對象協議,rpc可使用rmi來實現
  • rpc的實現能夠用如下模型來解釋

- client application是調用方,server application是被調用方 - client stub是代理對象,他看起來是server端的類,其實內部是用rpc的代理類,他的做用是將調用的方法及參數進行序列化,並在結果返回時對結果進行反序列化 - run-time library就是實現各類通訊的庫包,如java的Socket,restful等等 - 最後是底層網絡通訊數據通訊 - server stub將請求參數反序列化,經過反射找到本地類和方法,調用本地方法獲取結果並序列化而後返回給client端

dubbo實現原理

dubbo是阿里巴巴開源的分佈式服務框架,採用層次結構設計,共分爲10層java

  • 服務接口層:服務提供方根據業務需求編寫接口和實現,服務調用方使用接口調用服務
  • 配置層:配置參數
  • 服務代理層:stub,根據服務接口生成的本地代理
  • 服務註冊層:封裝服務地址的註冊和發現
  • 集羣層:封裝多個服務提供者的路由及負載均衡
  • 監控層:監控服務的調用次數和耗時
  • 遠程調用層:封裝rpc,Protocol是服務域,它是Invoker暴露和引用的主功能入口,它負責Invoker的生命週期管理。Invoker是實體域,它是Dubbo的核心模型,其它模型都向它靠擾,或轉換成它,它表明一個可執行體,可向它發起invoke調用。
  • 信息交換層:封裝請求響應模式,同步轉異步
  • 網絡傳輸層:抽象mina和netty爲統一接口
  • 序列化層:封裝的序列化方式和工具

怎麼理解RESTful

rest的意思是表現層狀態轉換,即uri表示資源,http的操做方法表示行爲:post表示增長,delete表示刪除,put表示修改,get表示查詢,返回的狀態碼錶示結果,restful就是具備rest風格的架構規範。面試

什麼是SOA,SOA和微服務的區別是什麼

  • soa的意思是面向服務架構,他的思想是單個系統相對獨立,經過網絡進行相互通訊並對外提供總體服務,談到soa通常都會說esb企業服務總線,esb的做用就在於集成不一樣協議的不一樣服務,作消息轉發,路由的工做。
  • 而微服務的理念是soa的昇華,他是完全的組件化和服務化,將soa中的單個系統拆成多個提供單一服務的組件並去除esb,藉由docker技術實現快速部署。

服務治理

說說大家是怎麼實現服務治理的

談服務治理要從幾個方面來講spring

  • 服務的註冊和發現,經常使用的dubbo,spring cloud套件
  • 服務的限流和熔斷,dubbo自帶了降級功能,而spring cloud套件支持降級和熔斷,固然也可使用單獨的sentinel
  • 服務的監控,dubbo和spring cloud套件都有服務的監控功能,若是要用到完整的鏈路追蹤可使用skywalking

說說service mesh和serverless

  • service mesh 服務網格是微服務框架的進一步進化,他的理念是使用邊車模式將服務治理和業務實現徹底解耦合,將與業務代碼無關的服務註冊,限流,安全驗證等所有抽離到proxy中。第一代Service Mesh的表明爲Linkerd和Envoy,主要專一於作proxy,而第二代Service Mesh主要改進集中在更增強大的控制面功能,典型表明有Istio和Conduit。
  • Istio 主要架構由四部分組成
    • Envoy繼續扮演邊車的角色,實現服務註冊發現,限流等功能
    • Mixer接收Envoy的流量,前置條件檢查(ACL白名單),遙測上報(日誌監控),配額管理(解決資源衝突)
    • Pilot至關於envoy的超級邊車,負責envoy的生命週期,管理envoy路由,熔斷限流等策略
    • Istio-Auth則負責服務的安全驗證,流量加密和證書管理
  • serverless 無服務器架構,意思並非不須要服務器,而是開發人員不須要關心代碼在服務器上的運行狀況,能夠理解成將原來的整個應用拆分紅一個個執行不一樣任務的函數,這樣能夠更細粒度的控制業務運行狀況,提供FaaS函數即服務,serverless的好處在於
    • 能夠極大縮短交付時間,由於只須要交付相應的函數
    • 能夠靈活伸縮,不用再擔憂容量問題
    • 下降成本,能夠不用關心基礎設置的管理
相關文章
相關標籤/搜索