欧美一区2区三区4区公司二百,国产精品婷婷午夜在线观看,自拍偷拍亚洲精品,国产美女诱惑一区二区

歡迎來到云服務(wù)器

云技術(shù)

去哪兒私有云構(gòu)建 基于Mesos/Docker的數(shù)據(jù)處理平臺

2014年下半年左右,去哪兒完成了有關(guān)構(gòu)建私有云服務(wù)的技術(shù)調(diào)研,并最終拍定了Docker/Mesos這一方案。下圖1展示了去哪兒數(shù)據(jù)平臺的整體架構(gòu):

去哪兒私有云構(gòu)建 基于Mesos/Docker的數(shù)據(jù)處理平臺

圖1:去哪兒數(shù)據(jù)平臺的整體架構(gòu)

該平臺目前已實現(xiàn)了如下多項功能:

1.每天處理約340億/25TB的數(shù)據(jù);

2.90%的數(shù)據(jù)在100ms內(nèi)完成處理;

3.最長3h/24h的數(shù)據(jù)回放;

4.私有的Elasticsearch Cloud;

5.自動化監(jiān)控與報警。

為什么選擇Docker/Mesos

目前為止,這個數(shù)據(jù)平臺可以說是公司整個流數(shù)據(jù)的主要出入口,包括私有的Elasticsearch Cloud和監(jiān)控報警之類的數(shù)據(jù)。那么為什么選擇Docker/Mesos?

選擇Docker有兩大原因。第一個是打包:對于運維來講,業(yè)務(wù)打完包之后,每天面對的是用腳本分發(fā)到機(jī)器上時所出現(xiàn)的各種問題。業(yè)務(wù)包是一個比較上層的話題,這里不做深入的討論,這里講的“打包”指軟件的Runtime層。如果用Docker的打包機(jī)制,把最容易出現(xiàn)問題的Runtime包裝成鏡像并放在registry里,需要的時候拿出來,那么整個平臺最多只執(zhí)行一個遠(yuǎn)程腳本就可以了,這是團(tuán)隊最看好的一個特性。第二個是運維:Docker取消了依賴限制,只要構(gòu)建一個虛擬環(huán)境或一個Runtime的鏡像,就可以直接拉取到服務(wù)器上并啟動相應(yīng)的程序。此外Docker在清理上也較為簡單,不需要考慮環(huán)境卸載不干凈等問題。

以常見的計算框架來說,它們本質(zhì)上仍然屬于運行在其上的Job的Runtime。綜合上述情況,團(tuán)隊選擇針對Runtime去打包。

選擇Mesos是因為它足夠簡單和穩(wěn)定,而且擁有較成熟的調(diào)度框架。Mesos的簡單體現(xiàn)在,與Kubernetes相比其所有功能都處于劣勢,甚至?xí)l(fā)現(xiàn)它本身都是不支持服務(wù)的,用戶需要進(jìn)行二次開發(fā)來滿足實際要求,包括網(wǎng)絡(luò)層。不過,這也恰好是它的強項。Mesos本身提供了很多SDN接口,或者是有模塊加載機(jī)制,可以做自定義修改,平臺定制功能比較強。所以用Mesos的方案,需要考慮團(tuán)隊是否可以Hold住整個開發(fā)過程。

從框架層面來看,Marathon可以支撐一部分長期運行的服務(wù),Chronos則側(cè)重于定時任務(wù)/批處理。

以下圖2是Mesos的一個簡單結(jié)構(gòu)圖:

去哪兒私有云構(gòu)建 基于Mesos/Docker的數(shù)據(jù)處理平臺

圖2:Mesos結(jié)構(gòu)

數(shù)據(jù)平臺的最終目標(biāo)架構(gòu)如下圖3所示:

去哪兒私有云構(gòu)建 基于Mesos/Docker的數(shù)據(jù)處理平臺

圖3:平臺目標(biāo)

組件容器化與部署

組件的容器化分為JVM容器化和Mesos容器化。JVM容器化需要注意以下幾方面:

潛在創(chuàng)建文件的配置都要注意

1.java.io.tmpdir

2.-XX:HeapDumpPath

3.-Xloggc

-Xloggc會記錄GC的信息到制定的文件中?,F(xiàn)在很少有直接用XLoggc配置的了(已經(jīng)用MXBean方式替代了)。如果有比較老的程序是通過-Xloggc打印GC日志的話,那么要額外掛載volume到容器內(nèi)。

時區(qū)與編碼

1.–env TZ=Asia/Shanghai

2.–volume /etc/localtime:/etc/localtime:ro

3.–env JAVA_TOOL_OPTIONS=”-Dfile.encoding=UTF-8 -Duser.timezone=PRC

時區(qū)是另一個注意點。上面所列的三種不同的方法都可以達(dá)到目的,其中第一/三個可以寫在Dockerfile里,也可以在docker run時通過–env傳入。第二種只在docker run時通過volume方式掛載。另外,第三種額外設(shè)置了字符集編碼,推薦使用此方式。

主動設(shè)置heap

1.防止ergonomics亂算內(nèi)存

這是Docker內(nèi)部實現(xiàn)的問題。即使給Docker設(shè)置內(nèi)存,容器內(nèi)通過free命令看到的內(nèi)存和宿主機(jī)的內(nèi)存是一樣的。而JVM為了使用方便,會默認(rèn)設(shè)置一個人機(jī)功能會根據(jù)當(dāng)前機(jī)器的內(nèi)存計算一個堆大小,如果我們不主動設(shè)置JVM堆內(nèi)存的話,很有可能計算出一個超過 Memory Cgroup限制的內(nèi)存,啟動就宕掉,所以需要注意在啟動時就把內(nèi)存設(shè)置好。

CMS收集器要調(diào)整并行度

1.-XX:ParallelGCThreads=cpus

2.-XX:ConcGCThreads=cpus/2

CMS是常見的收集器,它設(shè)置并行度的時候是取機(jī)器的核數(shù)來計算的。如果給容器分配2個CPU,JVM仍然按照宿主機(jī)的核數(shù)初始化這些線程數(shù)量,GC的回收效率會降低。想規(guī)避這個問題有兩點,第一點是掛載假的Proc文件系統(tǒng),比如Lxcfs。第二種是使用類似Hyper的基于Hypervisor的容器。

Mesos容器化要求關(guān)注兩類參數(shù):配置參數(shù)和run參數(shù)。

3.需要關(guān)注的配置參數(shù)

1.MESOS_systemd_enable_support

2.MESOS_docker_mesos_image

3.MESOS_docker_socket

4.GLOG_max_log_size

5.GLOG_stop_logging_if_full_disk

騰訊云代理

Copyright © 2003-2021 MFISP.COM. 國外vps服務(wù)器租用 夢飛云服務(wù)器租用 版權(quán)所有 ? 粵ICP備11019662號

主站蜘蛛池模板: 宣城市| 樟树市| 马山县| 屏南县| 米林县| 屏边| 奎屯市| 嘉黎县| 汶川县| 岳池县| 元阳县| 湘潭市| 新沂市| 子洲县| 惠东县| 赤峰市| 简阳市| 泸西县| 呼和浩特市| 庄河市| 安化县| 内丘县| 雷波县| 仁化县| 呼图壁县| 建瓯市| 常德市| 凤翔县| 祁连县| 鸡泽县| 阿瓦提县| 五指山市| 德化县| 永城市| 五华县| 神池县| 綦江县| 淮阳县| 屏东市| 靖远县| 封开县|