日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

深入学习consul

發布時間:2024/1/17 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深入学习consul 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

一.背景

——隨著互聯網的發展,越來越多的系統/網站走向了分布式之路,但是分布式帶給我們的復雜性是難以想象的,這就需要專門有第三方統一管理微服務、配置、資源等。

第三方系統必須要具有下面兩個特征:

1.集群部署

2.數據一致性

?

——目前業內有很多這種產品:zookeeper、etcd、consul,三者各有各的特點。這里就不一一說明三者的優缺,僅僅分析consul的優勢

1.封裝了服務發現的api,開發調用非常簡單

2.提供了健康檢查功能

3.使用了raft算法保證了一致性,比復雜的paxos算法更直接,相比而言,zk采用的是paxos,二etcd采用的是raft

4.支持多數據中心,保證多機房使用。

5.支持 http?和 dns 協議接口.,zookeeper 的集成較為復雜,,etcd 只支持 http 協議

6.官方提供web管理界面, etcd 無此功能

?

二:consul的基本概念

agent
組成 consul 集群的每個成員上都要運行一個 agent,可以通過 consul agent 命令來啟動。agent 可以運行在 server 狀態或者 client 狀態。自然的,運行在 server 狀態的節點被稱為 server 節點;運行在 client 狀態的節點被稱為 client 節點。

client 節點
負責轉發所有的 RPC 到 server 節點。本身無狀態,且輕量級,因此,可以部署大量的 client 節點。

server 節點
負責組成 cluster 的復雜工作(選舉、狀態維護、轉發請求到 lead),以及 consul 提供的服務(響應 RCP 請求)。考慮到容錯和收斂,一般部署 3 ~ 5 個比較合適。

?

datacenter

多機房使用的數據共享

?

基本架構圖

?

三.安裝和啟動

consul支持Mac os ? 、Linux、Windows等常用操作系統,下載地址:點擊下載??

consul可以配置其web ui查看當前的服務 ?key/value ? 數據節點等

web-ui下載地址:點擊下載
下載后解壓,直接運行

consul需要用agent啟動,啟動模式可以是server和client
以window單機啟動server為例:
配置config.conf文件

