日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

京东物流系统自动化运维平台技术揭密

發(fā)布時(shí)間:2023/12/14 windows 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 京东物流系统自动化运维平台技术揭密 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

作者:趙玉開,十年以上互聯(lián)網(wǎng)研發(fā)經(jīng)驗(yàn),2013年加入京東,在運(yùn)營(yíng)研發(fā)部任架構(gòu)師,期間先后主持了物流系統(tǒng)自動(dòng)化運(yùn)維平臺(tái)、青龍數(shù)據(jù)監(jiān)控系統(tǒng)和物流開放平臺(tái)的研發(fā)工作,具有豐富的物流系統(tǒng)業(yè)務(wù)和架構(gòu)經(jīng)驗(yàn)。在此之前在和訊網(wǎng)負(fù)責(zé)股票基金行情系統(tǒng)的研發(fā)工作,具備高并發(fā)、高可用互聯(lián)網(wǎng)應(yīng)用研發(fā)經(jīng)驗(yàn)。


簡(jiǎn)單來(lái)理解,自動(dòng)化運(yùn)維就是要通過(guò)機(jī)器的方式來(lái)簡(jiǎn)化整體的運(yùn)維過(guò)程,特別是優(yōu)化重復(fù)類型的工作,以提高運(yùn)維效率,減少因人工而引起的失誤操作。隨著運(yùn)維管理的復(fù)雜度和難度增大,自動(dòng)化運(yùn)維也基本成為了運(yùn)維平臺(tái)演進(jìn)的必經(jīng)之路。但如何落地自動(dòng)化運(yùn)維平臺(tái),不同的企業(yè)因?yàn)檫\(yùn)維發(fā)展階段和業(yè)務(wù)體量的不同,都有不一樣的實(shí)現(xiàn)路徑。


以京東為例,它的物流系統(tǒng)有很多分支機(jī)構(gòu), 比如倉(cāng)庫(kù)、分撥中心、轉(zhuǎn)運(yùn)中心等, 業(yè)務(wù)復(fù)雜的分支機(jī)構(gòu)可能會(huì)有自己的信息系統(tǒng), 這些信息系統(tǒng)往往分布式地部署到全國(guó)各地,那如何基于自動(dòng)化運(yùn)維平臺(tái)管理好這些分支機(jī)構(gòu)的服務(wù)器、 信息系統(tǒng), 降低因?yàn)榈赜蚍植荚斐傻倪\(yùn)維維護(hù)成本呢?京東資深架構(gòu)師趙玉開向 InfoQ 記者深入介紹了他們?cè)谧詣?dòng)化運(yùn)維平臺(tái)方面的一些探索和實(shí)踐。另外,趙玉開也將會(huì)在 9 月 10 日舉行的 CNUTCon 全球運(yùn)維技術(shù)大會(huì) 上分享相關(guān)話題,歡迎關(guān)注。


InfoQ:可以先介紹下目前京東物流系統(tǒng)自動(dòng)化運(yùn)維平臺(tái)的一些基本情況嗎?


趙玉開:?京東物流系統(tǒng)自動(dòng)化運(yùn)維平臺(tái)從 2014 年開始啟動(dòng)到現(xiàn)在已經(jīng)歷了三各階段,到目前管理了 MySQL、JMQ、 Redis 及自研應(yīng)用等多種實(shí)例。


眾所周知,京東業(yè)務(wù)發(fā)展迅猛,每周都需要開倉(cāng),數(shù)量多達(dá)十幾個(gè)。最初開倉(cāng)過(guò)程特別冗長(zhǎng)和復(fù)雜,開倉(cāng)過(guò)程中涉及到研發(fā)人員部署系統(tǒng)、運(yùn)營(yíng)人員手動(dòng)填寫多種申請(qǐng)、運(yùn)維人員不僅要負(fù)責(zé)中間件安裝,還要負(fù)責(zé)整個(gè)流程中每個(gè)環(huán)節(jié)的進(jìn)展確認(rèn)及協(xié)調(diào),這直接導(dǎo)致了開倉(cāng)慢,且涉及到的各部門都需要投入大量的人力成本。


