自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

京東架構(gòu)師“強(qiáng)娃”對(duì)CloudFoundry的架構(gòu)優(yōu)化

云計(jì)算
本人作為京東云擎(JAE)的架構(gòu)師,在從事云平臺(tái)特別是PASS平臺(tái)的架構(gòu)、開(kāi)發(fā)多年,有一些體會(huì)以及一些解決方案。下面,我想對(duì)開(kāi)源PaaS框架CloudFoundry的一個(gè)NATS單節(jié)點(diǎn)的問(wèn)題發(fā)表一下個(gè)人看法

 本人作為京東云擎(JAE)的架構(gòu)師,在從事云平臺(tái)特別是PASS平臺(tái)的架構(gòu)、開(kāi)發(fā)多年,有一些體會(huì)以及一些解決方案。下面,我想對(duì)開(kāi)源PaaS框架CloudFoundry的一個(gè)NATS單節(jié)點(diǎn)的問(wèn)題發(fā)表一下個(gè)人看法。目前京東云擎也是基于這種方案來(lái)實(shí)現(xiàn),大大減小了NATS 單節(jié)點(diǎn)的風(fēng)險(xiǎn)問(wèn)題,避免了單個(gè)NATS節(jié)點(diǎn)掛掉而導(dǎo)致整個(gè)云擎無(wú)法運(yùn)行的情況發(fā)生,從而提高云擎的高可靠性。

為了避免有宣傳個(gè)人之嫌疑,希望小編屏蔽自己的名字,改用本人之“藝名”--- 強(qiáng)娃。

一、概述

云擎是基于CloudFoundry(后文統(tǒng)一使用CF作為簡(jiǎn)稱)開(kāi)源系統(tǒng)進(jìn)行二次開(kāi)發(fā)的,我們利用CF開(kāi)源系統(tǒng)的基本框架,然后整合了京東自己的各個(gè)云服務(wù)產(chǎn)品,并且根據(jù)需求開(kāi)發(fā)了智能路由、彈性伸縮、智能啟動(dòng)和資源隔離等擴(kuò)展功能。

CF開(kāi)源系統(tǒng)作為一個(gè)通用的PaaS平臺(tái)解決方案,很好的滿足了大部分基本需求,但是要打造一個(gè)高可靠的PaaS平臺(tái),還需要做很多架構(gòu)容錯(cuò)和改進(jìn)。

CF由很多組件構(gòu)成,有一些核心組件是必不可少的,還有很多可選組件可以根據(jù)需求選擇性使用。其中NATS、Router和Cloudontroller三個(gè)組件更是整個(gè)CF的最關(guān)鍵的組件,其中任何一個(gè)組件不可用都會(huì)導(dǎo)致整個(gè)PaaS平臺(tái)不可用,所以這三個(gè)組件的容錯(cuò)顯得更加重要。 Router的容錯(cuò)可以VIP實(shí)現(xiàn),Cloudontroller本身通過(guò)Router的軟域名映射進(jìn)行容錯(cuò)。NATS作為整個(gè)CF各個(gè)組件的連接樞紐,一旦不可用所有CF組件都出問(wèn)題,所以NATS的重要性不言而喻,但是目前業(yè)界普遍使用單實(shí)例。雖然NATS的穩(wěn)定性不容置疑,但是不能解決由于網(wǎng)絡(luò)、服務(wù)器硬件故障和操作系統(tǒng)故障導(dǎo)致的不可用,特別是由于服務(wù)器不可用導(dǎo)致的故障,恢復(fù)成本很高,時(shí)間也是很長(zhǎng)的。開(kāi)源的NATS組件也有集群版本,但是普遍反映不夠穩(wěn)定,都沒(méi)有在生產(chǎn)環(huán)境使用。本人表達(dá)一下對(duì)NATS升級(jí)改造的一點(diǎn)看法。

二、NATS集群化方案設(shè)計(jì)

為了提高京東云擎的可靠性,京東云擎團(tuán)隊(duì)基于GO語(yǔ)言版本的NATS設(shè)計(jì)并實(shí)現(xiàn)了NATS的集群化方案,這個(gè)方案在預(yù)發(fā)布環(huán)境運(yùn)行了一個(gè)月,現(xiàn)在也正式上線,表現(xiàn)都非常穩(wěn)定。下面就對(duì)我們的NATS集群化方案和實(shí)現(xiàn)進(jìn)行闡述。

首先看看NATS集群化方案的架構(gòu)圖,如下:

 