{??"datacenter":"dc1",//數據中心名稱??"data_dir":?"D:\\consul\\consul\\data",//數據存儲目錄??"log_level":?"INFO",//日志級別??"node_name":?"node1",//server節點名稱??"server":?true,//是否開啟服務模式??"ui":true,//是否開啟web-ui??"bind_addr":"192.168.100.110",//綁定的地址??"bootstrap":true,//引用啟動??"ui_dir":?"D:\\consul\\consul\\webui"//web-ui地址?? }?

進入consul根目錄 ?啟動命令:consul.exe agent -config-file config.conf
啟動成功后,瀏覽器打開http://127.0.0.1:8500/ui/ 可以看到整個consul的所有信息


如果需要配置集群的話
server node1 配置信息

{??"datacenter":"dc1",??"log_level":?"INFO",??"node_name":?"node1",??"server":?true,??"ui":true,??"bind_addr":"192.168.100.110",??"cluster_addr":"10.10.105.71",??"bootstrap":true,??"join":"10.10.105.72"??"ui_dir":?"D:\\consul\\consul\\webui"?? }??


server node2 配置信息

{??"datacenter":"dc1",??"log_level":?"INFO",??"node_name":?"node2",??"server":?true,??"ui":true,??"bind_addr":"192.168.100.111",??"cluster_addr":"10.10.105.72",??"bootstrap":true?? }??


啟動兩個節點 ?啟動命令:consul.exe agent -config-file config.conf

這樣就完成了集群部署

打開consul的web-ui :http://127.0.0.1:8500/

?

四.服務注冊與發現的兩種方式

——Consul支持兩種服務注冊的方式,一種是通過Consul的服務注冊HTTP API,由服務自身在啟動后調用API注冊自己,另外一種則是通過在配置文件中定義服務的方式進行注冊。Consul文檔中建議使用后面一種方式來做服務 配置和服務注冊。

?

1.1首先我們來了解用配置注冊服務

創建一個叫redis-server1.json文件

[html]?view plain?copy

  • {??
  • ??"service":?{??
  • ????"name":?"redis-server1",??
  • ????"tags":?["master"],??
  • ????"address":?"127.0.0.1",??
  • ????"port":?6379,??
  • ????"checks":?[??
  • ??????{??
  • ????????"http":?"http://localhost:6379",??
  • ????????"interval":?"10s"??
  • ??????}??
  • ????]??
  • ??}??
  • }??
  • 再創建一個client節點

    [html]?view plain?copy

  • {??
  • ??"datacenter":"dc1",??
  • ??"log_level":?"INFO",??
  • ??"node_name":?"node3",??
  • ??"server":?false,??
  • ??"bind_addr":"192.168.100.112",??
  • ??"config_dir":"./conf"??
  • }??
  • 把json文件放到conf文件夾下面,利用consul.exe agent -config-file config.conf ,client注冊一個redis服務。
    json文件定義中包含服務的name、address、port等,還包含一個服務檢測的配置,這里 我們每隔10s對服務進行一次健康檢查。同理,我們可以在其它節點上也建立同樣配置文件(需重啟,并帶上 -config-dir命令行選項),服務注冊就這么簡單。


    1.2使用java代碼注冊服務

    首先利用maven把封裝consul的客戶端jar包導入

    [html]?view plain?copy

  • <dependency>??
  • ?????<groupId>com.orbitz.consul</groupId>??
  • ??????<artifactId>consul-client</artifactId>??
  • ??????<version>0.12.3</version>??
  • </dependency>??
  • 注冊代碼:

    [java]?view plain?copy

  • Consul?client?=?Consul.builder().build();??
  • String?serviceName?=?UUID.randomUUID().toString();??
  • String?serviceId?=?UUID.randomUUID().toString();??
  • client.agentClient().register(8080,?new?URL("http://localhost:1337/health"),?1000L,?serviceName,?serviceId);??
  • 這樣就完成了服務注冊,并且添加了健康檢查的url,比較簡單。

    ?

    ——同樣Consul提供了兩種發現服務的方式,一種是通過HTTP API查看存在哪些服務;另外一種是通過consul agent內置的DNS服務來做。兩者的差別在于后者可以根據服務check的實時狀態動態調整available服務節點列表。

    ?

    2.1.DNS發現服務

    在配置和部署完client服務后,我們就可以通過DNS命令來查詢服務的具體信息了。consul為服務編排的內置域名為 “NAME.service.consul",這樣我們的redis的域名為:redis.service.consul 進行查詢服務

    ?

    2.2.java代碼發現服務

    [java]?view plain?copy

  • HealthClient?healthClient?=?Consul.newClient().healthClient();??
  • ConsulResponse<List<ServiceHealth>>?response?=?client2.healthClient().getHealthyServiceInstances(serviceName);//獲取健康的服務??
  • ServiceHealthCache?svHealth?=?ServiceHealthCache.newCache(healthClient,?serviceName);//創建今天服務??
  • svHealth.start();//開始監聽服務??
  • 上面用代碼實現了服務的發現,其發現是排除了一些不健康的服務,這正是consul最大的優點,使得服務變化通知更加簡單。


    這里分析下consul和zookeeper服務變更通知的區別:

    zookeeper:客戶端和服務端通過建立tcp長連接進行服務變更通知,一旦服務端有服務變化,通過socket發送消息給客戶端。優點是簡單,服務端主動推送消息到客戶端,缺點是長連接往往不穩定,鏈路斷開,客戶端經常收不到服務端推送的消息。

    ?

    consul:是基于http協議,客戶端通過http api主動查詢服務,如果有變更則返回服務信息,我們都知道http是一個request,一個response,而consul怎樣保證服務端一有變更馬上response到客戶端呢,這里consul解決方案是:1輪循;2阻塞查詢,通過輪循調用服務端,并且不及時返回服務信息,而是等待一定時間在返回,在規定時間內如果有服務變更則馬上返回變更信息,這樣就客戶端就可以及時的知道服務變更。

    ?

    ?

    五.consul的其它使用

    ——consul做為分布式框架絕不僅僅滿足服務注冊和發現,它還可以

    ?

    1.分布式key/value,用于做配置中心。

    2.分布式session,用于解決session的問題。

    3.分布式鎖,其key/value也可以用于分布式鎖的問題

    4.資源中心,動態管理redis、datasource、rabbitmq等資源

    轉載于:https://my.oschina.net/mickelfeng/blog/1791719

    總結

    以上是生活随笔為你收集整理的深入学习consul的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 国产精品九九 | 先锋影音av中文字幕 | 国产精品久久久久久久免费看 | 成人免费无码大片a毛片抽搐色欲 | 尹人综合在线 | 亚洲欧美日韩高清 | 美国黄色一级视频 | 亚洲成人第一 | 日韩成年视频 | 中文字幕av免费 | 福利色导航 | 久久久九九九热 | 九九国产| 五月深爱网 | 青青青在线 | 黄色a一级视频 | 日本不卡一区二区三区在线观看 | 尤物91| 天天干狠狠干 | jizz欧美性11| 妺妺窝人体色www在线小说 | 精品一区二区三区四区五区 | 亚洲精品在线播放视频 | 国产午夜视频在线观看 | 色桃网 | 91麻豆精品久久久久蜜臀 | 中文字幕免费播放 | 雪白的扔子视频大全在线观看 | 最近中文在线观看 | 丁香花电影高清在线阅读免费 | 国产婷婷色一区二区在线观看 | 国产精品嫩草影院精东 | 天天插日日干 | 国产日韩一区二区在线 | 波多野结衣视频免费 | 天天干天天舔 | 国产一区二区黄 | 免费a在线观看 | 96在线视频 | 中文字幕天堂 | 少妇与公做了夜伦理69 | 高清精品xnxxcom | 国产一区二区三区视频在线 | 日韩av电影手机在线观看 | 国产三级在线观看完整版 | 国产大片中文字幕在线观看 | 少妇被躁爽到高潮 | 一区二区三区亚洲 | 成人私密视频 | 99精品免费在线观看 | 美女黄色免费网站 | www婷婷av久久久影片 | 色情毛片| 日本加勒比一区 | 色噜噜狠狠一区二区三区果冻 | 一区二区三区在线播放视频 | 亚洲综合图片网 | 狼性av懂色av禁果av | 日韩美女视频在线 | 人人草在线 | 亚洲精品久久久久久久久久久久久 | 性生活免费网站 | 爱逼av| 日韩欧美国产中文字幕 | 精品91自产拍在线观看二区 | 日本一二区视频 | 超碰免费公开在线 | av三级网站 | 日本亲子乱子伦xxxx50路 | 四虎在线网址 | 韩国在线不卡 | 日韩欧美色图 | 天天摸天天干 | 18禁免费无码无遮挡不卡网站 | 欧美福利片在线观看 | 99久久久无码国产精品免费蜜柚 | 国产伦精品一区二区三区视频黑人 | 宇都宫紫苑在线播放 | 欧美一级黄| 九九九九九九精品 | 三上悠亚中文字幕在线播放 | 国产乱码精品一区二三区蜜臂 | 欧美一区二区免费在线观看 | 九九在线观看视频 | 伊人99 | 被黑人各种姿势猛c哭h文1 | 窝窝午夜看片 | 香蕉视频免费在线看 | 黑人玩弄人妻一区二区三区四 | 二区中文字幕 | 欧美日韩国产免费 | 性欧美在线观看 | 熟女精品一区二区三区 | 97人人爽人人爽人人爽人人爽 | 欧美日韩极品 | 香蕉在线观看视频 | 国产精品电影一区 | 亚洲黄av | 亚洲欧洲免费无码 |