SpringCloud搭建微服務之Consul服務注冊與發現

1. Consul介紹

Consul是由HashiCorp公司使用Go語言開發的一款開源工具,主要用于實現分布式系統的服務發現和服務配置,其內置了服務注冊與發現框架、分布式一致性協議實現、健康檢查、Key-Value存儲、多數據中心方案。Consul具有高可移植性,支持Linux、Windows和Max OS X等多個操作系統,其安裝包只是一個可執行文件,方便部署,也可與Docker等輕量級容器無縫配合。Consul使用Raft算法來保證一致性,相比使用Paxos算法更簡單。更多詳情,可以參閱Consul官網

2. 多種注冊中心比較

項目EurekaConsulETCDZookeeperNacos
編寫語言JavaGoGoJavaJava
客戶端支持HTTPHTTP、DNSHTTP、Etcd3、gRPC跨語言弱,Curator組件HTTP、動態DNS、UDP
服務健康檢查需要顯示配置健康檢查提供詳細的服務狀態、內存、硬盤檢查連接心跳長連接、KeepaliveTCP/HTTP/MySQL
多數據中心通過WAN的Gossip協議支持支持單機模式、多集群模式
Key-Value存儲支持支持支持支持
一致性只能保證最終一致性,不能保證強一致性RaftRaftPaxosRaft
CAPAPAPCPCPCP/AP
Watch支持支持支持支持支持支持
自身監控MetricsMetricsMetrics使用第三方組件Metrics
安全ACLACL/HTTPSHTTPSACLACL/HTTPS
Spring Cloud集成支持支持支持支持支持

3. Consul下載與安裝

3.1. Consul下載

進入Consul官網,如下圖:
Consul官網
點擊Download進入下載頁面
Consul下載頁
選擇適合的系統和版本,這里使用Windows系統,386對應的是32位操作系統,AMD64對應的是64位操作系統。

3.2. Consul安裝

下載后解壓到指定文件夾,可以看到consul.exe的文件,在安裝文件路徑下使用cmd命令符,使用consul --version查看版本號
查看版本
如果可看到版本號信息,表明下載的Consul安裝軟件適用于本安裝系統,使用consul agent -dev啟動Consul
啟動Consul
-dev 表示以開發模式運行,-server 表示以服務器模式運行
在瀏覽器地址欄輸入http://localhost:8500/,進入Consul管理頁面
Consul管理頁面

4. Spring Cloud集成Consul

4.1. 版本說明

本文使用最新的SpringBoot和SpringCloud版本
JDK:17
Maven:3.9.6
SpringBoot:3.2.3
SpringCloud:2023.0.0

4.2. 引入核心依賴

在pom.xml文件中引入consul依賴

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>

4.3. 配置consul訪問地址

在application.yml文件中配置consul訪問地址

spring:cloud:consul:host: localhostport: 8500discovery:prefer-ip-address: trueservice-name: ${spring.application.name}

4.4. 主啟動類

在主啟動類上添加注解@EnableDiscoveryClient即可

4.5. 驗證

啟動服務,查看consul控制臺頁面
consul管理端

5. 問題處理

問題1:控制臺啟動成功了,Consul管理端依然提示錯誤
Consul錯誤
解決:在pom.xml中引入actuator依賴,這是因為consul需要actuator提供服務的健康檢查

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

問題2:提示移除commons-logging.jar
commons-logging
解決:在consul依賴中移除這個依賴

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-consul-discovery</artifactId><exclusions><exclusion><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId></exclusion></exclusions>
</dependency>

問題3:啟動服務后,控制臺出現大量WARN警告
WARN警告
解決:這是spring-cloud-commons存在的問題,將spring cloud的組件排除掉,直接引用新的commons依賴,該問題會在spring cloud下個版本中解決,到時就不需要額外引入spring-cloud-commons依賴

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-consul-discovery</artifactId><exclusions><exclusion><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId></exclusion><exclusion><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-commons</artifactId></exclusion></exclusions>
</dependency>
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-commons</artifactId><version>4.1.1</version><scope>compile</scope>
</dependency>

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

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

相關文章

Java多線程系列——Executor