通過(guò)上面的架構(gòu)圖可以知道,NATS服務(wù)器各個(gè)節(jié)點(diǎn)采用了zookeeper進(jìn)行心跳存活的管理,這樣可以保證所有NATS客戶端獲取到的NATS服務(wù)器節(jié)點(diǎn)都是存活的;NATS服務(wù)器各個(gè)節(jié)點(diǎn)直接也會(huì)相互通信,主要是保證訂閱信息的同步。

這個(gè)NATS集群化方案有如下優(yōu)點(diǎn):

(1)方便的橫向擴(kuò)展,隨時(shí)上線下線NATS服務(wù)器節(jié)點(diǎn);

(2)通過(guò)zookeeper管理NATS服務(wù)器節(jié)點(diǎn)的存活,保證了客戶端得到的NATS服務(wù)器實(shí)例都是可用的;

(3)通過(guò)最多兩次的消息轉(zhuǎn)發(fā),極大的提高了消息轉(zhuǎn)發(fā)的性能。

三、NATS集群化方案實(shí)現(xiàn)

NATS集群化實(shí)現(xiàn)的難點(diǎn)主要在于怎樣保證消息的訂閱與發(fā)布能夠在各個(gè)NATS節(jié)點(diǎn)之間進(jìn)行同步。下面分別從NATS服務(wù)器節(jié)點(diǎn)啟動(dòng)、訂閱消息、發(fā)布消息和NATS客戶端改進(jìn)等方面說(shuō)明NATS集群化方案的實(shí)現(xiàn)。

1. NATS服務(wù)器節(jié)點(diǎn)啟動(dòng)

為了保證各個(gè)NATS服務(wù)器節(jié)點(diǎn)訂閱信息的同步,啟動(dòng)一個(gè)NATS服務(wù)器節(jié)點(diǎn)的時(shí)候需要判斷是否已存在其他NATS服務(wù)器節(jié)點(diǎn),如果存在那么需要連接其他NATS服務(wù)器節(jié)點(diǎn)進(jìn)行訂閱消息的同步。NATS服務(wù)器節(jié)點(diǎn)的各個(gè)功能或者服務(wù)初始化完畢以后將自己的地址以臨時(shí)節(jié)點(diǎn)的方式注冊(cè)到zookeeper集群中,這樣就可以開(kāi)始對(duì)外提供服務(wù)了。

2. 消息訂閱

集群化版本的NATS對(duì)于NATS客戶端發(fā)布訂閱消息是透明的,即不管NATS客戶端選擇的哪一個(gè)NATS服務(wù)器節(jié)點(diǎn)都只需要向這一臺(tái)進(jìn)行消息訂閱與發(fā)布。

NATS服務(wù)器節(jié)點(diǎn)收到訂閱消息以后,首先加入自己的消息訂閱隊(duì)列,然后廣播到其他NATS服務(wù)器節(jié)點(diǎn),在廣播的時(shí)候做了一點(diǎn)點(diǎn)優(yōu)化,就是看這個(gè)主題的消息訂閱是否已經(jīng)被廣播過(guò)了,那么就不需要重復(fù)廣播,防止訂閱信息過(guò)多,并且這些都是不需要的垃圾訂閱消息。

最后如果某一個(gè)客戶端取消訂閱消息,同樣需要廣播取消訂閱消息。

3. 消息發(fā)布

NATS服務(wù)器節(jié)點(diǎn)接收到NATS客戶端發(fā)布的消息以后,還是首先根據(jù)消息訂閱列表進(jìn)行轉(zhuǎn)發(fā),和單機(jī)NATS不同的是,這次轉(zhuǎn)發(fā)可能會(huì)轉(zhuǎn)發(fā)到其他NATS服務(wù)器節(jié)點(diǎn),只要其他NATS服務(wù)器節(jié)點(diǎn)也有同樣的消息主題訂閱,那么這種情況就存在一次中間轉(zhuǎn)發(fā)的過(guò)程,但是也最多只存在一次中間轉(zhuǎn)發(fā)過(guò)程,所以性能基本上不受什么影響。

4. NATS客戶端改進(jìn)

NATS客戶端的改進(jìn)主要是支持從zookeeper集群上獲取NATS服務(wù)器的節(jié)點(diǎn)地址,并且能夠兼容以前老的直接配置某一個(gè)NATS服務(wù)器節(jié)點(diǎn)地址。當(dāng)客戶端第一次連接NATS服務(wù)器節(jié)點(diǎn)時(shí),需要從zookeeper集群獲取所有可用的NATS服務(wù)器節(jié)點(diǎn)地址并且緩存到本地,然后隨機(jī)選擇一個(gè)NATS服務(wù)器節(jié)點(diǎn)建立連接并且進(jìn)行消息訂閱與發(fā)布。緩存所有NATS服務(wù)器節(jié)點(diǎn)地址主要是防止zookeeper不可用的時(shí)候并且NATS服務(wù)器節(jié)點(diǎn)有掛掉的情況不影響客戶端切換NATS服務(wù)器節(jié)點(diǎn),在切換的時(shí)候需要把NATS客戶端以前訂閱的消息全部重新訂閱一次。

