GO語言 服務發現概述

?https://zhuanlan.zhihu.com/p/32027014

明明白白的聊一下什么是服務發現-CSDN博客

一、服務發現 是什么

????????在傳統的系統部署中,服務運行在一個固定的已知的 IP 和端口上,如果一個服務需要調用另外一個服務,可以通過地址直接調用。

? ? ? ? 但是,服務實例的啟動和銷毀是很頻繁的,地址在動態變化,無法將請求固定發送到某個IP上。所以就 有需要將請求發送到 地址動態變化 的服務實例上。

? ? ? ? 這需要兩個步驟:

? ? ? ? 1. 服務注冊 — 存儲服務的主機和端口信息,以及對應的服務名字。

? ? ? ? 2. 服務發現 — 允許其他用戶發現服務注冊階段存儲的信息。

? ? ? ? 所以,服務發現 就是只通過服務的名字就能夠使用服務,并且支持服務所在地址是動態變化的。

二、服務發現 提供了什么功能

1.?健康檢查

????????作為一個服務發現服務,不僅要保存服務的訪問方式(ip+port),還需要有服務監聽的功能,隔一段時間去監聽你的服務是否正常。即健康檢查。

2. 負載均衡

????????有多個節點提供一個服務,特別是高并發的時候,需要更多的節點。即負載均衡。

3. 全局分布

? ? ? ? 一個服務需要改動時,不應該讓其他服務做相應改動,服務的鍵值存儲 需要是全局性的。即服務注冊中心。

三、服務發現 的兩種發現方式

????????有兩種主要的服務發現方式:客戶端發現 和 服務端發現

1.?客戶端服務發現

(1) 解釋:

????????客戶端查詢服務注冊中心,獲取服務的實際網絡地址。

????????客戶端通過負載均衡算法,選擇一個可用的服務實例。

????????客戶端將請求發送至該服務實例。

(2) 優點:架構簡單,客戶端可以自己選擇負載均衡策略。

? ? ? 缺點:客戶端需要自己實現負載均衡,自己訪問服務實例,有一定開發成本。

2. 服務端服務發現

(1)?解釋:

????????客戶端向 負載均衡器?發送業務請求。

????????負載均衡器 往服務注冊中心查詢可用的服務,然后轉發請求到該 服務實例上。

(2) 優點:服務的發現邏輯對客戶端是透明的。

? ? ? 缺點:需要額外部署和維護高可用的負載均衡器。

? ? ? ?

四、服務注冊中心

????????服務注冊中心 的位置 如上面 服務發現框架圖 所示。

????????服務注冊中心是服務發現的核心,保存了各個可用服務實例的網絡地址(IP和端口)。

????????服務注冊中心必須要有高可用性實時更新功能

????????實時更新功能,主要是服務的注冊和注銷。?有兩種實現方式:

1. 服務自己注冊

????????服務實例必須自己主動的到 服務注冊中心 進行注冊和注銷。

????????服務注冊中心 使用 心跳機制 來監控實例異常關閉 并注銷。

????????優點:框架簡單,不需要其它輔助組件。

????????缺點:各個服務實例 和 服務注冊中心 的耦合起來。

2.?第三方組件注冊

????????通過其他組件來實現,到 服務注冊中心 進行注冊和注銷。

? ? ? ? 組件需要監控實例的啟動和關閉。

????????組件可以通過如事件訂閱等方式來監控服務實例的狀態。

????????優點:使用輔助組件 來實現 服務注冊中新 和 服務實例解耦。

????????缺點:增加框架復雜度,添加了輔助組件。

五、常見服務發現框架對比

六、Consul 介紹

1. Consul相比Etcd更強大

????????如上圖所示,Consul相比Etcd更強大,支持 多數據中心健康檢查DNS協議

????????consul通過 DNS或者HTTP接口 使服務注冊和服務發現變的更容易? ? ?

2.?Consul 框架圖

? ? ? ? 可見,使用的是 客戶端服務發現方式,客戶端直接訪問服務實例。

3.?采用 Raft 算法,用來保證服務的高可用。

? ? ? ? 目的是保證?系統中有一兩個服務器當機,也不會影響其處理過程

七、思考服務發現應該怎么做

