網(wǎng)站首頁 編程語言 正文
先思考一些問題:它是做什么的、以及怎么使用它。帶著這些問題往下走。
consul是做什么的
consul用于微服務下的服務治理。服務治理是什么?它包含但不限于:服務發(fā)現(xiàn)、服務配置、健康檢查、鍵值存儲、安全服務通信、多數(shù)據(jù)中心等。
為什么需要服務治理?舉個例子:最開始的服務比較簡單,各服務之間通過API就能訪問。后面業(yè)務復雜了,服務也跟著復雜了,搞分布式了,而分布式又必然是多服務器部署,這就有一個問題:如果服務之間還是用API訪問,那某個服務所在的服務器掛掉以后這個服務就不能用了,也不能自動轉(zhuǎn)移,那么只能人肉運維了。這時候大家在想:如果下游調(diào)用上游,只需要一個統(tǒng)一的地址,不用關(guān)注負載均衡、節(jié)點失效之類的問題,也不用關(guān)注可用性,這些都有一個中間件來完成,那該有多好。這個中間件要做的事情,就是服務治理,也就是本文的consul,它就是解決這個事的。但其實也不是只有它能做這個事,zooKeeper、etcd也能做這個事,也沒有什么高下之分,用什么主要看自己,看公司。對自己來說,哪個摸得透、玩的熟就用哪個。對公司來說,哪個市場認可度高就用哪個,說白了就是哪個用的人多。用的人多會的人就多,招人換人速度就快了,互聯(lián)網(wǎng)企業(yè)追求的不就是速度么?“時間就是金錢,效率就是生命”,這句話早期在深圳隨處可見,至今仍然適用。
題外話有點多,接著往下走。
怎么使用consul
這里只講docker內(nèi)的consul。首先下載一個鏡像:
dokcer pull consul
然后運行起來:
docker run -itd -p 8700:8500 --name myconsuldemo consul
成功運行后能看到如下頁面:
tips:consul的默認端口是8500,docker啟動可以映射到任意端口。
服務注冊
服務發(fā)現(xiàn)的概念,簡單來說就是所有節(jié)點程序啟動時都去consul注冊一下,注冊后的信息統(tǒng)一保存在consul中以供調(diào)用。是不是很簡單?
現(xiàn)在net core 3.1下完成consul服務注冊。
首先需要添加nuget包:
然后自行封裝一個注冊服務,節(jié)省時間先上源碼:
public static void Reg(IConfiguration configuration) { string ip = configuration.GetSection("ip").Value.ToString(); string port = configuration.GetSection("port").Value.ToString(); string weight = configuration.GetSection("weight").Value.ToString(); string address = configuration.GetSection("address").Value.ToString();//consul的啟動地址 string center = configuration.GetSection("center").Value.ToString();//數(shù)據(jù)中心名稱 ConsulClient client = new ConsulClient(x => { x.Address = new Uri(address); x.Datacenter = center; }); client.Agent.ServiceRegister(new AgentServiceRegistration() { ID = $"server {ip}:{port}", Name = "shenzhen-ma",//分組名稱 Address = ip, Port = int.Parse(port) }); }
配置文件:
{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } }, "AllowedHosts": "*", "ip": "127.0.0.1", "port": 5100, "weight": 1,//權(quán)重,負載均衡的重要參數(shù) "address": "http://127.0.0.1:8700",//consul地址 "center": "dc1"http://數(shù)據(jù)中心 }
最后,這個服務需要在程序啟動的時候調(diào)用,只一次就好。直接把調(diào)用放在startup里就好,這樣程序啟動的時候就會自動注冊一個服務。
為了能夠動態(tài)修改配置文件,接下來通過控制臺啟動程序:
dotnet run --urls="http://*:5000" --ip="127.0.0.1" --port=5000
啟動成功以后,轉(zhuǎn)到consul的ui看一下:
能看到多了一個分組【shenzhen-ma】,點進去看下我們的服務:
127.0.0.1:5000,沒毛病。這時候模擬一下多節(jié)點,再多啟動兩個程序試試看:
5001,5002也自動注冊進入了這個分組。
原文鏈接:https://www.cnblogs.com/muchengqingxin/p/15007491.html
相關(guān)推薦
- 2023-03-18 pandas預處理部分地區(qū)數(shù)據(jù)案例_python
- 2022-10-18 filebeat同時收集錯誤日志與普通日志并存詳解_nginx
- 2023-07-22 macos設置環(huán)境變量path詳解
- 2022-09-04 Python?Matplotlib繪制箱線圖boxplot()函數(shù)詳解_python
- 2022-12-09 C++?opencv學習之圖像像素的邏輯操作_C 語言
- 2023-01-11 Rust結(jié)構(gòu)體的定義與實例化詳細講解_Rust語言
- 2023-07-07 electron 運行以及打包超時解決方法
- 2022-05-15 Python使用chrome配置selenium操作詳解_python
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支