成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

京東零售云mPaaS平臺(tái)之Android組件化系統(tǒng)私有化部署改造實(shí)踐

云計(jì)算 PaaS
京東零售云mPaaS平臺(tái)是京東打造的企業(yè)級(jí)移動(dòng)研發(fā)運(yùn)營平臺(tái),Aura是Android方向的組件化、插件化解決方案。

一、背景

在當(dāng)前,上云無疑是一個(gè)非常火熱的話題,不管是科技企業(yè)還是傳統(tǒng)企業(yè)都在說著這一話題,幫助企業(yè)降本增效、協(xié)同辦公等等,咱作為一個(gè)技術(shù)人關(guān)注的話題還是技術(shù)相關(guān)的,本篇文章是在京東打造的京東零售云的大背景下,將京東零售云mPaaS平臺(tái)中的Android組件化系統(tǒng)進(jìn)行私有化部署改造的歷程記錄下來,并分享給大家。

京東零售云mPaaS平臺(tái)是京東打造的企業(yè)級(jí)移動(dòng)研發(fā)運(yùn)營平臺(tái),Aura是Android方向的組件化、插件化解決方案。

T-PaaS平臺(tái)是京東進(jìn)行私有化部署的底座,旨在幫助各種PaaS應(yīng)用更容易的在各種客戶環(huán)境中進(jìn)行商業(yè)化輸出。其接入規(guī)范完全遵循云原生標(biāo)準(zhǔn),保證PaaS服務(wù)能容易與生態(tài)應(yīng)用、客戶業(yè)務(wù)協(xié)同配合,以云原生的容器及operator的方式實(shí)現(xiàn)應(yīng)用邏輯,并以Helm標(biāo)準(zhǔn)的方式打包,在Kubernetes之上統(tǒng)一部署和管理。

這里分享的是京東在進(jìn)行上云的環(huán)境背景下,Aura平臺(tái)(Android組件平臺(tái))開始了上云、上T-PaaS環(huán)境的改造歷程。

二、需求分析及方案選定

1. 需求分析

需求和目的很明確,就是將現(xiàn)在內(nèi)部的平臺(tái)系統(tǒng)Aura在TPaaS平臺(tái)上進(jìn)行部署

TPaaS平臺(tái)是以Kubernetes進(jìn)行容器的編排部署和管理Docker容器的,所以,我們需要做以下兩件事

  • 編譯出Docker鏡像
  • 撰寫k8s編排文件,并在TPaaS平臺(tái)上進(jìn)行部署和管理

2. 方案選擇

現(xiàn)有輪子

我們是移動(dòng)開發(fā)的團(tuán)隊(duì),團(tuán)隊(duì)的成員大多都是客戶端開發(fā)的,但是小伙伴們一技多能,還能維護(hù)平臺(tái)的開發(fā),并在京東內(nèi)網(wǎng)進(jìn)行部署。

現(xiàn)在為了部署TPaaS,基礎(chǔ)技術(shù)組的同事進(jìn)行了前期的技術(shù)探索,開發(fā)了一套不用寫Dockerfile即可接入TPaaS平臺(tái)的方案,使客戶端團(tuán)隊(duì)不至于重新學(xué)習(xí)一套全新的技能Dockerfile編寫和部署,大大降低了接入的門檻,加快了接入的步伐。此方案主要解決了以下問題:

  • 免寫Dockerfile
  • 參數(shù)配置化
  • 編譯鏡像自動(dòng)化

使用現(xiàn)有輪子?發(fā)明輪子?

我們嘗試過這套方案之后,發(fā)現(xiàn)這套方案對(duì)于Java寫的后端平臺(tái)部署簡(jiǎn)直太棒了,按照規(guī)范把自己的War包放到云存儲(chǔ)上,然后修改配置文件,再按照流程在平臺(tái)上進(jìn)行一鍵打包,哦哦,鏡像出來啦~

當(dāng)然對(duì)于前端部署一樣的友好。

對(duì)于Aura平臺(tái),這套輪子不好用了,仔細(xì)研究后,發(fā)現(xiàn)了問題所在,這套方案之所以好用,是因?yàn)閮?nèi)置了一些常用的軟件,比如Nginx,Tomcat等,足以滿足上述所說的環(huán)境部署。

但是Aura平臺(tái)的系統(tǒng)架構(gòu)較復(fù)雜,使用這套方案的話,就不只是使用輪子了,還需要再在這個(gè)輪子上加裝很多東西才能達(dá)到使用的目的,嘗試過后發(fā)現(xiàn)得不嘗失,而且這個(gè)輪子的學(xué)習(xí)成本太高,不是使用學(xué)習(xí)成本,而是學(xué)習(xí)它的改裝成本太高。