目錄 Executor框架概覽 核心組件 1. 任務&#xff08;Task&#xff09; 2. 線程池&#xff08;ThreadPool&#xff09; 3. 任務調度 4. 任務執行與結果檢索 使用案例 實際應用場景 總結 Java的多線程編程是Java語言提供的核心特性之一&#xff0c;允許開發者有效地管理…

【數倉】Hadoop軟件安裝及使用(集群配置)

一、環境準備 1、準備3臺虛擬機 Hadoop131&#xff1a;192.168.56.131Hadoop132&#xff1a;192.168.56.132Hadoop133&#xff1a;192.168.56.133 本例系統版本 CentOS-7.8&#xff0c;已安裝jdk1.8 2、hosts配置&#xff0c;關閉防火墻 vi /etc/hosts添加如下內容&#x…

ip獲取+歸屬地實現

1.背景 現在的社交平臺一般都需要展示用戶的歸屬地,這個功能有下面二個主要功能點,接下來我們來介紹下具體實現。 IP 獲取 IP 轉歸屬地 2.ip獲取 2.1 Http請求 對于controller的請求,我們只需要寫個攔截器,將用戶的ip設置進上下文即可,非常方便。 @Override public bo…

生成式AI設計模式:綜合指南

原文地址&#xff1a;Generative AI Design Patterns: A Comprehensive Guide 使用大型語言模型 (LLM) 的參考架構模式和心理模型 2024 年 2 月 14 日 對人工智能模式的需求 我們在構建新事物時&#xff0c;都會依賴一些經過驗證的方法、途徑和模式。對于軟件工程師來說&am…

物聯網與智慧城市的融合:構建智能化、便捷化、綠色化的城市未來

一、引言 隨著科技的飛速發展和城市化的不斷推進&#xff0c;物聯網技術正逐步滲透到城市的各個領域&#xff0c;成為推動智慧城市建設的核心力量。物聯網與智慧城市的融合&#xff0c;不僅為城市治理提供了高效、智能的解決方案&#xff0c;也為市民的生活帶來了前所未有的便…

如何在Node.js中使用定時器

在Node.js中使用定時器是一項常見且重要的任務&#xff0c;特別是在需要執行定時任務或者輪詢操作的情況下。Node.js提供了多種方式來實現定時器功能&#xff0c;包括setTimeout、setInterval和setImmediate等方法。本篇博客將介紹如何在Node.js中使用這些定時器&#xff0c;并…

(數據結構)二叉樹

8.二叉樹 8.1概述 二叉樹是一種基本的非線性數據結構&#xff0c;它是由n&#xff08;n>0&#xff09;個節點構成的有限集合。在二叉樹中&#xff0c;每個節點最多有兩個子節點&#xff0c;通常被稱作左孩子&#xff08;left child&#xff09;和右孩子&#xff08;right c…

把python完全卸載干凈

1.winR&#xff0c;輸入control回車&#xff0c;點擊程序和功能&#xff0c;在搜索框輸入python&#xff0c;右鍵點擊卸載 2、找到Python安裝路徑&#xff0c;把所有文件全部刪除。 安裝路徑可以打開CMD輸入&#xff1a;where python 3、強制刪除Python.exe 打開cmd&#xff…

科技企業如何做到FTP數據安全保護

在數字化浪潮的推動下&#xff0c;科技企業的數據已成為推動創新、提升效率、增強競爭力的核心資源。數據的重要性不言而喻&#xff0c;它不僅包含了客戶信息、市場分析、產品設計等關鍵信息&#xff0c;更是企業寶貴的資產。然而&#xff0c;隨著數據量的激增&#xff0c;數據…

視覺AIGC識別——人臉偽造檢測、誤差特征 + 不可見水印

視覺AIGC識別——人臉偽造檢測、誤差特征 不可見水印 前言視覺AIGC識別【誤差特征】DIRE for Diffusion-Generated Image Detection方法擴散模型的角色DIRE作為檢測指標 實驗結果泛化能力和抗擾動 人臉偽造監測&#xff08;Face Forgery Detection&#xff09;人臉偽造圖生成 …

LabVIEW最佳傳輸系統設計

