(第四篇)spring cloud之Consul注冊中心

目錄

一、介紹

二、安裝

三、整合代碼使用

1、創建服務提供者8006

2、創建服務消費者80

3、Eureka、zookeeper和consul的異同點


一、介紹

????????Consul 是一套開源的分布式服務發現和配置管理系統,由 HashiCorp 公司用 Go 語言開發。它提供了微服務系統中的服務治理、配置中心、控制總線等功能。這些功能中的每一個都可以根據需要單獨使用

????????優點包括: 基于 raft 協議,比較簡潔; 支持健康檢查, 同時支持 HTTP 和 DNS 協議 支持跨數據中心的 WAN 集群 提供圖形界面 跨平臺,支持 Linux、Mac、Windows。

官網https://www.consul.io/intro/index.html服務發現:提供HTTP和DNS兩種發現方式。

健康檢查:支持多種方式,HTTP、TCP、Docker、Shell腳本定制化監控

kv存儲:Key、Value的存儲方式

多數據中心 以及 可視化Web界面

下載地址https://www.consul.io/downloads.html

二、安裝

下載consul文件,window雙擊,Linux先修改權限,然后./consul

查看本版信息

./consul --version

已開發模式啟動

./consul agent -dev?-ui -client=0.0.0.0

訪問:http://192.168.10.40:8500

三、整合代碼使用

1、創建服務提供者8006

(1)、創建模塊cloud-providerconsul-payment8006

(2)添加pom

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.hk.cloudstudy</groupId><artifactId>SecondSpringCloud</artifactId><version>1.0-SNAPSHOT</version></parent><groupId>com.shxls</groupId><artifactId>cloud-providerconsul-payment8006</artifactId><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><!--SpringCloud consul-server --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-consul-discovery</artifactId></dependency><!-- SpringBoot整合Web組件 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!--日常通用jar包配置--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies>
</project>

(3)添加yml文件

###consul服務端口號
server:port: 8006spring:application:name: consul-provider-payment####consul注冊中心地址cloud:consul:host: 192.168.10.40port: 8500discovery:#hostname: 127.0.0.1service-name: ${spring.application.name}heartbeat:enabled: true

(4)添加啟動類

package com.hk.cloudstudy;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication
@EnableDiscoveryClient
public class PaymentMain8006 {public static void main(String[] args) {SpringApplication.run(PaymentMain8006.class,args);}
}

(5)創建controller

package com.hk.cloudstudy.controller;import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.UUID;@RestController
public class PaymentController {@Value("${server.port}")private String serverPort;@GetMapping("/payment/consul")public String paymentInfo() {return "springcloud with consul: "+serverPort+"\t\t"+ UUID.randomUUID().toString();}
}

(6)啟動

訪問? ?http://localhost:8006/payment/consul

2、創建服務消費者80

(1)、創建服務cloud-consumerconsul-order80

(2)創建pom

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.hk.cloudstudy</groupId><artifactId>SecondSpringCloud</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>cloud-consumerconsul-order80</artifactId><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><!--SpringCloud consul-server --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-consul-discovery</artifactId></dependency><!-- SpringBoot整合Web組件 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!--日常通用jar包配置--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies></project>

(3)創建yml文件

###consul服務端口號
server:port: 80spring:application:name: cloud-consumer-order####consul注冊中心地址cloud:consul:host: 192.168.10.40port: 8500discovery:#hostname: 127.0.0.1service-name: ${spring.application.name}heartbeat:enabled: true

(4)添加啟動類

package com.hk.cloudstudy;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication
@EnableDiscoveryClient //該注解用于向使用consul或者zookeeper作為注冊中心時注冊服務
public class OrderConsulMain80 {public static void main(String[] args) {SpringApplication.run(OrderConsulMain80.class,args);}
}

(5)配置bean

package com.hk.cloudstudy.config;import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;@Configuration
public class ApplicationContextBean {@Bean@LoadBalancedpublic RestTemplate getRestTemplate() {return new RestTemplate();}
}

(6)創建controller

package com.hk.cloudstudy.controller;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;@RestController
public class OrderConsulController {public static final String INVOKE_URL = "http://consul-provider-payment";@Autowiredprivate RestTemplate restTemplate;@GetMapping(value = "/consumer/payment/consul")public String paymentInfo() {String result = restTemplate.getForObject(INVOKE_URL+"/payment/consul", String.class);System.out.println("消費者調用支付服務(consule)--->result:" + result);return result;}
}

(7)啟動調用