怎么辦?發(fā)明一個(gè)輪子?僅為了單一平臺(tái)中的一部分,顯然不是明智之舉,干脆讓部分老弱婦孺的組件坐上這臺(tái)馬車,另一部分腿腳健全、身強(qiáng)力壯的小伙子直接走路吧,不見得就比馬車慢。

最后,小伙子先走著,可以邊走邊完善輪子,或者能走出來一個(gè)更加便捷的輪子,再然后就不只是一技多能,而是一技多再加一能了,哈哈~

三、開始干活

1. 鏡像劃分

Aura平臺(tái)的系統(tǒng)架構(gòu)是這樣的

 

Aura平臺(tái)按照架構(gòu)分為三個(gè)鏡像,分別是

  • Aura2Web:包含前端,后端
  • Aura2JenkinsMaster:任務(wù)調(diào)度器
  • Aura2JenkinsSlave:CI構(gòu)建節(jié)點(diǎn)

經(jīng)過分析,由于Aura2Web、Aura2JenkinsSlave使用到的軟件較多,環(huán)境配置復(fù)雜,決定這兩個(gè)鏡像使用DockerFile進(jìn)行編寫。

2. DockerFile編寫

自己寫的Dockerfile有兩個(gè),在寫之前先研究一下Dockerfile的編寫規(guī)則,遵循這些經(jīng)驗(yàn)才能編寫出優(yōu)秀的鏡像

  • 選擇最精簡(jiǎn)的基礎(chǔ)鏡像
  • 減少鏡像的層數(shù)
  • 清理鏡像構(gòu)建的中間產(chǎn)物
  • 注意優(yōu)化網(wǎng)絡(luò)請(qǐng)求
  • 盡量去用構(gòu)建緩存

選擇基礎(chǔ)鏡像

基于我們的環(huán)境,選擇了服務(wù)器最穩(wěn)定的Centos,版本號(hào)是7.2.1511,并修改源為京東內(nèi)網(wǎng)源,加快下載依賴的速度。

安裝基礎(chǔ)軟件

安裝以下一些軟件:JDK,nginx,Python,Maven,Git,Tomcat,JQ等。

業(yè)務(wù)源碼到二進(jìn)制包再到鏡像

鏡像是為了跑我們的自己服務(wù),所以需要把我們的平臺(tái)包放到鏡像中,這需要制定一個(gè)規(guī)則,方便記錄從源碼到鏡像這一過程,并且可回溯。

前端:

  • 前端使用的是Vue,需要進(jìn)行編譯構(gòu)建,將構(gòu)建后的產(chǎn)物放到鏡像中。
  • 首先在源碼中打Tag,Push到服務(wù)器,由WebHook鉤子觸發(fā)持續(xù)集成,編譯出前端。
  • 將前端的產(chǎn)物打成zip包,放到京東的云存儲(chǔ)上,記下鏈接地址備用。

后端:

  • 后端需要進(jìn)行混淆加密,加密后的產(chǎn)物同理打成zip包,然后將其放到京東的云存儲(chǔ)上,記下鏈接地址備用。

3. 統(tǒng)一配置化改造

由于鏡像中的代碼使用到的配置文件較多,只Aura2Web鏡像就達(dá)到了6個(gè)之多,所以需要一種方法進(jìn)行統(tǒng)一的配置化。

經(jīng)過研究發(fā)現(xiàn)了一個(gè)超好用的配置管理的軟件confd,下面介紹一下這個(gè)軟件的用法。

confd簡(jiǎn)介

Confd是一個(gè)輕量級(jí)的配置管理工具。通過查詢Etcd或其它后端,結(jié)合配置模板引擎,可以保持本地配置最新,同時(shí)具備定期探測(cè)機(jī)制,配置變更自動(dòng)reload。其后端支持的數(shù)據(jù)類型有:etcd、consul、vault、environment variables、redis、zookeeper、dynamodb、stackengine、rancher。不過一般使用Confd和etcd的配合使用比較多。

在我們的項(xiàng)目中暫時(shí)還用不著后端配合,只需要使用它的模板渲染,進(jìn)行統(tǒng)一配置管理即可。

confdg下載

下載confd的二進(jìn)制文件,下載地址為:https://github.com/kelseyhightower/confd/releases。

在這里需要將confd放到鏡像中,直接在dockerfile中加上如下語句

 

  1. RUN set -ex \  
  2. && wget http://$storage_domain/our-tools/confd \  
  3. && mv ./confd /usr/bin \  
  4. && chmod a+x /usr/bin/confd 

創(chuàng)建confd配置文件和模板文件

