天天看點

Docker在千尋位置的實踐

以下是精彩内容整理:

千尋位置

千尋位置以“網際網路+位置(北鬥)”的理念,通過北鬥地基一張網的整合與建設,基于雲計算和資料技術,建構位置服務雲平台,以滿足國家、行業、大衆市場對精準位置服務的需求。

千尋位置是一個基于衛星定位、雲計算和大資料技術的位置服務開放平台,面向企業和開發者、提供精準位置服務營運的平台型公司;緻力于讓位置創造價值,将公司打造成為提供精準位置服務、資料積累與挖掘、資料融合增值服務、具有全球競争力的新興産業集團;以衛星定位為基礎,融合各類定位技術,針對特定的應用場景,不同的應用終端,推出與實際場景相結合的解決方案,向各類終端和應用系統提供高精準位置服務。

千尋位置服務是做什麼的呢?我們能夠提供亞米級到厘米級,甚至事後靜态處理毫米級的高清定位服務,為什麼能夠做到這麼高的精度,其實背後有我們地基增強的一張網,我們全國有1500多個基站,這是千尋自己建設的。使用者的終端通過接受天上的衛星信号,把資訊發送到我們的播發平台,播發平台連接配接地基增強的站,背後有一個複雜的算法加工,最後把處理過後的資料鋪到終端上去,衛星信号經曆過電離層、障礙物,還有各種複雜的場景,其實是有一定偏差的,我們就是要努力消除偏差,這就是千尋位置為什麼能夠提供到亞米級、厘米級的,甚至是靜态處理毫米級的最根本原因。

毫不誇張的說,千尋算法可以說是國内在算法領域裡面投入最多的一家公司,正是因為我們投入了巨大的人力、物力,是以我們才能夠得以對高清定位市場的訴求提供很好的服務。

Docker在千尋位置的實踐

圖為千尋網站架構圖。技術無所謂優劣,在合适的人、合适的團隊手上,才能夠發揮出它的作用,然後解決公司當下和未來可能出現的一些業務場景。我們的架構中,一邊是我們公司的網站,一邊是我們的服務售賣平台,一邊是使用者使用過程當中計費相關的,背後的播發是有播發團隊去負責的。

Docker曆程

千尋是阿裡巴巴和中國兵器共同投資成立的一家公司,與阿裡雲深度合作,無論從ECS還是RDS,還是各種各樣雲計算相關的,當下有一千多台ECS,千尋Docker的曆程分成了幾個階段:

在2014年到2015年的時候,用普通的ECS,公司也會做一些雲集上的研發,适配各種業務場景,那時候人也不多,我們開了幾十台幾百台機器即可滿足大部分的需求;

到了2016年,公司組織架構也做了一些調整,業務也在發力,對技術也提出了更多的要求,經過技術小組讨論,我們決定嘗試在部門引入Docker,Docker并不是特别适用于CPO密集型或者是RAO密集型的,是以我們還是小心求證,不能步子邁得太快,不可能一下子把整個生産環境全部切到Docker上面去;

2016年8月,線上下我們的開發環境和測試環境下面就嘗試着去用Docker,效果已經非常明顯。每來一個同學就直接給他一台機器,每一個測試的同學都有一套獨立的環境,我們網站差不多有40多個應用,如果每個應用部署一台伺服器,這個代價還是蠻高的,現在直接給一套Docker的環境,按照規則根據我們設定去做一些安裝,這是非常友善的。切到阿裡雲的Docker上去,好處是它提供了豐富的管理手段,包括監控、運維,包括它做了充分的測試,每一個新版本上來以後,都是經過充分測試才會放出去。我們自己用标準的Docker時候,自己設立了虛拟路由,解決了容器之間互通的問題。

2016年12月 生産環境阿裡雲Docker,阿裡雲的Docker天然支援容器之間的互通,它在底層的網絡層做了一些處理, 12月份我們開始把相當一部分應用切到我們的生産環境上面,切到阿裡雲的Docker上去了。

資源利用不充分,1000+機器,服務擴容不友善,開發測試和生産配置不統一,基于這些,千尋切入Docker後有如下情況:

(1)測試環境:幾十個系統,一個測試同學一套完整環境,對比機器數(待評估)

(2)使用阿裡雲倉庫管理鏡像包,相比以前方式,不需要手動拷貝包,CI內建起來很友善(3)compose管理,使用阿裡雲管理叢集,頁面化管理

(4)最開始解決dubbo調用,手工解決網段問題,後來用阿裡雲的網絡,天然打通

(5)标準docker,自己解決誇主機容器互聯(虛拟路由,指定網段)

Docker實踐

在用Docker的時候,我們有一些自己的東西在裡面,比如統一配置中心,從生産上來說,我們希望一個包可以丢到不同的環境裡面去,隻不過需要給它事先設定一些東西,可能在生産環境它是連着資料庫,在開發環節連着另外一個資料庫。我們也做了一些基礎性的建設,就把統一的配制中心搞起來了,它同樣适用于ECS這種情況。

我們同時還要兼顧一下開發同學的效率,開發同學如果感覺很不滿意,基本上就是很失敗了,比如說日志路徑,生産環境所有的應用是日志路徑,我們放了個人使用者下面。開發同學用的是同一套配置,我們做到能夠允許在本地的某一個地方去做一些覆寫,如果發現你這個地方有這樣的一個K存在,我就不會使用配置中心,這樣就可以大家統一都用同一套配置中心,同時又有自己的個性配置。生産環境隻有一套配置中心,那我們有了配置中心,容器在啟動的那個時刻,它也會到我們配置中心裡面去讀配置項。

使用Docker的好處,相信大家應該對Docker都有過比較深的了解,具體如下:

使用阿裡雲Docker,我們直接一個包放到我們的Docker容器裡面,生成一個鏡像,這個鏡像不管是在開發環節還是在測試環節,還是在哪條生産環節,它都能夠無縫的銜接上,這是我們用Docker的一個好處;

使用阿裡雲鏡像倉庫是有好處的,省得自己拷貝來拷貝去;

CI基于Docker,算法部門對環境要求較多(如ubunt,centos等),有多種的環境需要對算法進行驗證和加工,是以這也是基于Docker去做的;

統一的Dockerfile;

資料卷(叢集中多ECS資料卷共享建議使用NAS,可在阿裡雲容器管理中配置);

使用阿裡雲容器管理控制台;

建立叢集注意網段不要和vpc沖突,叢集中一台ECS需要占用一個C段;

偶爾遇到舊容器(名)清理不幹淨;

一個程序一個容器,admin;

統一配置中心;

非CPU密集型和高I/O型應用。比如像我們自己的播發平台,我們每秒鐘就要往下吐資料,基本上就不太适合去做Docker,還有算法在持續不斷的進行運算,這個也不太适合去用Docker。

我們一方面要做一些自己的基礎化設施建設,另一方面還要響應公司的業務部門的需求,是以很多基礎設施做的不完全夠,自動化運維和日志監控這一部分,接下來的階段我們可能會和運維同學一起來做,聚集各部門的能量才能把事情做好。

本文為雲栖社群原創内容,未經允許不得轉載,如需轉載請發送郵件至[email protected];如果您發現本社群中有涉嫌抄襲的内容,歡迎發送郵件至:[email protected] 進行舉報,并提供相關證據,一經查實,本社群将立刻删除涉嫌侵權内容。

繼續閱讀