日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
如何打造真正可動(dòng)態(tài)擴(kuò)展的服務(wù)架構(gòu)

云計(jì)算 Docker 的出現(xiàn),以及微服務(wù)架構(gòu)的興起,讓眾多開源項(xiàng)目開始關(guān)注在松耦合的架構(gòu)前提下,如何基于 Docker 實(shí)現(xiàn)一套真正可動(dòng)態(tài)擴(kuò)展的服務(wù)架構(gòu)。

在太平等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì) 網(wǎng)站設(shè)計(jì)制作定制網(wǎng)站開發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),成都全網(wǎng)營(yíng)銷,外貿(mào)網(wǎng)站建設(shè),太平網(wǎng)站建設(shè)費(fèi)用合理。

在互聯(lián)網(wǎng)應(yīng)用領(lǐng)域,服務(wù)的動(dòng)態(tài)性需求十分常見,這就對(duì)服務(wù)的自動(dòng)發(fā)現(xiàn)和可動(dòng)態(tài)擴(kuò)展提出了很高的要求。

Docker 的出現(xiàn),以及微服務(wù)架構(gòu)的興起,讓眾多開源項(xiàng)目開始關(guān)注在松耦合的架構(gòu)前提下,如何基于 Docker 實(shí)現(xiàn)一套真正可動(dòng)態(tài)擴(kuò)展的服務(wù)架構(gòu)。

基本需求

基本的需求包括:

  • 服務(wù)啟動(dòng)后要能自動(dòng)被發(fā)現(xiàn)(vs 傳統(tǒng)需要手動(dòng)進(jìn)行注冊(cè));
  • 負(fù)載要能動(dòng)態(tài)在可用的服務(wù)實(shí)例上進(jìn)行均衡(vs 傳統(tǒng)需要靜態(tài)寫入配置);
  • 服務(wù)規(guī)模要方便進(jìn)行快速調(diào)整(vs 傳統(tǒng)需要較長(zhǎng)時(shí)間的手動(dòng)調(diào)整)。

相關(guān)項(xiàng)目

服務(wù)發(fā)現(xiàn)

服務(wù)發(fā)現(xiàn)的項(xiàng)目已經(jīng)有不少,包括之前介紹的 consul,以及 skydns、serf、以及主要關(guān)注一致性的強(qiáng)大的 zookeeper 等。

這些項(xiàng)目各有優(yōu)缺點(diǎn),功能上大同小異,都是要通過某種機(jī)制來獲取服務(wù)信息,然后通過維護(hù)一套(分布式)數(shù)據(jù)庫(kù)來存儲(chǔ)服務(wù)的信息。這也是為什么 etcd 受到大家關(guān)注和集成。

在這里,選用 HashiCorp 公司的 consul 作為服務(wù)發(fā)現(xiàn)的管理端,它的簡(jiǎn)介可以參考 這里。

服務(wù)注冊(cè)

服務(wù)注冊(cè)的手段有很多,當(dāng)然,從發(fā)起方是誰可以分為兩大類,主動(dòng)注冊(cè)還是被動(dòng)探測(cè)。

主動(dòng)注冊(cè),顧名思義,服務(wù)啟動(dòng)后,向指定的服務(wù)發(fā)現(xiàn)管理端的 API 發(fā)送請(qǐng)求,給出自身的相關(guān)信息。這樣做,對(duì)管理端的要求簡(jiǎn)單了很多,但意味著服務(wù)自身要完成注冊(cè)工作,并且極端情況下,管理端比較難探測(cè)出真正存活的服務(wù)。

被動(dòng)探測(cè),則是服務(wù)發(fā)現(xiàn)管理端通過某種機(jī)制來探測(cè)存活的服務(wù)。這樣可以獲取真實(shí)的服務(wù)情況,但如何探測(cè)是個(gè)很難設(shè)計(jì)的點(diǎn),特別當(dāng)服務(wù)類型比較復(fù)雜的時(shí)候。

以上兩種,都對(duì)網(wǎng)絡(luò)連通性要求較高。從短期看,主動(dòng)注冊(cè)方式會(huì)比較容易實(shí)現(xiàn)一些,應(yīng)用情形更廣泛;但長(zhǎng)期維護(hù)上,被動(dòng)探測(cè)方式應(yīng)該是更高效的設(shè)計(jì)。

這里,我們選用 gliderlabs 的 registrator,它可以通過跟本地的 docker 引擎通信,來獲取本地啟動(dòng)的容器信息,并且注冊(cè)到指定的服務(wù)發(fā)現(xiàn)管理端。

配置更新

