SpringCloud(14)之SpringCloud Consul

????????我們知道 Eureka 2.X 遇到困難停止開發了,所以我們需要尋找其他的替代技術替代Eureka,這一小 節我們就講解一個新的組件Consul

一、Consul介紹

????????Consul 是 HashiCorp 公司推出的開源工具,用于實現分布式系統的服務發現與配置。與其它分布式服務注冊與發現的方案,Consul 的方案更一站式,內置了服務注冊與發現框 架、分布一致性協議實 現、健康檢查、Key/Value 存儲、多數據中心方案,不再需要依賴其它工具(比如 ZooKeeper 等)。 使用起來也較 為簡單。Consul 使用 Go 語言編寫,因此具有天然可移植性(支持Linuxwindows和 Mac OS X);安裝包僅包含一個可執行文件,方便部署,與 Docker 等輕量級容器可無縫配合。

????????我們來對比下當前服務注冊與發現的主流技術:

對比項

euerka

Consul

zookeeper

etcd

服務健康檢查

可配支持

服務狀態,內

存,硬盤等

()長連接,

keepalive

連接心跳

多數據中心

支持

kv?存儲服務

支持

支持

支持

一致性

raft

paxos

raft

cap

ap

cp

cp

cp

使用接口(多語?言能力)

http

支持 http??dns

客戶端

http/grpc

watch?支持

支持 long?polling/?大部分增量

全量/支持long

polling

支持

支持?long

polling

自身監控

metrics

metrics

metrics

安全

acl?/https

acl

https?支持

(弱)

spring?cloud

集成

已支持

已支持

已支持

已支持

1.1 consul特性

  • 服務發現
  • 健康檢查
  • key-value存儲
  • 多數據中心
  • 社區活躍

1.2consul的優勢

  • 使用?Raft算法來保證一致性,比復雜的?Paxos算法更直接.相比較而言,zookeeper采用的是?Paxos,?而?etcd?使用的則是?Raft。

  • 支持多數據中心,內外網的服務采用不同的端口進行監聽。多數據中心集群可以避免單數據中心?的單點故障,而其部署則需要考慮網絡延遲,分片等情況等。?zookeeper?etcd?均不提供多數據中?心功能的支持。

  • 支持健康檢查。 etcd?不提供此功能

  • 支持http和?dns協議接口。?zookeeper的集成較為復雜,etcd?只支持?http協議。

  • 官方提供?web?管理界面,etcd?無此功能。

  • 綜合比較,Consul作為服務注冊和配置管理的新星,比較值得關注和研究。

1.3 consul的角色

  • client?客戶端,無狀態,將?HTTP和?DNS 接口請求轉發給局域網內的服務端集群。
  • server:?服務端,保存配置信息,高可用集群,在局域網內與本地客戶端通訊,通過廣域網與其它數據中心通訊。每個數據中心的?server量推薦為3個或是5個。

二、Consul工作原理

??????? ? ? ?

????????Consul在項目中發揮服務注冊與發現的功能,我們講解下它的工作原理:

1.當Producer啟動的時候,會向Consu1發送一個post請求,并向Consu1傳輸自己的IP和Port。
2.Consul接收到Producer的注冊后,每隔10s(默認)會向Producer發送一個健康檢查的請求,檢驗 Producer是否健康。
3.當Consumer以Http的方式向Producer發起請求,會先從Consu1中拿到一個存儲服務IP和Port的臨時表,從表中拿到Producer的IP和Port后再發送請求。
4.該臨時表每隔10s會更新,只包含有通過了健康檢查的Producer。
  1. 2.1 consul的安裝

    1. ????????Consul 不同于Eureka需要單獨安裝,訪問Consul 官網下載?Consul?的最新版本,當前最新版本是?1.9.0,我們使用consu] ?1.9.0 windows amd64??版本。
      1. ? ? ? ? 下載地址:Install | Consul | HashiCorp Developer
        1. ? ? ? ? 歷史下載版本:?Consul Versions | HashiCorp Releases

????????下載后的文件是consul1_1.9.0_windows_amd64.zip, ??我們解壓這個文件,里面有個文件?consul.exe, ?我們將該文件所在目錄添加到環境變量path?中。

????????啟動consul?:dos??命令行執行如下命令:

consul   agent   -dev

????????控制臺訪問?http://localhost:8500/

?

  • Services: ???服務信息。
  • Nodes: 節點信息,?Consul 支持集群。

  • Key/Value: 存儲的動態配置信息。

  • ACL:權限信息。

  • Intentions?;?通過命令的方式對consul進行管理。