基于此,2014 年初我們啟動(dòng)了一期自動(dòng)化運(yùn)維平臺(tái)研發(fā)的項(xiàng)目,2014 年 10 月項(xiàng)目一期上線時(shí),已基本解決了開倉(cāng)慢和人力成本的問(wèn)題,也減少了開倉(cāng)過(guò)程中運(yùn)維同學(xué)的重復(fù)性工作內(nèi)容,制定標(biāo)準(zhǔn)化模板,解放了研發(fā)人員的重復(fù)性部署工作。運(yùn)營(yíng)人員可通過(guò)模板直接設(shè)置,將之前一些繁瑣的密碼、JMQ Token 等數(shù)據(jù)實(shí)現(xiàn)自動(dòng)化配置,大大減少了流程耗費(fèi)的時(shí)間。


一期上線后,得到了流程中各環(huán)節(jié)涉及部門的贊賞,并在得到大家積極反饋后,迅速進(jìn)入到二期項(xiàng)目。二期項(xiàng)目完成后,數(shù)據(jù)的初始化問(wèn)題和研發(fā)日常批量部署問(wèn)題也得到了解決,系統(tǒng)的自動(dòng)化程度已可以滿足日常的工作需求。


今年初,為接入更多物流作業(yè)單位,如分揀中心, 亞洲一號(hào)自動(dòng)化物流中心等,我們開啟了三期項(xiàng)目,目前項(xiàng)目還在持續(xù)前行中。


InfoQ:談?wù)勀銈兊淖詣?dòng)化運(yùn)維架構(gòu)?以及具體涉及到的技術(shù)棧?


趙玉開:?我們的自動(dòng)化運(yùn)維的核心組件是 SaltStack, 我們基于 SaltStack 做了很多自定義的模塊、Grains 和 Runner, 通過(guò)這些自定義的模塊、Grains 以及 Runner 來(lái)支撐我們的開倉(cāng)、部署、數(shù)據(jù)同步等功能。


如下圖是一個(gè)指令執(zhí)行過(guò)程圖, 分為兩個(gè)部分, 上面部分為部署在 IDC 的模塊, 下半部分則是部署在庫(kù)房機(jī)房的模塊。

