閱讀923 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Docker在千尋位置的實踐

雲棲TechDay31期,來自千尋位置網的技術總監湯嚴敏帶來Docker在千尋位置的實踐的演講。本文主要從千尋位置的理念和架構開始談起,著重分析了千尋位置的Docker曆程與實踐,包括統一配置中心和阿裏雲鏡像庫等。

 

以下是精彩內容整理:

千尋位置

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

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

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

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

c93e41b82799b9c2ca21da1dd6244dce052c2123

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

 

Docker曆程

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

  • 2014年到2015年的時候,用普通的ECS,公司也會做一些雲集上的研發,適配各種業務場景,那時候人也不多,我們開了幾十台幾百台機器即可滿足大部分的需求;
  • 到了2016年,公司組織架構也做了一些調整,業務也在發力,對技術也提出了更多的要求,經過技術小組討論,我們決定嚐試在部門引入DockerDocker並不是特別適用於CPO密集型或者是RAO密集型的,所以我們還是小心求證,不能步子邁得太快,不可能一下子把整個生產環境全部切到Docker上麵去;
  • 20168月,在線下我們的開發環境和測試環境下麵就嚐試著去用Docker,效果已經非常明顯。每來一個同學就直接給他一台機器,每一個測試的同學都有一套獨立的環境,我們網站差不多有40多個應用,如果每個應用部署一台服務器,這個代價還是蠻高的,現在直接給一套Docker的環境,按照規則根據我們設定去做一些安裝,這是非常方便的。切到阿裏雲的Docker上去,好處是它提供了豐富的管理手段,包括監控、運維,包括它做了充分的測試,每一個新版本上來以後,都是經過充分測試才會放出去。我們自己用標準的Docker時候,自己設立了虛擬路由,解決了容器之間互通的問題。
  • 201612 生產環境阿裏雲Docker,阿裏雲的Docker天然支持容器之間的互通,它在底層的網絡層做了一些處理, 12月份我們開始把相當一部分應用切到我們的生產環境上麵,切到阿裏雲的Docker上去了。

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

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

2)使用阿裏雲倉庫管理鏡像包,相比以前方式,不需要手動拷貝包,CI集成起來很方便(3compose管理,使用阿裏雲管理集群,頁麵化管理

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

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

 

Docker實踐

在用Docker的時候,我們有一些自己的東西在裏麵,比如統一配置中心,從生產上來說,我們希望一個包可以丟到不同的環境裏麵去,隻不過需要給它事先設定一些東西,可能在生產環境它是連著數據庫,在開發環節連著另外一個數據庫。我們也做了一些基礎性的建設,就把統一的配製中心搞起來了,它同樣適用於ECS這種情況。

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

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

  • 使用阿裏雲Docker,我們直接一個包放到我們的Docker容器裏麵,生成一個鏡像,這個鏡像不管是在開發環節還是在測試環節,還是在哪條生產環節,它都能夠無縫的銜接上,這是我們用Docker的一個好處;
  • 使用阿裏雲鏡像倉庫是有好處的,省得自己拷貝來拷貝去;
  • CI基於Docker,算法部門對環境要求較多(如ubuntcentos等),有多種的環境需要對算法進行驗證和加工,所以這也是基於Docker去做的;
  • 統一的Dockerfile
  • 數據卷(集群中多ECS數據卷共享建議使用NAS,可在阿裏雲容器管理中配置);
  • 使用阿裏雲容器管理控製台;   
  • 創建集群注意網段不要和vpc衝突,集群中一台ECS需要占用一個C段;
  • 偶爾遇到舊容器()清理不幹淨;
  • 一個進程一個容器,admin
  • 統一配置中心;
  • CPU密集型和高I/O型應用。比如像我們自己的播發平台,我們每秒鍾就要往下吐數據,基本上就不太適合去做Docker,還有算法在持續不斷的進行運算,這個也不太適合去用Docker

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

 

 

最後更新:2017-04-17 14:00:36

  上一篇:go 厲害了我的盾!錢盾首發全局防“釣魚”功能
  下一篇:go Kubernetes環境下的各種調試方法