微服務~Consul服務註冊與發現

来源:https://www.cnblogs.com/lori/archive/2018/01/31/8391351.html
-Advertisement-
Play Games

服務發現是基於微服務架構的關鍵原則之一。嘗試配置每個客戶端或某種形式的約定可能非常困難,可以非常脆弱。Consul通過HTTP API和DNS提供服務發現服務。Spring Cloud Consul利用HTTP API進行服務註冊和發現。這不會阻止非Spring雲應用程式利用DNS界面。Consul ...


服務發現是基於微服務架構的關鍵原則之一。嘗試配置每個客戶端或某種形式的約定可能非常困難,可以非常脆弱。Consul通過HTTP API和DNS提供服務發現服務。Spring Cloud Consul利用HTTP API進行服務註冊和發現。這不會阻止非Spring雲應用程式利用DNS界面。Consul代理伺服器在通過八卦協議進行通信的群集中運行,並使用筏式協議協議。

文章參考:

https://www.jianshu.com/p/28c6bd590ca0

http://blog.csdn.net/y435242634/article/details/78639663

Consul 四大特性

  1. Service Discovery (服務發現)
  2. Health Check (健康檢查)
  3. Multi Datacenter (多數據中心)
  4. Key/Value Storage

Consul相關知識點

Agent

  1. Agent 是一個守護進程
  2. 運行在Consul集群的每個成員上
  3. 有Client 和 Server 兩種模式
  4. 所有Agent都可以被調用DNS或者HTTP API,並負責檢查和維護同步

Client

  1. Client 將所有RPC請求轉發至Server
  2. Client 是相對無狀態的
  3. Client 唯一做的就是參與LAN Gossip Pool
  4. Client 只消耗少量的資源和少量的網路帶寬

Server

  1. 參與 Raft quorum(一致性判斷)
  2. 響應RPC查詢請求
  3. 維護集群的狀態
  4. 轉發查詢到Leader 或 遠程數據中心

 

Datacenter數據中心

  1. 私有的
  2. 低延遲
  3. 高帶寬

Consensus (一致性)

Consul 使用consensus protocol 來提供CAP(一致性,高可用,分區容錯性)

 Gossip

一種協議: 用來保證 最終一致性 , 即: 無法保證在某個時刻, 所有節點狀態一致, 但可以保證”最終”一致

 啟動Consul

Consul安裝之後,代理必須運行。 代理可以在伺服器或客戶端模式下運行。 每個數據中心都必須至少有一臺伺服器,但推薦使用3台或5台伺服器。 一個單一的伺服器部署是非常不推薦的,因為在故障情況下數據丟失是不可避免, 所有其他代理以客戶端模式運行。 客戶端是一個非常輕量級的進程,它註冊服務,運行健康檢查,並將查詢轉發給伺服器。 代理程式必須在集群中的每個節點上運行。

下麵介紹幾個命令:

consul agent -dev  以開發模式啟動代理,不會持久化信息

consul members  查看集群成員

註冊服務

服務可以通過提供服務定義或通過對HTTP API進行適當的調用來註冊。
服務定義是註冊服務最常用的方式,所以我們將在這一步中使用這種方法。 我們將建立在上一步中介紹的代理配置。
首先,為Consul配置創建一個目錄。 Consul將所有配置文件載入到配置目錄中,因此Unix系統上的一個通用約定是將目錄命名為/etc/consul.d(.d尾碼意味著“該目錄包含一組配置文件”)。

建立服務配置目錄:mkdir /etc/consul.d
添加文件:echo '{"service": {"name": "web", "tags": ["rails"], "port": 80}}' | sudo tee /etc/consul.d/web.json 以開發模式啟動:consul agent -dev -config-dir=/etc/consul.d 以服務方式啟動:consul agent -server -bootstrap-expect 2 -data-dir ./tmp/consul -node=n1 -bind=192.168.109.241 -ui-dir ./dist -dc=dc1 以客戶端方式啟動:consul agent -data-dir ./tmp/consul -ui-dir ./dist -bind=192.168.109.204 -dc=dc1

加入集群

將新節點添加到集群:consul join 192.168.100.101(其中101這個節點是master)

顯示成員:consul members

查看UI管理頁面

http://localhost:8500

 

待續...

 

 
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • font連寫屬性 font-style font-variant font-weight font-size/line-height font-family font-size與font-family為必填 font-style 可指定的值為: normal(正常) italic(斜體) obliq ...
  • .toggle-cart-enter-active, .toggle-cart-leave-active { transition: all .3s ease-out; } .toggle-cart-enter, .toggle-cart-leave-active { transform: tran ...
  • wx-jq (一套完全原創的微信小程式插件集合庫) 微信小程式插件,微信小程式組件,微信小程式插件集合,微信小程式組件集合,微信小程式插件學習,微信小程式插件開發, 線上演示: 下載地址: https://gitee.com/dgx/wx-jq 效果展示(截圖大部分來自真機蘋果5s,少量來自模擬器) ...
  • 一個插排引發的設計思想 (一) 觀察者模式 一個插排引發的設計思想 (二) 抽象類與介面 一個插排引發的設計思想 (三) 委托與事件 ...待續.... 前兩篇文章循序漸進的介紹了觀察者模式、抽象類和介面, 並分析了抽象類和介面的不同. 結尾處有這樣的問題: 無論是抽象類還是介面, 都是將設備本身放 ...
  • 一、寫在前面 應用分層這件事情看起來很簡單,但每個程式員都有自己的一套,哪怕是初學者。如何讓一家公司的幾百個應用採用統一的分層結構,並得到大部分程式員的認同呢?這可不是件簡單的事情,接下來以我們真實案例與大家一起探討,先問大家兩個技術問題: 服務的調用代碼你覺得放到哪一層好呢?A表現層;B業務邏輯層 ...
  • 使用消息服務框架,實現一個3階段提交協議的分散式事務,支持多種資料庫,甚至不支持分散式事務的嵌入式資料庫也可以實現分散式事務的功能,方便在微服務架構下實現分散式事務。 ...
  • 本文觀點僅為技術猜解,不代表官方線上真實方案。 風靡上海的掃碼乘地鐵,從2018年1月20日全面支持,至今近10天了。起初不以為然,過了大概1個禮拜左右,也下載了Metro大都會APP,開始體驗掃碼乘地鐵的秒速進站(0.5秒進出站),使用的過程中,好奇心使然,讓我看是對這套技術方案越來月感興趣,然後 ...
  • 【原創】XXX售貨機智能終端管理平臺技術方案 (一) By Jango (註:僅代表個人設計觀點。本文屬原創方案,如有抄襲等行為必追究法律責任) 對系統設計的興趣愛好,持續了好幾年,寫過好幾個方案,不過都已經壓箱底了。針對於當下新零售行業的興起,各家方案都有它自己的故事,因此,技術方案也各不相同。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...