3、Eureka、zookeeper和consul的異同點

  • C:Consistency(強一致性)
  • A:Availability(可用性)
  • P:Partition tolerance(分區容錯性)

?CAP理論的核心是:一個分布式系統不可能同時很好的滿足一致性,可用性和分區容錯性這三個需求,因此,根據 CAP 原理將 NoSQL 數據庫分成了滿足 CA 原則、滿足 CP 原則和滿足 AP 原則三 大類:

  • CA - 單點集群,滿足一致性,可用性的系統,通常在可擴展性上不太強大。
  • CP - 滿足一致性,分區容忍性的系統,通常性能不是特別高。
  • AP - 滿足可用性,分區容忍性的系統,通常可能對一致性要求低一些。

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

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

相關文章

NAT 和 PNAT

核心概念與背景 IPv4 地址枯竭&#xff1a; IPv4 地址空間有限&#xff08;約 42.9 億個&#xff09;&#xff0c;早已分配殆盡。NAT/PNAT 是緩解此問題的最重要、最廣泛部署的技術。私有 IP 地址空間&#xff1a; IANA 保留了三個 IPv4 地址段專供私有網絡內部使用&#xff08…

windows系統創建FTP服務

一丶開啟FTP功能 控制面板->程序與功能->啟用或關閉windows功能->Internet Information Services->勾選FTP服務器二丶創建FTP服務 1丶控制面板->windows工具->Internet Information Services (IIS) 管理器2丶網站->添加FTP站點->輸入對應內容3丶點擊新…

DeepSeek補全IBM MQ 9.4 REST API 執行命令的PPT

DeepSeek補全了我在網上找到的PPT的一頁內容&#xff0c;幫了大忙了。人機協同&#xff0c;人工智能可以協助人更好的做事。下面的內容是講解IBM MQ REST API 執行IBM MQ命令的PPT: MQSC for REST Tailored RESTful support for individual MQ objects and actions are in the …

【swift】SwiftUI動畫卡頓全解:GeometryReader濫用檢測與Canvas繪制替代方案

SwiftUI動畫卡頓全解&#xff1a;GeometryReader濫用檢測與Canvas繪制替代方案一、GeometryReader的性能陷阱深度解析1. 布局計算機制2. 動畫中的災難性表現二、GeometryReader濫用檢測系統1. 靜態代碼分析器2. 運行時性能監控三、Canvas繪制優化方案1. 基礎Canvas實現2. 性能優…

悄悄話、合唱層次感:聲網空間音頻解鎖語聊新玩法

作為語聊房主播&#xff0c;我曾覺得線上相聚差點意思。多人開麥時聲音混雜&#xff0c;互動缺真實感&#xff0c;觀眾留不住&#xff0c;自己播著也沒勁。直到平臺接入聲網空間音頻&#xff0c;一切改觀&#xff0c;觀眾說像在真實房間聊天&#xff0c;留存率漲 35%&#xff0…

【工具】多圖裁剪批量處理工具

文章目錄工具核心功能亮點1. 批量上傳與智能管理2. 精準直觀的裁剪控制3. 一鍵應用與批量處理為什么這個工具能提升你的工作效率&#xff1f;統一性與一致性保證節省90%以上的時間專業級功能&#xff0c;零學習成本實際應用場景電子商務攝影工作內容創作教育領域技術優勢完全在…

如何提升需求分析能力

要系統性地提升需求分析能力&#xff0c;核心在于實現從一個被動的“需求記錄員”&#xff0c;向一個主動的、價值驅動的“業務問題解決者”的深刻轉型。要完成這一蛻變&#xff0c;必須在五個關鍵領域進行系統性的修煉與實踐&#xff1a;培養“穿透表象”的系統思維能力、掌握…

另類的pdb恢復方式

cdb中有pdb1,pdb2 需求&#xff1a;希望將在線熱備份pdb1的備份集a&#xff0c;恢復成pdb3&#xff0c;使得cdb中有pdb1,2,3 參考到的&#xff1a;RMAN備份恢復典型案例——跨平臺遷移pdb - 墨天輪 ORA-65122: Pluggable Database GUID Conflicts With The GUID Of An Existi…

HarmonyOS 實戰:用 @Observed + @ObjectLink 玩轉多組件實時數據更新

摘要 在鴻蒙&#xff08;HarmonyOS&#xff09;應用開發中&#xff0c;實時數據更新是一個繞不開的話題&#xff0c;尤其是在你封裝了很多自定義組件、需要多個組件之間共享和同步數據的場景里。過去我們可能會依賴父子組件直接傳參或全局狀態管理&#xff0c;但這樣寫會讓代碼…