我們先逐個(gè)介紹部署在 IDC 部分的模塊:

  • Web 使用 Java 技術(shù), 為用戶提供操作界面, 控制操作權(quán)限, 使用 Activiti 工作流引擎驅(qū)動(dòng)各種流程, 下發(fā)開倉(cāng)過(guò)程中的自動(dòng)化運(yùn)維指令;

  • Salt-API-Proxy 是 Salt-API 的代理層, 通過(guò) Nginx 實(shí)現(xiàn)了反向代理, 在 Nginx 的配置中對(duì)發(fā)送指令的服務(wù)器 IP 做了限制, 另外可以通過(guò)配置指向工作的 Salt-API 服務(wù)器;

  • Salt-API 負(fù)責(zé)和 Salt-Master 交互發(fā)送 SaltStack 的 Runner 與 Module 的 API 指令, Runner 指令是運(yùn)行在 Salt-Master 服務(wù)器上的, 可以讀取 master 配置, 也可以在一個(gè) Runner 中協(xié)調(diào)執(zhí)行多個(gè) Module 運(yùn)行結(jié)果;

  • Salt-Master 有兩個(gè)職責(zé), 一是接受 salt-api 指令, runner 在本地執(zhí)行, module 下發(fā)指令到對(duì)應(yīng)的 salt-minion, 另一職責(zé)是運(yùn)維同學(xué)手動(dòng)下發(fā)指令, 完成一些非常見的 minion 配置工作;

  • RsyncServer 負(fù)責(zé)中間件安裝文件, 自研軟件的文件存儲(chǔ)和下發(fā), RsyncServer 的文件存儲(chǔ)是由 Salt-Master 發(fā)起的, Salt-Master 接受到 salt-api 的應(yīng)用部署指令后, 會(huì)從部署指令中獲得部署包下載地址, 然后下載到指定部署包存儲(chǔ)目錄, 并做解壓操作; RsyncServer 的文件下發(fā)指令則是有 salt-minion 端的 Module 執(zhí)行觸發(fā)的。


  • 倉(cāng)庫(kù)部門和 IDC 之間通過(guò) VPN 聯(lián)通, 每個(gè)倉(cāng)庫(kù)的服務(wù)器上都安裝了 SaltStack 的 minion 端, minion 端是一個(gè) Python 進(jìn)程, 負(fù)責(zé)接收 Master 的 Module 指令, 并在本地執(zhí)行。另外 minion 端在執(zhí)行指令過(guò)程中需要將執(zhí)行過(guò)程中的輸出及時(shí)的輸出給用戶端, 讓用戶可以通過(guò) Web 端查看執(zhí)行過(guò)程的情況, 即運(yùn)維的可視化, 我們是通過(guò) minion 端的可視化模塊, 將執(zhí)行過(guò)程輸出通過(guò) HTTP POST 方式發(fā)送給 Web 端, Web 端將 POST 內(nèi)容存儲(chǔ)到任務(wù)執(zhí)行過(guò)程輸出表中, 前端通過(guò)輪詢方式讀取輸出表中的增量消息顯示給用戶端。


    我們采用的技術(shù)棧是 Java + Python。? 前端界面展示、 工作流、權(quán)限控制、任務(wù)下發(fā)這些都是用的 Java 的 Spring MVC + MyBatis; 后端用的是 Python + Shell, Python 寫了大量的 SaltStack 自定義模塊。


    InfoQ:為什么當(dāng)初要選擇 SaltStack 而沒(méi)有選擇 Ansible?


    趙玉開:?不可否認(rèn) Ansible 也是一個(gè)非常好的自動(dòng)化運(yùn)維工具, 但是基于以下兩點(diǎn)我們最終選擇了 SaltStack:

  • API 的易用性方面和 SaltStack 有差距, 我們的自動(dòng)化運(yùn)維系統(tǒng)一開始就有一個(gè)目標(biāo), 將開倉(cāng)部署以及推廣版本這些功能開放給物流運(yùn)營(yíng)人員, 所以必須做好前端用戶體驗(yàn), 這需要好用的 API, SaltStack 恰好有;

  • 性能,標(biāo)準(zhǔn) SSH 連接的時(shí)候比較耗時(shí),ZeroMQ 傳輸?shù)乃俣葧?huì)快很多。


  • InfoQ:在應(yīng)用部署自動(dòng)化這塊,你們是怎么做的?


    趙玉開:?應(yīng)用部署大致分為這么幾個(gè)步驟: 打包、下發(fā)文件、更新配置、停止啟動(dòng)實(shí)例、備份部署版本, 具體如下。

  • 我們使用的公司統(tǒng)一的打包系統(tǒng), 打包系統(tǒng)打好包, 部署任務(wù)審批通過(guò),自動(dòng)化運(yùn)維系統(tǒng)就可以通過(guò) API 獲得打包文件, 然后將部署包上傳到版本服務(wù)器, 并解壓縮,放到對(duì)應(yīng)版本目錄下;

  • 通過(guò) SaltStack 的 API 下發(fā)部署指令給部署目標(biāo)服務(wù)器, 部署指令是一個(gè) SaltStack 自定義模塊, 該模塊首先會(huì)執(zhí)行 rsync 指令從版本服務(wù)器上同步變更文件;

  • 文件下發(fā)之后更新配置, 通過(guò) Web 接口請(qǐng)求自動(dòng)化運(yùn)維的 Web 端下發(fā)配置文件, 然后更新配置文件, 我們線上的配置文件是通過(guò)環(huán)境變量來(lái)配置的, 所以不管有多少個(gè)庫(kù)房, 都不需要更新配置文件, 只有在特殊需求是設(shè)置環(huán)境變量, 就可以依據(jù)當(dāng)前作業(yè)單位的不同改變下發(fā)的配置文件的內(nèi)容;

  • 調(diào)用應(yīng)用的 stop.sh 腳本停止當(dāng)前實(shí)例, 再調(diào)用 start.sh 腳本啟動(dòng)實(shí)例, 這里有一個(gè)約定, 不管是 Web 應(yīng)用還是非 Web 應(yīng)用必須在部署目錄有一個(gè) bin 目錄下面有 start.sh 和 stop.sh 兩個(gè)文件;

  • 如果步驟 4 執(zhí)行成功, 那么將此版本的文件備份到當(dāng)前服務(wù)器上, 以備回滾使用。


  • InfoQ:自動(dòng)化運(yùn)維解決了你們哪些問(wèn)題?沒(méi)有解決哪些問(wèn)題?


    趙玉開:?自動(dòng)化運(yùn)維解決了我們開倉(cāng)周期長(zhǎng),人力成本高的問(wèn)題, 提升了全國(guó)部署推廣的效率, 大大減少了運(yùn)維同事的重復(fù)性工作, 把對(duì)成熟版本的推廣工作交給了運(yùn)營(yíng)人員, 減少了研發(fā)同事在推廣上線工作上的時(shí)間。


    現(xiàn)階段正在探索如何通過(guò)自動(dòng)化運(yùn)維技術(shù)快速排查問(wèn)題, 另外就是我們未來(lái)會(huì)有一些自動(dòng)化的物流作業(yè)單位,如何用自動(dòng)化運(yùn)維平臺(tái)管理好這些自動(dòng)化的設(shè)備和設(shè)備軟件也是我們?cè)谔剿鞯摹?/p>


    InfoQ:自動(dòng)化運(yùn)維平臺(tái)上線了這么長(zhǎng)時(shí)間,有做過(guò)復(fù)盤嗎?有哪些經(jīng)驗(yàn)可以分享給讀者?未來(lái)有什么計(jì)劃?


    趙玉開:?做過(guò)一些復(fù)盤, 每一期開發(fā)結(jié)束下一迭代開始的時(shí)候都會(huì)做復(fù)盤, 對(duì)現(xiàn)有問(wèn)題進(jìn)行總結(jié), 同時(shí)收集下一步的需求。? 目前看最深刻的體會(huì)是做自動(dòng)化運(yùn)維系統(tǒng)一定要做好元數(shù)據(jù)的管理,元數(shù)據(jù)要管理好服務(wù)器信息屬性、 應(yīng)用信息、應(yīng)用配置、實(shí)例管理以及作業(yè)單位, 這些元數(shù)據(jù)要在一開始就做好, 能自動(dòng)化收集的要自動(dòng)化收集, 動(dòng)態(tài)的參數(shù)一定要?jiǎng)討B(tài)控制, 比如 Redis、MySQL 都有主從關(guān)系, 元數(shù)據(jù)中要存儲(chǔ)這個(gè)主從關(guān)系, 但是不能寫死, 必須有機(jī)制來(lái)更新主從關(guān)系, 否則 Redis 哨兵程序更新了 Redis 主從關(guān)系, 或者 MySQL DBA 因?yàn)槟承┰蚯袚Q了 MySQL 的主從, 自動(dòng)化運(yùn)維系統(tǒng)的元數(shù)據(jù)沒(méi)有做對(duì)應(yīng)更新,再執(zhí)行指令時(shí)就會(huì)出問(wèn)題, 甚至發(fā)生事故。


    未來(lái)計(jì)劃有兩個(gè)方面:

  • 繼續(xù)通過(guò)自動(dòng)化運(yùn)維系統(tǒng)來(lái)提升運(yùn)維效率、 降低研發(fā)對(duì)應(yīng)用運(yùn)維的投入;

  • 做自動(dòng)化物流作業(yè)系統(tǒng)的自動(dòng)化運(yùn)維, 管好其中的設(shè)備和軟件服務(wù)。


  • InfoQ:在 CNUTCon 全球運(yùn)維技術(shù)大會(huì) 上,你將會(huì)為讀者分享哪些技術(shù)點(diǎn)?


    趙玉開:?這次大會(huì)我會(huì)給大家介紹下京東物流自動(dòng)化運(yùn)維平臺(tái)的技術(shù)架構(gòu), 并詳細(xì)介紹自動(dòng)化開倉(cāng)、批量部署的技術(shù)細(xì)節(jié)。




    CNUTCon 全球運(yùn)維技術(shù)大會(huì)將于 9 月 10-11 日在上海舉行,大會(huì)以“智能時(shí)代的新運(yùn)維”為主題,涵蓋 AIOps、SRE、DevOps、運(yùn)維監(jiān)控與安全等專場(chǎng),邀請(qǐng)了來(lái)自 Google、Uber、eBay、BAT、攜程、京東等公司大咖分享他們?cè)谧钚逻\(yùn)維技術(shù)實(shí)踐過(guò)程中遇到的坑與經(jīng)驗(yàn),現(xiàn)場(chǎng)為你解疑答惑,點(diǎn)擊“閱讀原文”了解更多精彩!9 折限時(shí)優(yōu)惠,報(bào)名時(shí)輸入?CNUTCon-KAITAO?還可再減 200 !




    總結(jié)

    以上是生活随笔為你收集整理的京东物流系统自动化运维平台技术揭密的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。