四、其他改進(jìn)

本次針對(duì)NATS單點(diǎn)問(wèn)題進(jìn)行整個(gè)京東云擎的架構(gòu)升級(jí),完成升級(jí)以后整體運(yùn)行很穩(wěn)定。不過(guò)除了NATS集群化,本次架構(gòu)升級(jí)還做了其他很多改進(jìn),本次架構(gòu)升級(jí)主要目的是讓京東云擎具有高可靠。下面在簡(jiǎn)單介紹本次架構(gòu)升級(jí)其他方面的改進(jìn):

(1)使用分布式文件系統(tǒng)替換原來(lái)的單磁盤(pán)存放droplet,解決了由于用戶猛增導(dǎo)致droplet存儲(chǔ)空間受限的問(wèn)題;

(2)用戶控制臺(tái)界面dashboard的改變;

(3)Router對(duì)后端多實(shí)例包括CloudController的容錯(cuò);

(4)獨(dú)立域名綁定支持;

(5)應(yīng)用打包部署流程優(yōu)化;

(6)同組件的不同實(shí)例分別部署到不同物理機(jī)的云主機(jī)上;

(7)其他組件功能優(yōu)化。

五、總結(jié)

云擎是京東給個(gè)人開(kāi)發(fā)者、微小中型企業(yè)提供的一站式應(yīng)用免費(fèi)托管平臺(tái),所以保證云擎高可靠性就是保證所有個(gè)人開(kāi)發(fā)者和微小中型的應(yīng)用的可靠性。

通過(guò)對(duì)核心CF的組件進(jìn)行多實(shí)例或者集群化容錯(cuò)處理來(lái)保證和提供云擎的可靠性,尤其在對(duì)消息中間件這個(gè)核心組件,云擎團(tuán)隊(duì)設(shè)計(jì)和實(shí)現(xiàn)了自己的集群化方案,保證了消息通信的可靠性,并且通過(guò)GO語(yǔ)言進(jìn)行開(kāi)發(fā)擴(kuò)展了單機(jī)NATS的消息通信的性能。我們?cè)O(shè)計(jì)的NATS集群化方案具有方便橫向擴(kuò)展的能力,由此京東云擎團(tuán)隊(duì)解決了消息中間通信的瓶頸。

云擎團(tuán)隊(duì)后面考慮對(duì)NATS集群化方案進(jìn)行服務(wù)提供給京東云擎的用戶使用,讓用戶也能夠通過(guò)消息中間件開(kāi)發(fā)分布式的應(yīng)用。

最后,自己也不忘給京東云擎打個(gè)小廣告:免費(fèi)得應(yīng)用托管平臺(tái),穩(wěn)定、可靠,服務(wù)態(tài)度好,歡迎訪問(wèn)云擎官網(wǎng):http://jae.jd.com。

責(zé)任編輯:小明 來(lái)源: 京東
相關(guān)推薦

2015-12-09 15:16:03

架構(gòu)師京東架構(gòu)

2017-09-16 18:29:00

代碼數(shù)據(jù)庫(kù)線程

2018-07-04 13:41:17

架構(gòu)系統(tǒng)結(jié)構(gòu)數(shù)據(jù)庫(kù)

2012-06-17 12:58:04

架構(gòu)師架構(gòu)

2012-06-15 11:02:31

架構(gòu)師

2021-01-29 09:18:09

技術(shù)研發(fā)架構(gòu)

2018-09-17 05:00:59

架構(gòu)系統(tǒng)練級(jí)

2012-08-13 09:55:22

架構(gòu)師

2020-08-24 08:50:12

架構(gòu)師TL技術(shù)

2009-12-18 10:22:50

Ray Ozzie架構(gòu)師

2016-08-29 11:33:23

京東云云計(jì)算云安全

2012-08-04 16:02:00

架構(gòu)師

2022-04-28 13:08:51

架構(gòu)師軟件

2019-09-27 09:56:31

軟件技術(shù)硬件

2020-01-16 15:35:00

高并發(fā)架構(gòu)服務(wù)器

2021-06-07 09:35:11

架構(gòu)運(yùn)維技術(shù)

2012-07-27 09:54:56

2012-04-26 10:22:27

豆瓣網(wǎng)洪強(qiáng)寧Python

2012-11-01 15:14:49

京東數(shù)據(jù)部架構(gòu)師

2012-05-11 10:38:15

Cloud Found
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)