<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] ## consul * 端口:8500 * web管理頁面:8600 https://weibo.com/ttarticle/p/show?id=2309351002704321779433768975 ### **服務發現和治理** ![](https://img.kancloud.cn/94/ee/94ee7cd683e15b9036d6af6b1e24f9f7_606x492.png) 1、服務發現以及注冊: 當服務Producer 啟動時,會將自己的Ip/host等信息通過發送請求告知 Consul,Consul 接收到 Producer 的注冊信息后,每隔一段時間會向 Producer 發送一個健康檢查的請求,檢驗Producer是否健康。 2、服務調用: 當 Consumer 請求Product時,會先從 Consul 中拿到存儲Product服務的 IP 和 Port 的臨時表(temp table),從temp table表中任選一個· Producer 的 IP 和 Port, 然后根據這個IP和Port,發送訪問請求;temp table表只包含通過了健康檢查的 Producer 信息,并且每隔一段時間更新 ### **consule 核心 agent組件** Agent是一個獨立的程序,通過守護進程的方式,運行在consul集群中的每個節點上。每個Consul agent維護它自己的服務集合以及檢查注冊和健康信息。agent負責執行自己的健康檢查和更新本地狀態其中,Agent 根據節點的性質,分為: Agent Server 和 Agent Client Agent Client: client將 HTTP 和 DNS 接口請求轉發給局域網內的服務端集群。 Agent Server: server 保存client的注冊信息,集群的配置信息, 維護集群高可用, 在局域網內與本地客戶端通訊, 通過廣域網與其它數據中心通訊。 每個數據中心的 server 數量推薦為 3 個或是 5 個,通過 Raft 算法來保證一致性。 ### **consul 通信接口** 1. RPC 用于內部通訊Gossip/日志分發/選主等 2. HTTP API 服務發現/健康檢查/KV存儲等幾乎所有功能, 默認端口為8500 2.3 Consul Commands (CLI) consul命令行工具可以與consul agent進行連接,提供部分consul的功能。 實際上Consul CLI 默認就是調用的HTTP API來與consul集群進行通訊。 2.4 DNS 僅用于服務查詢 例如: dig @127.0.0.1 -p 8600 web.service.consul 可以通過cosul提供的DNS接口來獲取當前的服務“web”對應的可用節點 **Consul 內部端口使用匯總** ![](https://img.kancloud.cn/d4/13/d4139087bbf1404b69f5c4bf8f191f55_628x361.png) ### **Consul 請求調用鏈路** ![](https://img.kancloud.cn/df/a6/dfa68ee040430b1d38203f3c64701f5b_650x646.png) 從架構上,圖片被兩個datacenter分成了上下兩部分;但這兩部分又并不是完全隔離的,他們之間通過WAN GOSSIP在Internet上交互報文。因此,我們了解到consul是可以支持多個數據中心之間基于WAN來做同步的。 再看單個datacenter內部,節點被劃分為兩種顏色,其中紅色為server,紫色為client。它們之間通過GRPC通信(主要用于業務數據)。除此之外,server和client之間,還有一條LAN GOSSIP通信,這是用于當LAN內部發生了拓撲變化時,存活的節點們能夠及時感知,比如server節點down掉后,client就會觸發將對應server節點從可用列表中剝離出去。 當然,server與server之間,client與client之間,client與server之間,在同一個datacenter中的所有consul agent會組成一個LAN網絡(當然它們之間也可以按照區域劃分segment),當LAN網中有任何角色變動,或者有用戶自定義的event產生的時候,其他節點就會感知到,并觸發對應的預置操作。 所有的server節點共同組成了一個集群,他們之間運行raft協議,通過共識仲裁選舉出leader。所有的業務數據都通過leader寫入到集群中做持久化,當有半數以上的節點存儲了該數據后,server集群才會返回ACK,從而保障了數據的強一致性。當然,server數量大了之后,也會影響寫數據的效率。所有的follower會跟隨leader的腳步,保障其有最新的數據副本。 > Server節點 * 參與共識仲裁(raft) * 存儲群集狀態(日志存儲) * 處理查詢 * 維護與周邊(LAN/WAN)各節點關系 >Agent節點 * 負責通過該節點注冊到consul的微服務的健康檢查 * 將客戶端注冊請求以及查詢轉化為對server的RPC請求 * 維護與周邊(LAN/WAN)各節點關系 >實現原理 * 縱觀consul的實現,其核心在于兩點: 1. 集群內節點間信息的高效同步機制,其保障了拓撲變動以及控制信號的及時傳遞 2. server集群內日志存儲的強一致性 * 它們主要基于以下兩個協議來實現: 1. 使用gossip協議在集群內傳播信息 2. 使用raft協議來保障日志的一致性
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看