日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

微服务常见面试题

發布時間:2023/12/31 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 微服务常见面试题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、說說你對springcloud的理解?

Spring cloud是?個基于Spring Boot實現的服務治理框架,?于微服務架構中管理和協調各個服務。它提供了一系列組件方便用戶快速搭建微服務,如服務發現注冊nacos、 配置中?nacos、服務網關gateway,客戶端負載配置Ribbon、服務間調用openfeign、短路器Hystrix、分布式事務服務Seata等

二、nacos 注冊中心工作流程

  • 1、服務注冊:Nacos Client會通過發送REST請求的方式向Nacos Server注冊自己的服務,提供自身的元數據。比如IP地址、端口等信息,Nacos Server接收到注冊請求后,就會把這些元數據信息存儲在一個雙層的內存Map中。
  • 2、服務心跳:在服務注冊后,Nacos Client會維護一個定時心跳來持續通知Nacos Server,說明服務一直處于可用狀態,防止被踢除。默認5秒發送一次心跳。
  • 3、服務同步:Nacos Server集群之間會互相同步服務實例,用來保證服務信息的一致性。
  • 4、服務發現:服務消費者(Nacos Client)在調用服務提供者的服務時,會發送一個REST請求給Nacos Server,獲取上面注冊的服務清單,并且緩存在Nacos Client本地,同時會在Nacos Client本地開啟一個定時任務(35秒/次)定時拉取服務端最新的注冊表信息更新到本地緩存。nacos支持服務列表變更的消息推送模式,服務列表更新及時
  • 5、服務健康檢查:Nacos Server會開啟一個定時任務來檢查注冊服務實例的健康情況,對于超過15秒沒有收到客戶端心跳的實例,會將它的healthy屬性置為false(客服端服務發現時不會獲取),如果某個服務實例超過30秒沒有收到心跳,直接踢除該實例(被踢除的實例如果恢復發送心跳則會重新注冊)

三、nacos配置中心動態監聽

nacos采用的是pull模式(客戶端從服務端主動拉取數據),但不是簡單的pull模式,而是一種長輪訓機制,它結合了push和pull兩者優勢,客戶端采用長輪訓的方式定時發起pull請求,去檢查服務配置信息是否發生了變更,如果服務端有配置發生變化,就直接返回,如果沒有變化,則服務端會hold住這個請求,也就是服務端拿到這個連接之后在指定的時間內一直不返回結果,直到這段時間內配置發生變化,服務端會把原來hold住的請求進行返回,長連接默認時間是30秒

四、Feign服務調用原理

  • 通過 @EnableFeignClient 觸發 Spring 應用程序對@FeignClient 修飾類的掃描
  • 解析到 @FeignClient 修飾類后, Feign 框架注冊一個 FeignClientFacotoryBean 進入 Spring 容器
  • Spring 容器在初始化其他用到 @FeignClient 接口的類時, 獲得FeignClientFacotryBean 產生的一個代理對象 Proxy.
  • 基于 java 原生的動態代理機制, 針對 Proxy 的調用, 都會被統一轉發給 Feign 框架定義的一個 Handler ,由該 Handler 完成后續的 HTTP 轉換,發送,接收等工作
  • Feign在默認情況下使用的是JDK原生的URLConnection發送HTTP請求,沒有連接池,用Apache的HTTP Client替換Feign原始的http client, 從而獲取連接池、超時時間等與性能息息相關的控制能力
  • 五、說說Ribbon是如何實現負載均衡的?

    • 發送請求,被LoadBalancerInterceptor攔截器攔截,請求被交給ribbon來處理

    • 負載均衡客戶端(LoadBalancerClient)在初始化的時候,向注冊中心獲取服務注冊列表,并通過服務健康檢查,來判斷服務的可用性,如果服務的可用性發生了改變或者服務數量和之前的不一致,則從注冊中心更新或者重新拉取。負載均衡客戶端有了這些服務注冊列表,就可以根據具體的IRule來進行負載均衡。

    • 使用負載均衡算法(默認輪詢算法)從所有的服務實例信息中選擇一臺機器出來

    • 將請求發送給負載均衡選擇出來的服務實例上去

    六、ribbon支持負載均衡策略

    • 隨機策略——RandomRule
    • 輪詢策略——RoundRobinRule? ? 注:Ribbon默認策略
    • 重試策略——RetryRule
    • 最空閑策略:BestAvailableRule
    • 可用過濾策略——AvailabilityFilteringRule:該策略根據服務狀態 (宕機和繁忙) 來分配權重,過濾掉那些因為一直連接失敗或高并發的服務實例。它使用一個 AvailabilityPredicate() 方法來包含過濾邏輯。
    • 響應時間加權策略——WeightedResponseTimeRule:每隔30秒計算一次服務器響應時間,以響應時間作為權重,響應時間越短的服務器被選中的概率越大。
    • 區域權衡策略——ZoneAvoidanceRul

    七、spring cloud 降級和熔斷的區別與說明

    1、服務降級:當服務調用出現響應時間過長或者運行異常,就會調用服務降級方法快速響應。
    2、服務熔斷,只有在一定時間內服務調用失敗(報錯、超時、宕機)達到一定次數,才會啟動服務熔斷,進而調用服務降級方法快速響應。假設服務宕機或者在單位時間內調用服務失敗的次數過多,即服務降級的次數太多,那么則服務熔斷。
    3、服務降級每次都會先調用原服務方法,調用失敗才會執行服務降級方法;服務熔斷狀態會直接調用服務降級方法。

    八、sentinel為什么可以對我們的業務進行限流,原理是什么?

    我們在訪問web應用時,在web應用內部會有一個攔截器,這個攔截器會對請求的url進行攔截,攔截到請求以后,讀取sentinel控制臺的流控規則,基于流控規則對流量進行限流

    九、nacos和eureka區別

    • nacos和eureka的范圍不同,Nacos的閾值是針對某個具體Service的,而不是針對所有服務的;但Eureka的自我保護閾值是針對所有服務的。
    • nacos支持CP和AP兩種;eureka只支持AP。
    • nacos使用netty,是長連接;eureka是短連接,定時發送。

    總結

    以上是生活随笔為你收集整理的微服务常见面试题的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。