摘要:最近在公司調研集群方案,涉及到這一層,有兩個可選方案,源于的源于的因為對實現的比較有好感,就主要調研了下。介紹項目地址來源于,后文簡稱為。官方地址項目地址架構中所處的位置無論是在還是在我們設計的容器體系中,都是作為流量入口存在。
最近在公司調研docker集群方案,涉及到 router這一層,有兩個可選方案,源于cloudfoundry的gorouter & 源于dotcloud的 hipache, 因為對golang實現的gorouter比較有好感,就主要調研了下。
gorouter介紹項目地址:https://github.com/cloudfoundry/gorouter/
Gorouter來源于CloudFoundry,后文簡稱為router。它是整個平臺的流量入口,負責分發所有的http請求到對應的instance。它在內存中維護了一張路由表,記錄了域名與實例的對應關系,所謂的實例自動遷移,靠得就是這張路由表,某實例宕掉了,就從路由表中剔除,新實例創建了,就加入路由表。
Go
Gorouter使用golang編寫,因此環境需要預先安裝go編譯環境
Golang Url:https://golang.org/dl/
Gnatsd
來源cloudfoundry,是一個開源輕量高性能的消息系統,gorouter依賴它來作為消息系統,進行PUB/SUB操作。
官方地址:http://nats.io/
項目地址:https://github.com/apcera/gnatsd
無論是在cloudfoundry還是在我們設計的容器體系中,都是作為流量入口存在。
在CloudFoundry架構中的位置:
在設計的容器方案中的位置:
需要了解兩個組件的性能,一個是gorouter本身,另一個是他依賴的Gnatsd,總體感覺性能不錯。
Gorouter,官網沒有它的proxy性能數據,只是說它的邏輯簡單,性能很好,后期可以專門對它的轉發性能做一下測試。
Gnatsd:性能數據來自其官方:
Gorouter部署With gnatsd (Golang-based server), NATS can send up to 6 MILLION MESSAGES PER SECOND.
Here"s a detailed Performance Comparison between NATS, Redis, NSQ, RabbitMQ, and more. The below chart compares throughput for 4k payloads:
一個比較典型的gorouter部署架構為:
其中,需要關注的是RouteFlush這一塊,他的作用是將需要進行proxy的uri rule publish給gnatsd,從而使gorouter可以從gnatsd處sub到&生效,同時,以一定的頻率對現有rule進行publish 刷新,因為gorouter只對rule保留時間T(在config中配置,默認120s)。
Routeflush需要自行實現。
Goroute監聽router.register、router.unregister等幾個頻道。
Publish router.register&router.unregister的數據體格式為:
{ "host": "127.0.0.1", //后端映射的host "port": 4567, //后端映射的port "uris": [ "my_first_url.vcap.me", //對應的域名1 "my_second_url.vcap.me" //對應的域名2 ], "tags": { "another_key": "another_value", "some_key": "some_value" }, "app": "some_app_guid",//app id "private_instance_id": "some_app_instance_id" // instance id }
gorouter自帶兩個http終端:
/varz: 自身狀態監控
/routes: 目前承載的proxy rules list
具體說明&config說明見官方說明:https://github.com/cloudfoundry/gorouter
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/26403.html
摘要:基于年底或年初沒有推廣的現狀,唯品會部門目前已經做了兩年的時間。唯品會現狀唯品會目前線上有一千多個域,每個域之間相互的依賴比較復雜,每次的部署發布困難。這是唯品會的架構,主要包含持續集成和持續部署。 數人云上海&深圳兩地容器之Mesos/K8S/Swarm三國演義的嘉賓精彩實錄第三更來啦。唯品會是數人云Meetup的老朋友,去年曾做過RPC服務框架和Mesos容器化的分享。本次分享中,...
摘要:健康監控檢查,可以說是集群中最重要的一部分了。我們在這里沒有使用推薦的方式,我們自己將其與內部的系統做了結合,通過來對整個集群進行監控報警自動化操作。 在公司內部,基于kubernetes實現了簡單的docker應用集群系統,拿出來和大家分享下,在這個系統中,實現了應用的自動部署、動態擴容、節點切換、健康檢查、AB式版本更新等功能,也歡迎大家將各自的實現也分享給我。 整體架構 整體架構...
摘要:健康監控檢查,可以說是集群中最重要的一部分了。我們在這里沒有使用推薦的方式,我們自己將其與內部的系統做了結合,通過來對整個集群進行監控報警自動化操作。 在公司內部,基于kubernetes實現了簡單的docker應用集群系統,拿出來和大家分享下,在這個系統中,實現了應用的自動部署、動態擴容、節點切換、健康檢查、AB式版本更新等功能,也歡迎大家將各自的實現也分享給我。 整體架構 整體架構...
摘要:組件成為前端最基本的物料,融合在組件中的方案日趨成熟。組件成為最基本的前端物料,讓組件化更徹底在的調研報告中,開發者有愿意繼續,有愿意繼續。需要留意的是,有表示對感興趣,因此獲得的最感興趣獎。 簡介: JavaScript 應用范圍廣泛,靜態類型語言 TypeScript 會繼續得到更多開發者的青睞。 組件成為前端最基本的物料,CSS 融合在組件中(CSS in JS)的方案日趨成熟...
閱讀 654·2019-08-30 15:44
閱讀 1381·2019-08-30 11:02
閱讀 2980·2019-08-29 18:42
閱讀 3506·2019-08-29 16:16
閱讀 1720·2019-08-26 13:55
閱讀 1769·2019-08-26 13:45
閱讀 2385·2019-08-26 11:43
閱讀 3247·2019-08-26 10:32