服務(wù)被調(diào)整后,負(fù)載均衡器要想動(dòng)態(tài)重新分配負(fù)載,就需要通過配置來獲取更新。這樣的方案也有不少,基本上都是要安裝一些本地 agent 來監(jiān)聽服務(wù)發(fā)現(xiàn)管理端的信息,生成新的配置,并執(zhí)行更新命令。

HashiCorp 公司 的consul-template,可以通過監(jiān)聽 consul 的注冊(cè)信息,來完成本地應(yīng)用的配置更新。

負(fù)載均衡

負(fù)載均衡對(duì)性能要求很高,其實(shí)并不是軟件所擅長(zhǎng)的領(lǐng)域,但軟件方案勝在成本低、維護(hù)方便。包括 lvs、haproxy 都是很優(yōu)秀的設(shè)計(jì)方案。

這里,我們選用 nginx。nginx 不僅是個(gè)強(qiáng)大的 web 代理服務(wù)器,同時(shí)在負(fù)載均衡方面表現(xiàn)也不俗。更關(guān)鍵的,新版本的 nginx 對(duì)在線升級(jí)支持做到了極致。實(shí)時(shí)配置更新更是不在話下,可以保證服務(wù)的連續(xù)性。

實(shí)驗(yàn)過程

準(zhǔn)備工作

首先,從 這里 下載模板文件。

主要內(nèi)容如下:

  
 
 
  1. #backend web application, scale this with docker-compose scale web=3 
  2. web: 
  3.   image: yeasy/simple-web:latest 
  4.   environment: 
  5.     SERVICE_80_NAME: http 
  6.     SERVICE_NAME: web 
  7.     SERVICE_TAGS: backend 
  8.   ports: 
  9.   - "80" 
  10.  
  11. #load balancer will automatically update the config using consul-template 
  12. lb: 
  13.   image: yeasy/nginx-consul-template:latest 
  14.   hostname: lb 
  15.   links: 
  16.   - consulserver:consul 
  17.   ports: 
  18.   - "80:80" 
  19.  
  20. consulserver: 
  21.   image: gliderlabs/consul-server:latest 
  22.   hostname: consulserver 
  23.   ports: 
  24.   - "8300" 
  25.   - "8400" 
  26.   - "8500:8500" 
  27.   - "53" 
  28.   command: -data-dir /tmp/consul -bootstrap -client 0.0.0.0 
  29.  
  30. # listen on local docker sock to register the container with public ports to the consul service 
  31. registrator: 
  32.   image: gliderlabs/registrator:master 
  33.   hostname: registrator 
  34.   links: 
  35.   - consulserver:consul 
  36.   volumes: 
  37.   - "/var/run/docker.sock:/tmp/docker.sock" 
  38.   command: -internal consul://consul:8500 

如果沒有安裝 docker 和 docker-compose,需要先進(jìn)行安裝,以 ubuntu 系統(tǒng)為例。

  
 
 
  1. $ curl -sSL https://get.docker.com/ | sh 
  2. $ sudo pip install docker-compose 

執(zhí)行

docker-compose 模板所在目錄,執(zhí)行

  
 
 
  1. $ sudo docker-compose up 

相關(guān)鏡像即可自動(dòng)被下載,下載完畢后,容器就啟動(dòng)起來了。

訪問 http://localhost 可以看到一個(gè) web 頁面,提示實(shí)際訪問的目標(biāo)地址。

多次刷新,可以看到目標(biāo)地址沒有變化,這是因?yàn)?,目前我們只有一個(gè) web 后端服務(wù)器。

  
 
 
  1. 2015-08-18 03:37:58: 6 requests from  to WebServer <172.17.1.148> 

調(diào)整后端為 3 個(gè)服務(wù)器。

  
 
 
  1. $ sudo docker-compose scale web=3 

然后,再次訪問 http://localhost,多次刷新,可以看到訪問的實(shí)際目標(biāo)地址發(fā)生了變化,新啟動(dòng)的 web 服務(wù)器被自動(dòng)注冊(cè),并且 nginx 自動(dòng)對(duì)它們進(jìn)行了負(fù)載均衡。

  
 
 
  1. 2015-08-18 03:37:58: 6 requests from  to WebServer <172.17.1.148> 
  2. 2015-08-18 03:38:17: 5 requests from  to WebServer <172.17.1.152> 
  3. 2015-08-18 03:38:20: 5 requests from  to WebServer <172.17.1.153> 

博文出處:http://blog.csdn.net/yeasy/article/details/47749725


文章標(biāo)題:如何打造真正可動(dòng)態(tài)擴(kuò)展的服務(wù)架構(gòu)
本文鏈接:http://www.5511xx.com/article/ccdgsho.html