如圖所示,根據(jù)您的需要,可創(chuàng)建多個(gè)配置和模板,但它們要一一對(duì)應(yīng)起來。

舉例:frontend_domain.toml

 

  1. [template]  
  2. src = "frontend_domain.template"  
  3. dest = "/opt/servers/nginx/conf/domains/frontend_domain"  
  4. keys = [  
  5. "/aura/frontend/domain_inner" 
  6. "/aura/frontend/domain_outer" 
  7.  
  8. Frontend_domain.template  
  9. server  
  10.  
  11. listen 80;  
  12. server_name {{ getv "/aura/frontend/domain_inner" }} {{ getv "/aura/frontend/domain_outer" }};  
  13. ...  

在dockerfile中將配置文件和template文件copy到鏡像中。

  1. COPY render /etc/confd 

在entery的shell腳本中執(zhí)行生成真實(shí)的配置文件。

  1. /usr/bin/confd -onetime -backend file -file ${config_file_path} 

4. 涉及到的中間件配置

數(shù)據(jù)庫

參考TPaaS的文檔,將需要配置的Host等在本機(jī)配好,登錄phpmyadmin.tpaas.local(用戶名密碼從文檔中獲得)。

建立新數(shù)據(jù)庫,并自定義數(shù)據(jù)庫名稱,假設(shè)這里取名為:auradb。

下載之前建好的Aura的初始化sq,導(dǎo)入sql。

記錄以下信息,后續(xù)放入 configMap

  • 網(wǎng)址和端口號(hào)
  • 數(shù)據(jù)庫名
  • 用戶名密碼

GitLab

參考中間件信息的網(wǎng)址,找到GitLab網(wǎng)址,登錄網(wǎng)站,使用中間件信息上提供的用戶名密碼或新建一個(gè)賬號(hào),這里示例新建一個(gè)賬號(hào):aura,密碼為: xxxxx,記錄下來,后續(xù)放入configMap。

Maven私服 (Nexus Repository OSS)

參考中間件信息的網(wǎng)址,找到地址和用戶名密碼,登錄。

建以下兩個(gè)倉庫,(創(chuàng)建時(shí)參數(shù)deployment policy選擇允許上傳)

  • libs-releases-local
  • libs-snapshots-local

開通匿名訪問權(quán)限,如已開通則忽略,建用戶并記錄其賬號(hào)和密碼,后續(xù)放入 configMap。

云存儲(chǔ)(minio)

  • 參考中間件信息的網(wǎng)址,找到地址和用戶名密碼。
  • 登錄并創(chuàng)建需要的bucket,并配置訪問策略為讀/寫。

5. 雙域名改造

由于私有化客戶的環(huán)境分為內(nèi)外環(huán)境,所以平臺(tái)訪問的域名分為內(nèi)外域名,服務(wù)間調(diào)用使用內(nèi)部域名,用戶能直接訪問的使用外部域名。 雙域名改造的關(guān)鍵點(diǎn)就是將服務(wù)分類,哪些是只用內(nèi)部服務(wù)調(diào)用的,哪些還需要用戶直接調(diào)用,分析清楚后,直接在configMap中添加對(duì)應(yīng)的Key值,并改造Confd的配置,適配相關(guān)域名。例如在Confd章節(jié)中舉例的的 前端域名配置。

6. K8S編排文件

鏡像文件生成之后,接下來就該編寫K8S的編排文件了,然后就可以將鏡像部署到K8S平臺(tái)上。

需要配置的有以下編排文件

  • configMap
  • ingress
  • service
  • deployment
  • PersistentVolumeClaim

configMap

它的主要作用就是將需要配的參數(shù)統(tǒng)一放到這里,然后傳給鏡像中的confd進(jìn)行渲染配置

PersistentVolumeClaim

主要用于外部掛載文件或目錄,這里用它掛載了AndroidSDK,這樣多個(gè)構(gòu)建節(jié)點(diǎn)可以共用SDK,節(jié)省了空間。

JenkinsSlave鏡像將會(huì)使用掛載的PVC做為Android SDK的輸入

多個(gè) JenkinsSlave節(jié)點(diǎn)會(huì)共用同一份PVC中的Android SDK,以節(jié)省存儲(chǔ)空間。

PVC掛載目錄為 /usr/local/aura/auraCfs,也可將其掛載到其它目錄(例如/mnt/auraCfs),然后將 /usr/local/aura/auraCfs 作為軟鏈指向它。

解壓SDK文件,文件有兩個(gè):

 

  1. aura-Cfs-mini-without-gradlecache.tar.xz  
  2. aura-Cfs-mini-with-gradlecache.tar.xz 

它們兩個(gè)的區(qū)別差了一個(gè) 14G 左右的 gradle cache。 cache可使用也可不使用,如不使用則會(huì)自動(dòng)從網(wǎng)絡(luò)下載,并只會(huì)延長(zhǎng)第一次構(gòu)建的時(shí)間。

步驟如下:

  • 將文件 xz 解壓到 PVC的根目錄即可。
  • 選擇使用 gradle 緩存。
  • 可以使用預(yù)置的 gradle 緩存來加快首次的構(gòu)建速度,也可不使用預(yù)置緩存,而是在構(gòu)建過程中自動(dòng)從網(wǎng)絡(luò)下載依賴的包。如要使用Grade緩存,按照以下步驟操作即可(變成冒號(hào),底下的步驟能不能縮一下格式,做一個(gè)步驟區(qū)分,縮進(jìn)一下,接下來的步驟,步驟是什么?)
  • 保證JenkinsSlave鏡像中有充足的存儲(chǔ)空間(大于200G)
  • 使用 with-gradlecache 的壓縮包
  • 在PVC盤的根目錄下新建一個(gè)空文件 use_gradle_cache
  • 解壓完畢后,鏡像啟動(dòng)腳本會(huì)輸出:“Gradle User Home 緩存恢復(fù)完成”

四、經(jīng)驗(yàn)總結(jié)

本篇文章主要記述了,Aura平臺(tái)(Android組件平臺(tái))拆分成Docker鏡像,并進(jìn)行鏡像編譯和部署的過程。

私有化部署的事情總結(jié)下來主要有以下幾點(diǎn)

  • Dockerfile編寫及鏡像編譯
  • 配置的統(tǒng)一管理
  • K8S的編排文件編寫

只要把握好了這些關(guān)鍵點(diǎn),相信其它平臺(tái)如有相同的需求,在進(jìn)行私有化改造部署落地的過程中也會(huì)是很順利的。

責(zé)任編輯:未麗燕 來源: 京東零售云
相關(guān)推薦

2021-09-17 18:40:55

京東mPaaS移動(dòng)端

2021-09-15 16:41:20

京東零售云Flutter熱重載

2022-05-18 13:24:47

京東調(diào)優(yōu)實(shí)踐

2019-03-21 19:19:35

新零售阿里云零售云

2019-06-03 15:27:22

零售企業(yè)數(shù)字化企業(yè)

2022-05-20 11:23:01

火山引擎A/B 測(cè)試ToB 市場(chǎng)

2021-09-08 18:12:57

京東零售云

2019-12-13 11:55:30

AI 數(shù)據(jù)人工智能

2022-06-28 13:41:43

京東數(shù)據(jù)處理

2025-04-29 08:04:10

DeepSeek私有化部署數(shù)字化轉(zhuǎn)型

2020-09-14 16:55:49

IBM

2024-07-11 08:09:21

2025-05-14 02:00:00

DeepSeek私有化部署

2021-05-27 10:06:21

京東零售

2020-04-03 10:32:39

數(shù)字化轉(zhuǎn)型零售行業(yè)CIO

2018-01-22 10:33:01

云計(jì)算 新零售

2014-05-09 15:35:51

CRM營銷

2012-07-23 16:22:07

Oracle

2022-02-15 18:18:56

數(shù)字化出海零售
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 国产又色又爽又黄又免费 | 国产精品高清在线 | 国产精品永久在线观看 | 色天堂影院 | 亚洲高清视频在线观看 | 欧美精品成人 | 亚洲成人一级片 | 国产日韩欧美一区二区 | 欧美综合一区二区三区 | 欧美成人免费 | 久草在线高清 | 在线日韩欧美 | 精品av久久久久电影 | 免费精品视频在线观看 | 欧美在线日韩 | 可以免费看的毛片 | 天天插天天狠天天透 | 国产1区2区| 国产视频精品视频 | 国产精品揄拍一区二区 | 欧美日韩国产在线观看 | 久草网站 | 久久久国产精品网站 | 综合色导航 | 国产精品久久久久久久久久免费看 | 黄在线免费观看 | 国产精品成人一区二区 | 欧美高清视频一区 | 一区二区三区不卡视频 | 色婷婷综合久久久中字幕精品久久 | 99精品欧美一区二区蜜桃免费 | 成人精品一区二区三区中文字幕 | 欧美一级视频免费看 | 国产高潮好爽受不了了夜色 | 亚洲成人久久久 | 人人干在线视频 | 亚洲欧美一区二区三区国产精品 | 97超碰在线免费 | 日韩欧美国产一区二区 | 中文字幕av一区二区三区 | 狠狠亚洲 |