? ? ? ? 主要考慮兩個點:

1. 服務實例怎么注冊和注銷:建議 服務實例 自己主動到 服務注冊中心 去進行注冊和注銷,不要使用其他組件去監控服務實例,降低框架復雜度。

2. 客戶端怎么訪問服務:建議客戶端直接訪問 服務注冊中心 獲取服務地址,不要維護高可用的負載均衡中心,降低框架復雜度。

3. 總體:不是很龐大的生態,應該以降低框架服務度為主。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/24298.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/24298.shtml
英文地址,請注明出處:http://en.pswp.cn/web/24298.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

軟件巨頭SAP裁員優厚條件,吸引5300名員工爭相離職

導語 大家好,我是社長,老K。專注分享智能制造和智能倉儲物流等內容。 新書《智能物流系統構成與技術實踐》 在科技行業的大潮中,SAP公司近日因一項頗具爭議的裁員計劃而備受矚目。但這次裁員風波并未如往常般引發員工的強烈抗議,反…

D365 子窗體調用父窗體方法

文章目錄 一、在子窗體中調用父窗體公共方法二、刷新 CallerForm 數據源 一、在子窗體中調用父窗體公共方法 Object callerForm element.args().caller(); if(callerForm is FormRun && formHasMethod(callerForm, identifierStr(parentMethod))) {callerForm.parent…

知網-數學學習與研究-收稿郵箱

知網-數學學習與研究-收稿郵箱 《數學學習與研究》雜志是由東北師范大學主管,吉林省數學會與東北師范大學出版社聯合主辦的省級優秀數學類期刊雜志。 主管單位:東北師范大學 主辦單位:吉林省數學會;東北師范大學數學與統計學院 創刊時間1983…

AI學習指南機器學習篇-決策樹基本原理

AI學習指南機器學習篇-決策樹基本原理 在機器學習領域,決策樹是一種常見且十分重要的算法。它不僅在分類任務中被廣泛應用,還可以用于回歸任務。本篇博客將詳細介紹決策樹的基本原理,包括節點、分裂準則、信息增益、基尼不純度等概念&#x…

msvcr120.dll丟失怎樣修復?為什么msvcr120.dll文件很重要

msvcr120.dll? 是一個屬于 Microsoft Visual C 2013 Redistributable package 的動態鏈接庫文件。這個文件對于運行使用 Visual Studio 2013 開發的應用程序是必要的,因為它包含了C運行時庫的一部分功能,這些功能是標準C庫中與輸入/輸出操作、字符串操作…

OpenCV中的圓形標靶檢測——斑點檢測算法(二)

前面的章節中我們已經大致介紹了算法流程,也對一些算法中用到的相關概念做了簡要介紹,同時給出了算法調用的API,現在我們開始算法檢測接口實現源碼的分析。 1. 斑點的分組與加權 這里我們選擇后者,先了解算法的處理流程,再分析各個模塊的實現。算法流程圖如下圖所示,上一…

android中調用onnxruntime框架

創建空白項目 安裝Android Studio及創建空白項目參考:【安卓Java原生開發學習記錄】一、安卓開發環境的搭建與HelloWorld(詳細圖文解釋)_安卓原生開發-CSDN博客 切記:build configuration language 一定選擇Groovy!官…

51單片機-LCD液晶顯示

目錄 前言: 一. LCD1602模塊簡介 二. 代碼功能實現 三.總結 前言: 本文主要是51單片機的LCD液晶顯示,使用的是LCD1602.下面是詳細介紹和完整代碼,歡迎大家的點贊,評論和關注.感謝. 一. LCD1602模塊簡介 LCD1602 模塊具有以下特點: 顯示特點: 可以…

MySQL 將null轉0 ifnull() coalesce()

做統計報表的時候,有時候不希望查出來的值是null,因為在代碼中需要做大量的判空,最后轉換成0來處理。既然如此,那在sql中查出來就是0,就不用為空而去判空了。 1.IFNULL() ifnull()只能放2個值。 select IFNULL(null,0…

[240608] Zig 發布 v0.13.0 |AMD 新處理器不支持 Win 10 |DuckDuckgo 發布AI匿名聊天服務

目錄 Zig 發布 0.13.0 版本AMD 下一代銳龍處理器不支持 Windows 10DuckDuckgo 發布 AI 匿名聊天服務 Zig 發布 0.13.0 版本 Zig 發布 0.13.0 版本,此次發布的主要目的是升級 zig 工具鏈,發布重點如下: 工具鏈升級: LLVM&#xf…

DevOps的原理及應用詳解(六)

本系列文章簡介: 在當今快速變化的商業環境中,企業對于軟件交付的速度、質量和安全性要求日益提高。傳統的軟件開發和運維模式已經難以滿足這些需求,因此,DevOps(Development和Operations的組合)應運而生&a…

企業建站響應式網站建設平臺版源碼系統 海量模版可選擇 帶完整的安裝代碼以及搭建教程

系統概述 企業建站響應式網站建設平臺版源碼系統是一款集創新性、實用性和便捷性于一體的建站解決方案。它旨在為用戶提供一站式的網站建設服務,無論你是新手還是經驗豐富的開發者,都能通過該系統輕松實現網站的構建與部署。 該系統采用先進的技術架構…

單鏈表復習 (C語言版)

目錄 一.順序表與鏈表的區別 二.鏈表概念 三.單鏈表 1.單鏈表的開始與初始化 2.單鏈表的打印 3.單鏈表的尾插 重難點:單鏈表實現時的指針詳解 4.單鏈表的頭插 5.單鏈表的尾刪 6.單鏈表的頭刪 小結: 7.單鏈表的查找 8.在指定位置前插入數據 …

mingw64,clang,gcc

MinGW-w64、Clang 和 GCC 都是編譯器,但它們在功能和設計上有一些區別: MinGW-w64 是一個在 Windows 平臺上的開發工具集,它提供了一組 GNU 工具和庫,可以用于編譯和構建本地的 Windows 應用程序。MinGW-w64 的主要目標是提供類似…

GitHub工程獲取第三方PR操作

GitHub工程獲取第三方PR操作 1. 源由2. 獲取第三方PRStep 1:安裝ghStep 2:獲取個人TokenStep 3:通過git協議獲取代碼Step 4:獲取第三方PR分支 3. 總結 1. 源由 通常來說,GitHub上通常有三種場景: 工程管理…

STM32 UART 錯誤代碼 HAL_UART_ERROR_PE

HAL_UART_ERROR_PE 是STM32 HAL庫(硬件抽象層庫)中UART(通用異步收發傳輸器)模塊定義的一個錯誤碼,表示“Parity Error”(奇偶校驗錯誤)。當UART通信過程中檢測到奇偶校驗不匹配時,會…

自動化噴涂生產線方案三

本文介紹自動化噴涂生產線的另外一種方案,單工作站方案,單工作站配置一臺機械臂和一套除塵柜,代替一個工位完成噴涂工藝,其工作原理簡要介紹如下。 一套單工作站的主要組成設備有,10kg負載機械臂一臺主要負責噴涂工藝&…

源碼講解kafka 如何使用零拷貝技術(zero-copy)

前言 kafka 作為一個高吞吐量的分布式消息系統,廣泛應用與實時應用場景中。為了實現高效的數據傳輸,kafka使用了零拷貝技術(zero-copy)顯著提高了性能。本文將詳細講解 Kafka 如何利用零拷貝技術優化數據傳輸。 什么是零拷貝 零拷貝技術目的是減少數據傳輸的效率。在傳統…

馮喜運:6.8下周倫敦金行情怎么看?黃金原油下周操作建議

【黃金消息面分析】:黃金不是由通脹驅動的。它也不是由通貨緊縮驅動的。它也不是由美元驅動的。當股市反彈時,它也不會下跌,反之亦然。黃金是由市場情緒驅動的。而且,它是黃金市場上唯一的常數,使人們能夠對黃金價格趨…

vue elementui el-input 正則驗證,限制只能輸入數字和小數

vue elementui el-input 正則驗證 限制只能輸入數字和小數,以下兩種方法都可以: 1、οninput“value value.replace(/[^0-9.]/g,‘’)” 2、οninput“value value.replace(/[^\d.]/g, ‘’)” 限制只能輸入數字: 1、oninput “valuevalu…