三、在項目中使用consul

????????項目中要想使用Consul作為服務注冊中心,只需要引入如下依賴包,在啟動類上添加

@EnableDiscoveryclient?注解,并在application.yml?中添加Consul?服務地址即可:

3.1添加依賴

? ? ? ? 在項目中添加依賴包:

<!--consul-->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-consul-discovery</artifactId><version>2.2.1.RELEASE</version>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId><version>2.2.10.RELEASE</version>
</dependency>

? ? ? ? 3.2在啟動類中添加??@EnableDiscoveryclient????注解

? ? ? ? 3.3在applacation.yaml中添加consul的配置信息

? ? ? ?

? ? ??? ? 配置如下:

spring:cloud:#Consul配置consul:host: 127.0.0.1port: 8500discovery:#注冊到Consul中的服務名字service-name: ${spring.application.name}prefer-ip-address: true

? ? ? ? 項目啟動后,consul服務數據如下:

????????

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

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

相關文章

kali xrdp

Kali Linux 使用遠程桌面連接——xrdp&xfce_kali xfce桌面-CSDN博客 Ubuntu/Debian/Kali xrdp遠程桌面黑屏/空屏/無畫面解決辦法 - 知乎 (zhihu.com) sudo apt-get install xrdp -y sudo apt-get install xfce4 -ysudo systemctl enable xrdp --now systemctl status xrd…

中級.NET開發工程師面試經歷

文章目錄 前言面試題目&#xff08;只記錄了還記得的部分&#xff09;一.簡單說下.NETCORE的生命周期&#xff1f;二.C#如何保證在并發情況下接口不會被重復觸發&#xff1f;三.引用類型和值類型有什么區別&#xff1f;四.那怎樣能讓引用類型和值類型一樣&#xff0c;在賦值的時…

【Latex】TeXstudio編譯器選項修改

1、動機 編譯國科大博士畢業答辯論文latex時報錯 Package ctable Error: You must load ctable after tikz. 2、方法 經過搜索發現是因為這是中文模板&#xff0c;編譯的選項不對&#xff0c;需要從 PDFLaTeX 調整到 XeLaTeX。于是操作如下 1&#xff09;點擊選項 2&#xf…

linux 文件目錄操作命令【重點】

目錄 ls cd cat more tail【工作中使用多】 mkdir rmdir rm ls 作用: 顯示指定目錄下的內容 語法: ls [-al] [dir] 說明: -a 顯示所有文件及目錄 (. 開頭的隱藏文件也會列出) -l 除文件名稱外&#xff0c;同時將文件型態(d表示目錄&#xff0c;-表示文件)、權限…

SpringMVC POST請求傳參 屬性名字母大寫注入失敗解決方案

問題描述&#xff1a; 我現在有一個接口通過一個實體(RequestBody)去接收一系列的參數&#xff0c;前端傳參為一個JSON字符串&#xff0c;但是當我的屬性名以大寫字母開頭(有的中間還有下劃線)&#xff0c;或者第二個字母是大寫字母的時候&#xff0c;我發現后端接收不到參數值…

Flask——基于python完整實現客戶端和服務器后端流式請求及響應

文章目錄 本地客戶端Flask服務器后端客戶端/服務器端流式接收[打字機]效果 看了很多相關博客&#xff0c;但是都沒有本地客戶端和服務器后端的完整代碼示例&#xff0c;有的也只說了如何流式獲取后端結果&#xff0c;基本沒有講兩端如何同時實現流式輸入輸出&#xff0c;特此整…

C++字符串類

C中有兩種主要的字符串類&#xff1a;std::string 和 std::wstring。 std::string std::string 是 C 標準庫中用于處理 ASCII 字符串的類。它提供了豐富的方法來操作字符串&#xff0c;包括插入、刪除、查找子串、比較等功能。使用 std::string 需要包含頭文件 <string>…

8.CSS層疊繼承規則總結

CSS 層疊繼承規則總結 經典真題 請簡述一下 CSS 中的層疊規則 CSS 中的層疊繼承規則 在前面《CSS屬性的計算過程》中&#xff0c;我們介紹了每一個元素都有都有所有的屬性&#xff0c;每一個屬性都會通過一系列的計算過程得到最終的值。 這里來回顧一下計算過程&#xff0…

Node.js中如何處理異步編程

在Node.js中&#xff0c;處理異步編程是至關重要的技能。由于Node.js的單線程執行模型&#xff0c;異步編程可以極大地提高程序的性能和響應速度。本文將介紹幾種常見的異步編程處理方式&#xff0c;并附上示例代碼&#xff0c;幫助您更好地理解和應用異步編程技術。 回調函數…

