服務注冊:
配置管理:
注冊中心的比較:
在微服務的世界中,服務注冊是必不可少的?,F(xiàn)在比較流行的也就是Consul和Nacos,Zookeeper沒有管理界面,一般不建議使用,而Eureka已經(jīng)處于停更,并且本身就存在很多bug,一般不建議使用!
我之前寫過一篇spring boot整合nacos實現(xiàn)服務注冊和配置管理:
springboot3整合nacos實現(xiàn)注冊中心和配置中心(詳細入門)_springboot3 nacos-CSDN博客
現(xiàn)在,就在介紹以下使用consul實現(xiàn)服務注冊和配配管理。
先簡單介紹一下Consul:
Consul 是HashiCorp公司推出的開源工具,用于實現(xiàn)分布式系統(tǒng)的服務發(fā)現(xiàn)與配置。與其它分布式服務注冊與發(fā)現(xiàn)的方案相比,Consul的方案更“一站式”,內(nèi)置了服務注冊與發(fā)現(xiàn)框架、分布一致性協(xié)議實現(xiàn)、健康檢查、Key/Value存儲、多數(shù)據(jù)中心方案,不再需要依賴其它工具(比如ZooKeeper等) ,使用起來也較為簡單。
Consul 使用Go語言編寫,因此具有天然可移植性(支持Linux,Windows和Mac OS);安裝包僅包含一個可執(zhí)行文件,方便部署,與Docker等輕量級容器可無縫配合。
Consul 官網(wǎng)介紹:
Consul Documentation | Consul | HashiCorp Developer
Consul 中文教程:
Spring Cloud中文網(wǎng)-官方文檔中文版
Spring Cloud中文網(wǎng)-官方文檔中文版
SpringCloud官網(wǎng)介紹Consul:
Spring Cloud Consul
Consul的搭建:
官網(wǎng):https://www.consul.io/downloadshttps://www.consul.io/downloads
Consul在windows下和linux下是都可以安裝的,并且基本上不用配置就能使用!
在windows下的話下載好后就是一個可執(zhí)行的exe,我們可以通過命令來查看consul是否下載成功;
consul --version
?
如果有相應的版本輸出信息,表明配置完成;(我的consul的版本為v1.17.0)
接下來啟動Consul服務:
consul agent -dev
consul的默認端口為8500,在自己的電腦上可以查看啟動的consul服務;
新建微服務項目,并導入相應的依賴;
服務注冊:
創(chuàng)建一個maven聚合項目,并在這個項目下新建一些模塊,用來進行入住consul的測試服務。
引入consul關于服務注冊的依賴:(我已經(jīng)在父工程下引入了spring cloud的依賴2022.0.4)
?
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
在yml文件中進行consul的連接配置:
?
spring:
application:
name: test-demo
cloud:
consul:
host: localhost
port: 8500
discovery:
service-name: ${spring.application.name}
prefer-ip-address: true
啟動這個服務,就可以在consul的控制臺中看到test-demo入駐到consul了。
在剛?cè)胱onsul時,consul會去發(fā)心跳包,所以會出現(xiàn)紅色的x號,可以稍等一會就可以消除了。
配置管理:
添加consul關于配置管理的依賴:
?
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
在resources目錄下新建一個bootstrap.yml文件:
applicaiton.yml是用戶級的資源配置項
bootstrap.yml是系統(tǒng)級的,優(yōu)先級更加高
Spring Cloud會創(chuàng)建一個“Bootstrap Context”,作為Spring應用的`Application Context`的父上下文。初始化的時候,`Bootstrap Context`負責從外部源加載配置屬性并解析配置。這兩個上下文共享一個從外部獲取的`Environment`。
`Bootstrap`屬性有高優(yōu)先級,默認情況下,它們不會被本地配置覆蓋。 `Bootstrap context`和`Application Context`有著不同的約定,所以新增了一個`bootstrap.yml`文件,保證`Bootstrap Context`和`Application Context`配置的分離。
?application.yml文件改為bootstrap.yml,這是很關鍵的或者兩者共存
因為bootstrap.yml是比application.yml先加載的。bootstrap.yml優(yōu)先級高于application.yml
因此,如果某些配置項需要在應用程序啟動之前加載并生效,應該將它們放在 bootstrap.yml
中。而對于應用程序級別的配置,則可以放在 application.yml
中。
bootstrap.yml中的內(nèi)容為:
?
spring:
application:
name: test-demo
cloud:
consul:
host: localhost
port: 8500
discovery:
service-name: ${spring.application.name}
prefer-ip-address: true
config:
profile-separator: '-' #默認的分隔符為 "," 我們自定義為"-"
format: yaml #文件格式為yml
接下來在consul的控制臺創(chuàng)建相應的配置文件,并在項目中進行讀取。
先創(chuàng)建一個config文件夾,在config文件夾下再創(chuàng)建一個test-demo文件夾(注意這個文件夾的名稱應與模塊的項目名稱保持一致),在test-demo文件夾下新建一個data文件,文件格式為yml類型,在這個data文件中編寫我們信息;
在項目中進行測試:
@GetMapping("/file")
public String file(@Value("${student.name}") String name){
return "配置文件中的數(shù)據(jù)==>"+name;
}
訪問相應的接口:
可以看到能正確的訪問到我們編寫的信息;
注冊中心的比較:
最多只能同時較好的滿足兩個。
?CAP理論的核心是:一個分布式系統(tǒng)不可能同時很好的滿足一致性,可用性和分區(qū)容錯性這三個需求,
因此,根據(jù) CAP 原理將 NoSQL 數(shù)據(jù)庫分成了滿足 CA 原則、滿足 CP 原則和滿足 AP 原則三 大類:
CA - 單點集群,滿足一致性,可用性的系統(tǒng),通常在可擴展性上不太強大。
CP - 滿足一致性,分區(qū)容忍必的系統(tǒng),通常性能不是特別高。
AP - 滿足可用性,分區(qū)容忍性的系統(tǒng),通??赡軐σ恢滦砸蟮鸵恍?。文章來源:http://www.zghlxwxcb.cn/news/detail-853563.html
目錄文章來源地址http://www.zghlxwxcb.cn/news/detail-853563.html
到了這里,關于springboot3整合consul實現(xiàn)服務注冊和配置管理快速入門的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!