云原生俱樂部-雜談2

說實話&#xff0c;雜談系列可能會比較少&#xff0c;因為畢竟大部分時間都是上的線上&#xff0c;迄今為止也是&#xff0c;和雷老師與WH的交流不是很多。這個系列僅僅是我在做其他筆記部分無聊的時候來寫的&#xff0c;內容也沒有規劃過&#xff0c;隨想隨寫。倒不是時間太多…

波浪模型SWAN學習(1)——模型編譯與波浪折射模擬(Test of the refraction formulation)

SWAN模型編譯與波浪折射模擬&#xff08;Test of the refraction formulation&#xff09;編譯過程算例簡介參數文件文件頭&#xff08;HEADING&#xff09;計算區域和網格地形數據邊界條件物理模塊設置輸出設置執行參數模擬結果由于工作原因&#xff0c;最近開始接觸波浪模型&…

更換cmd背景圖片

打開cmd 右擊頂部&#xff0c;選擇設置選擇命令提示符&#xff0c;外觀選擇背景圖像路徑更改成自己的圖片&#xff0c;然后右下角保存 設置成功

基于RobustVideoMatting(RVM)進行視頻人像分割(torch、onnx版本)

發表時間&#xff1a;2021年8月25日 項目地址&#xff1a;https://peterl1n.github.io/RobustVideoMatting/ 論文閱讀&#xff1a;https://hpg123.blog.csdn.net/article/details/134409222 RVM是字節團隊開源的一個實時人像分割模型&#xff0c;基于LSTMConv實現&#xff0c;…

強制從不抱怨環境。

警世俗語&#xff1a;強者逆襲心法&#xff08;句句穿心&#xff09;環境是泥潭&#xff1f;那就讓它開出金蓮&#xff01; —— 抱怨是弱者的裹腳布&#xff0c;行動是強者的登天梯。爛泥里也能種出搖錢樹&#xff0c;關鍵看你敢不敢下手挖&#xff01;老天爺發牌爛&#xff1…

MC0439符號統計

碼蹄集OJ-符號統計 MC0439?符號統計 難度&#xff1a;黃金 時間限制&#xff1a;1 秒 占用內存&#xff1a;256 M 收藏 報錯 在華容道放曹的緊張時刻&#xff0c;小碼哥接到了一個看似微不足道卻至關重要的任務&#xff1a;解讀一條僅由小寫英文字母組成的神秘字符串 s&#…

Android Jetpack 系列(五)Room 本地數據庫實戰詳解

1. 簡介 在需要輕量級本地持久化的場景中&#xff0c;DataStore 是一個理想的選擇&#xff08;詳見《Android Jetpack 系列&#xff08;四&#xff09;DataStore 全面解析與實踐》&#xff09;。但當你面臨如下需求時&#xff0c;本地數據庫便顯得尤為重要&#xff1a; 復雜的…

C語言實現類似C#的格式化輸出

在C#中&#xff0c;格式化輸出可以使用索引占位符以及復合格式的占位符&#xff0c;可以不用關心后面參數是什么類型&#xff0c;使用起來非常方便&#xff0c;如下簡單的示例&#xff1a; Console.WriteLine("{2} {1} {0} {{{2}}}", "Hello, World!", 1,…

一人公司方法論

** 一人公司方法論 ** 那什么是一人公司&#xff1f; 字面的理解就是一個人運營的公司&#xff0c;但實際上它指代的是比較少的人運營的小公司&#xff0c;一般來說 1 ~ 3 個人運營的公司&#xff0c;也可以把它放到一人公司的范圍以內。其他一些形式&#xff0c;比如說一個人再…

Ceph CSI 鏡像刪除流程與 Trash 機制失效問題分析文檔

#作者&#xff1a;閆乾苓 文章目錄一、問題背景二、實際行為三、源碼分析四、分析與推論五、期望行為與建議優化六、結論一、問題背景 在生產環境中&#xff0c;為避免因誤操作導致的永久數據丟失&#xff0c;Ceph RBD 提供了 Trash 功能&#xff0c;允許將鏡像“軟刪除”至回…

.NET Framework 3.5 不原生支持PreApplicationStartMethod特性

.NET Framework 3.5 不原生支持PreApplicationStartMethod特性。這個特性是在 .NET Framework 4.0 中引入的&#xff0c;用于在應用程序啟動早期執行初始化邏輯。 在.NET 3.5 中&#xff0c;如果你需要實現類似的 “應用啟動時自動注冊模塊” 功能&#xff0c;需要通過手動配置…