<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          為什么要使用注冊中心?是eureka還是nacos?

          共 2313字,需瀏覽 5分鐘

           ·

          2022-01-23 11:29

          ????關注后回復 “進群” ,拉你進程序員交流群????

          來自丨CSDN

          作者丨iloveoverfly

          https://blog.csdn.net/new_com/article/details/112633748

          為什么要使用注冊中心

          有使用過ip:port地址直接調(diào)用服務的開發(fā)經(jīng)歷么?該段痛苦的經(jīng)歷在此處省略500字......,該種方式的缺點:

          • 需要手動的維護所有的服務訪問ip地址列表。
          • 單個服務實現(xiàn)負載均衡需要自己搭建,例如使用nginx負載均衡策略,或者基于容器化多實例部署單個服務,在實例之間做負載均衡。

          使用注冊中心能夠實現(xiàn)服務治理,服務動態(tài)擴容,以及服務調(diào)用的負載均衡,完整調(diào)用鏈路示例如下:

          • 服務提供者:向注冊中心根據(jù)服務名稱提供服務訪問的ip:port以及其他信息。
          • 注冊中心:根據(jù)服務名稱,存儲對應的ip:port以及其他信息。
          • 服務消費者:根據(jù)服務名向注冊中心獲取調(diào)用服務的ip:port以及其他相關的信息集合,然后根據(jù)負載均衡策略獲取最終的服務器ip:port訪問地址。

          使用springcloud時,常用的是eureka和nacos作為注冊中心,如何選擇呢?

          Eureka注冊中心

          架構原理圖如下:

          服務提供者

          主動向注冊中心注冊,續(xù)約,下線,獲取注冊表。服務注冊成功后,定時向注冊中心發(fā)送心跳,保證服務不被剔除。

          注冊中心

          存儲服務實例,定時掃描注冊表,剔除過期的服務實例。通過同步復制方式實現(xiàn)高可用,先獲取注冊表,然后再向其他注冊中心注冊自己,屬于AP模式。在實際項目中,會根據(jù)環(huán)境,例如dev,test,prod配置不同的注冊中心集群,如果不同的項目使用統(tǒng)一的注冊中心,只能根據(jù)服務名稱做區(qū)分。

          重點介紹一下Eureka自我保護機制。如果出現(xiàn)大量的服務實例過期被剔除,則注冊中心進入自我保護模式,注冊表中信息不再被剔除,目的是提高eureka的可用性。默認情況下,統(tǒng)計心跳失敗比例在 15 分鐘之內(nèi)是否低于 85%,如果低于 85%,Eureka Server 會將這些實例保護起來,讓這些實例不會過期。

          講述一次慘痛的上線經(jīng)歷,錯誤描述如下:

          當時服務部署成功,在Eureka注冊中心已經(jīng)顯示該服務已經(jīng)注冊成功,但是,前端請求經(jīng)過網(wǎng)關再轉發(fā)到該服務時,一直就沒有反應,服務調(diào)用一直不成功。nginx轉發(fā),網(wǎng)關轉發(fā)都在確認問題到底發(fā)生在哪里,幾經(jīng)折磨,在網(wǎng)關直接通過ip地址轉發(fā)到上線的服務,快速的解決該問題。后續(xù),復盤,應該Eureka的自我保護機制,導致的問題。在注冊中心注冊的服務是一個不可用的服務,但是,由于自我保護機制,Eureka Server沒有將無效的服務剔除。

          后續(xù)的解決方法是,設置enableSelfPreservation=false關閉自我保護機制,把renewalPercentThreshold 比例降低,在Eureka Server端,如果出現(xiàn)無效的服務就會將該服務剔除。

          nacos注冊中心

          nacos是springcloud的擴展,注冊中心功能通過NacosDiscoveryClient 繼承DiscoveryClient,在springcloud中,與Eureka可以無侵入的切換。注冊中心可以手動剔除服務實例,通過消息通知客戶端更新緩存的實例信息,完整調(diào)用鏈路示例如下:

          在spring cloud中引入nacos時,參考官網(wǎng)匹配具體的版本,如圖:

          nacos重點需要了解下其領域模型Nacos 數(shù)據(jù)模型 Key 由三元組唯一確定, Namespace命名空間,分組group,service服務。詳情可以參考官網(wǎng)Nacos 架構。

          nacos與Eureka相比優(yōu)勢如下:

          • nacos在自動或手動下線服務,使用消息機制通知客戶端,服務實例的修改很快響應;Eureka只能通過任務定時剔除無效的服務。
          • nacos可以根據(jù)namespace命名空間,DataId,Group分組,來區(qū)分不同環(huán)境(dev,test,prod),不同項目的配置。

          -End-

          最近有一些小伙伴,讓我?guī)兔φ乙恍?nbsp;面試題 資料,于是我翻遍了收藏的 5T 資料后,匯總整理出來,可以說是程序員面試必備!所有資料都整理到網(wǎng)盤了,歡迎下載!

          點擊??卡片,關注后回復【面試題】即可獲取

          在看點這里好文分享給更多人↓↓

          瀏覽 50
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  中文字幕有码第一页 | 丰满大爆乳波霸奶一区 | 亚洲无码日韩高清AV | 青青操逼网 | 国产精品无码在线看 |