家政小程序開發,引領家庭服務新時代的科技革命

隨著科技的飛速發展&#xff0c;人們的生活方式正在發生深刻的變化。其中&#xff0c;家政服務作為日常生活的重要組成部分&#xff0c;也在經歷著一場由小程序技術引領的科技革命。本文將探討家政小程序的發展趨勢、功能特點以及對家庭服務的深遠影響。 一、家政小程序的發展…

Linux命令-chattr命令(用來改變文件屬性)

說明 chattr命令 用來改變文件屬性。這項指令可改變存放在ext2文件系統上的文件或目錄屬性&#xff0c;這些屬 性共有以下8種模式。 語法 chattr(選項)選項 a&#xff1a;讓文件或目錄僅供附加用途&#xff1b; b&#xff1a;不更新文件或目錄的最后存取時間&#xff1b; c…

NFTScan Labs,一個聚焦在 NFT 領域的開發者組織

NFTScan Labs 是一個聚焦在 NFT 領域的開發者組織&#xff0c;成立于 2021 年 3 月份。NFTScan Labs 核心成員從 2016 年開始涉足區塊鏈領域&#xff0c;有多年開發經驗和前沿行業認知&#xff0c;對加密錢包、區塊鏈安全、鏈上數據追蹤、DeFi、預言機、NFT 等領域有深入的研究…

2/22作業

1.按位置插入 void insert_pos(seq_p L,datetype value,int pos) { if(LNULL) { printf("入參為空\n"); return; } if(seq_full(L)) { printf("表已滿\n"); return; } if(pos>L->len|…

Jenkins的使用GIT(4)

Jenkins的使用GIT 20211002 我們使用 Jenkins 集成外部 Git 倉庫&#xff0c;實現對真實代碼的拉取和構建。在這里&#xff0c;我們選用 Coding/Github/Gitee 等都可以作為我們的代碼源 1 生成公鑰私鑰 首先&#xff0c;我們先來配置公鑰和私鑰。這是 Jenkins 訪問 Git 私有庫…

【nvm】下載安裝及使用(包含windows和Linux)

目錄 1、Windows版本下載及安裝 2、Linux下載及安裝 下載 安裝 3、使用 在不借助第三方工具的情況下切換node版本&#xff0c;只能卸載現有版本&#xff0c;安裝需要的版本&#xff0c;這樣顯然很麻煩。而nvm就很好的幫我們解決了這個問題。 nvm&#xff08;node.js vers…

QT中調用python

一.概述 1.Python功能強大&#xff0c;很多Qt或者c/c開發不方便的功能可以由Python編碼開發&#xff0c;尤其是一些算法庫的應用上&#xff0c;然后Qt調用Python。 2.在Qt調用Python的過程中&#xff0c;必須要安裝python環境&#xff0c;并且Qt Creator中編譯器與Python的版…

OpenCV:計算機視覺領域的瑞士軍刀

摘要 本文將深入探索OpenCV&#xff08;開源計算機視覺庫&#xff09;的基本概念、應用領域、主要功能和未來發展。通過本文&#xff0c;讀者將能夠理解OpenCV在計算機視覺中的重要性&#xff0c;并掌握其基本使用方法。 一、引言 隨著人工智能和機器學習技術的飛速發展&…

IDEA啟動Springboot報錯:無效的目標發行版:17 的解決辦法

無效的目標發行版&#xff1a;17 的解決辦法 一般有兩個原因&#xff0c;一可能是本地沒有安裝JDK17&#xff0c;需要安裝后然后在IDEA中選擇對應版本&#xff1b;二可能是因為IDEA版本太低&#xff0c;不支持17&#xff0c;需要升級IDEA版本。然后在File->Project Struct…

未雨綢繆,才是真正的高手

由于電腦用了五年半&#xff0c;剛換了新型電腦主機&#xff0c;人老了摸索掌握新操作方法較困難&#xff0c;所以今天的網文作業只好從簡&#xff0c;即本“人民體驗官”推廣人民日報官方微博文化產品《夜讀&#xff1a;真正的高手&#xff0c;都懂得凡事提前一步》。 圖&…

Flutter常用命令,持續更新

目錄 前言 Flutter 常用命令 Dart 常用命令 adb 常用命令&#xff08;用于 Android 開發&#xff09; 前言 當在開發Flutter項目時&#xff0c;熟悉一些常用的命令是非常重要的。這些命令可以幫助你執行各種任務&#xff0c;從構建應用程序到調試和測試。以下是一些Flutte…