亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

SpringBoot + Spring Cloud Consul 服務注冊和發現詳細解析

瀏覽:5日期:2023-08-25 09:41:25

SpringBoot + Spring Cloud Consul 服務注冊和發現詳細解析

什么是Consul

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

Consul安裝

官網(consul.io)最新版本1.8.0 提供了MacOS,Windows, Linux, 如果你不知道怎么安裝,官方還提供了視頻。

SpringBoot + Spring Cloud Consul 服務注冊和發現詳細解析

我這里使用docker安裝,安裝過程總結起來為三句話:

docker search consuldocker pull consul docker run --name consul -d -p 8600:8500 consul

沒問題的話,本機訪問http://localhost:8600則可以打開consul自帶的管理系統,默認情況下沒有服務注冊進來

SpringBoot + Spring Cloud Consul 服務注冊和發現詳細解析

準備工作新建父工程, 主要約定SpringCloud, SpringBoot版本號,我使用的是Hoxton.SR1, SpringBoot2.2 新建3個子Module,這里兩個service,一個consumer, 兩個service我用8001和8002端口來區分,主要是想在服務消費時反應客戶端負載均衡。

項目結構如下圖

SpringBoot + Spring Cloud Consul 服務注冊和發現詳細解析

父工程pom.xml

<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.2.2.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Hoxton.SR1</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>

服務提供者

服務注冊中心有了,那么我們來開發兩個服務提供者,這里新建了兩個Module,端口8001和8002。兩個Module代碼相同,主要為了演示負載使用。

新建Module,添加spring-cloud-starter-consul-disconvery依賴

SpringBoot + Spring Cloud Consul 服務注冊和發現詳細解析

pom.xml

<dependencies> <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> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-consul-discovery</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency> </dependencies>

添加配置(application.yml)

server: port: 8001spring: application: name: consul-student-service cloud: consul: port: 8600 host: 127.0.0.1 discovery: service-name: ${spring.application.name}

修改啟動類,添加服務

這里我直接寫了一個測試接口放在啟動類里。這里我只貼了端口8001的代碼,8002代碼結構相同,只是端口不同。

@SpringBootApplication@EnableDiscoveryClient@RestControllerpublic class ConsulStudentService8001 { public static void main(String[] args) { SpringApplication.run(ConsulStudentService8001.class,args); } @GetMapping('/student/version') public String version(){ return '8001,202007222300'; }}

OK,到這一步,啟動兩個服務,不出異常的情況下,可在注冊中心查看當前的服務實例。

SpringBoot + Spring Cloud Consul 服務注冊和發現詳細解析SpringBoot + Spring Cloud Consul 服務注冊和發現詳細解析SpringBoot + Spring Cloud Consul 服務注冊和發現詳細解析

Consul消費者

服務注冊中心有了,服務提供者也有了,我們再來開發一個服務消費者。

新建Module,同樣添加spring-cloud-starter-consul-disconvery依賴

pom.xml

<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-consul-discovery</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency> </dependencies>

添加配置(application.yml)

server: port: 8080spring: application: name: consul-student-consumer cloud: consul: host: 127.0.0.1 port: 8600 discovery: service-name: ${spring.application.name} # 不需要注冊到consul中 register: false

修改啟動類,調用服務

開發RestTemplate配置類,調用REST接口時使用。

@Configurationpublic class ApplicationContextConfig { @Bean @LoadBalanced public RestTemplate restTemplate(){ return new RestTemplate(); }}

修改啟動類

@SpringBootApplication@EnableDiscoveryClient@RestControllerpublic class ConsulStudentConsumer { public static void main(String[] args) { SpringApplication.run(ConsulStudentConsumer.class,args); } @Autowired RestTemplate restTemplate; @GetMapping('/consul/student/version') public String version(){ //這里使用服務實例名調用REST接口 return restTemplate.getForObject('http://consul-student-service/student/version',String.class); }}

OK, 這一步完成之后,可以啟動消費者接口,刷新幾次,從返回結果上能看出來是輪訓調用服務提供者接口實例。

到此這篇關于SpringBoot + Spring Cloud Consul 服務注冊和發現詳細解析的文章就介紹到這了,更多相關SpringBoot Spring Cloud Consul 服務注冊內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
主站蜘蛛池模板: 日韩免费一级毛片 | 久久国产精品老人性 | 外国毛片视频 | 欧美三级蜜桃2在线观看 | 激情五月色婷婷色综合 | 日本免费人成黄页网观看视频 | 视频在线观看91 | 91免费看视频 | 日韩一区二区三区免费 | 成人精品视频在线观看播放 | 中国一级特黄真人毛片免 | 亚洲国产精品综合久久网络 | 国产91小视频 | 麻豆传媒最新网址 | 国产精品国产三级国产普通话对白 | 亚洲国产精品区 | 国产欧美一区二区三区免费 | 三级黄色片a | 欧美日韩国产一区二区三区 | 亚洲欧美日韩国产精品第不页 | 国产一在线精品一区在线观看 | 手机看片1024久久香蕉 | 国产私密视频 | 国产一级在线播放 | 午夜精品久久久久久91 | 亚洲一二三区久久五月天婷婷 | 亚洲精品免费视频 | 国产精品久久久久天天影视 | 欧美一级片毛片免费观看视频 | 91精品国产手机 | 91一区二区在线观看精品 | 簧片免费网站 | 看亚洲a级一级毛片 | 亚洲精品亚洲人成在线播放 | 美女扒开胸罩露出奶了无遮挡免费 | 亚洲精国产一区二区三区 | 国产亚洲第一伦理第一区 | 国产大秀视频一区二区三区 | 国产黄色a级 | 久久免费精品 | 毛片最新网址 |