LabVIEW最佳傳輸系統設計 介紹了基于LabVIEW軟件開發的最佳基帶傳輸系統和最佳帶通傳輸系統的設計。通過軟件仿真實現了脈沖成形濾波器和匹配濾波器的設計&#xff0c;證明了系統在消除碼間干擾和抗噪聲方面的優異性能。此設計不僅激發了學生的學習興趣&#xff0c;還有助于提…

智能家居控制系統(51單片機)

smart_home_control_system 51單片機課設&#xff0c;智能家居控制系統 使用及轉載請標明出處&#xff08;最好點個贊及star哈哈&#xff09; Github地址&#xff0c;帶有PPT及流程圖 Gitee碼云地址&#xff0c;帶有PPT及流程圖 ? 以STC89C52為主控芯片&#xff0c;以矩陣鍵…

Java必須掌握的繼承的概述

Java的繼承是面向對象編程中的一個核心概念&#xff0c;它允許一個類繼承另一個類的屬性和方法。這不僅有助于代碼的重用&#xff0c;還使得代碼的管理和維護變得更加容易。在準備大廠面試時&#xff0c;理解繼承的各個方面是非常重要的。以下是一些關于Java繼承的概述和可能出…

Linux基本指令(上)

在Linux中&#xff0c;將文件夾稱為目錄&#xff0c;后面的內容都與目錄相關。 1. ls指令 語法&#xff1a; ls [選項][目錄或文件] 功能&#xff1a;對于目錄&#xff0c;該命令列出該目錄下的所有子目錄與文件。對于文件&#xff0c;將列出文件名以及其他信息。 常用選項 …

MySQL的索引和B+tree結構

目錄 0.關于索引的常見面試題 1.什么是索引&#xff1f; 索引的優缺點 2.索引的數據結構&#xff0c;為什么InnoDb引擎使用Btree作為索引的數據結構&#xff1f; 分析怎樣的索引才是好的 二插搜索樹 紅黑樹 B-Tree BTree 哈希 為什么 InnoDB 存儲引擎選擇使用 Btree 索…

iTOP-3588開發板快速測試手冊Android12系統功能測試

RK3588是一款低功耗、高性能的處理器&#xff0c;適用于基于arm的PC和Edge計算設備、個人移動互聯網設備等數字多媒體應用&#xff0c;RK3588支持8K視頻編解碼&#xff0c;內置GPU可以完全兼容OpenGLES 1.1、2.0和3.2。RK3588引入了新一代完全基于硬件的最大4800萬像素ISP&…

mac 配置faas 全局二進制命令

FaaS&#xff08;即功能即服務-Function as a Services&#xff09;是一種云計算服務&#xff0c;允許客戶執行代碼來響應事件&#xff0c;而無需管理通常與構建和啟動微服務應用程序相關的復雜基礎架構 在互聯網上托管軟件應用程序通常需要配置和管理虛擬服務器或物理服務器&…

洛谷題單_遞推與遞歸

P1255 數樓梯 - 洛谷 | 計算機科學教育新生態 (luogu.com.cn) //不滿分做法&#xff1a;沒有高精度 #include <bits/stdc.h> using namespace std; const int N5006; int dp[N];//dp[i]表示到第i節樓梯有dp[i]中方案 int main(){int n;cin>>n;dp[1]1;dp[0]1;for(i…

MySQL(基礎篇)——多表查詢

一.多表關系 一對多(多對一) 多對多一對一 1.一對多(多對一) a.案例&#xff1a;部門與員工的關系 b.關系&#xff1a;一個部門對應多個員工&#xff0c;一個員工對應一個部門 c.實現&#xff1a;在多的一方建立外鍵&#xff0c;指向一的一方的主鍵 2.多對多 a.案…

Elasticsearch入門-環境安裝ES和Kibana以及ES-Head可視化插件和瀏覽器插件es-client

Elasticsearch入門-環境安裝ES和Kibana 安裝 ES Windows安裝ESHead安裝瀏覽器插件 es-clientKibana 安裝 安裝es,安裝header 安裝kibana&#xff0c;安裝多種分詞器ik… 安裝 ES Windows安裝 ① 下載壓縮包并解壓官網鏈接&#xff1a;https://www.elastic.co/cn/downloads/ela…