自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

京東物流倉(cāng)儲(chǔ)系統(tǒng)在618大促保障背后的這6條運(yùn)維秘訣

運(yùn)維 系統(tǒng)運(yùn)維 數(shù)據(jù)庫(kù)
在本篇我們將會(huì)詳細(xì)介紹京東物流倉(cāng)儲(chǔ)系統(tǒng)的數(shù)據(jù)庫(kù)架構(gòu),以及如何通過(guò)運(yùn)維自動(dòng)化平臺(tái)、性能優(yōu)化、故障自愈和數(shù)據(jù)結(jié)轉(zhuǎn)等步驟進(jìn)行數(shù)據(jù)庫(kù)運(yùn)維架構(gòu)的演進(jìn)。

京東物流極速的購(gòu)物體驗(yàn)背后隱藏著怎樣的秘訣?倉(cāng)儲(chǔ)和配送時(shí)效是其中最為關(guān)鍵的一環(huán)。京東物流超強(qiáng)倉(cāng)配體系,特別是在電商行業(yè)中獨(dú)有的倉(cāng)儲(chǔ)系統(tǒng),在其中起到了決定性的作用。

當(dāng)前京東的庫(kù)房已經(jīng)遍布全國(guó),京東倉(cāng)儲(chǔ)管理系統(tǒng)(簡(jiǎn)稱 WMS 系統(tǒng))是最核心的生產(chǎn)系統(tǒng),涵蓋了從入庫(kù),復(fù)核,打包,出庫(kù)、庫(kù)存和報(bào)表等等環(huán)節(jié)。

而作為系統(tǒng)最后端的數(shù)據(jù)庫(kù),不僅僅承擔(dān)著存儲(chǔ)數(shù)據(jù)的任務(wù),還是系統(tǒng)可用性的最后一道防線,如何保證倉(cāng)儲(chǔ)系統(tǒng)數(shù)據(jù)庫(kù)的高性能和高可用,直接決定了庫(kù)房生產(chǎn)是否能順暢進(jìn)行。

在本篇我們將會(huì)詳細(xì)介紹京東物流倉(cāng)儲(chǔ)系統(tǒng)的數(shù)據(jù)庫(kù)架構(gòu),以及如何通過(guò)運(yùn)維自動(dòng)化平臺(tái)、性能優(yōu)化、故障自愈和數(shù)據(jù)結(jié)轉(zhuǎn)等步驟進(jìn)行數(shù)據(jù)庫(kù)運(yùn)維架構(gòu)的演進(jìn)。

一、數(shù)據(jù)庫(kù)架構(gòu)

倉(cāng)儲(chǔ)系統(tǒng)的數(shù)據(jù)庫(kù)架構(gòu),主要分為兩種模式,一種是本地模式,一種是集中模式:

1.1   本地模式

本地模式是指當(dāng)前 WMS 系統(tǒng)的應(yīng)用和數(shù)據(jù)庫(kù)服務(wù)器都部署在本地庫(kù)房,目的是減少網(wǎng)絡(luò)延遲,提高作業(yè)效率。缺點(diǎn)是機(jī)房的電力和網(wǎng)絡(luò)環(huán)境略差,運(yùn)維難度較高。部署架構(gòu)圖如下:

 

1.2   集中模式

集中模式是指在 IDC 機(jī)房部署一套 WMS 系統(tǒng),多個(gè)區(qū)域的園區(qū)或庫(kù)房都通過(guò)網(wǎng)絡(luò)專線訪問(wèn),優(yōu)點(diǎn)是減少資源部署,架構(gòu)更為合理,便于運(yùn)維管理,缺點(diǎn)是部分區(qū)域網(wǎng)絡(luò)延遲較高,一旦 IDC 發(fā)生故障影響范圍較廣。部署架構(gòu)圖如下:

 

以上是京東倉(cāng)儲(chǔ)系統(tǒng)數(shù)據(jù)庫(kù)的兩種主要部署模式,目前主要是園區(qū)部署模式,也就是一個(gè)或多個(gè)庫(kù)房園區(qū)共用一個(gè)集群(屬于本地模式的一種)。

但是隨著業(yè)務(wù)規(guī)模的增長(zhǎng),全國(guó)各地庫(kù)房建設(shè)日益增多,數(shù)據(jù)量也與日倍增,而對(duì)系統(tǒng)的高性能和高可用的要求卻越來(lái)越高,如何在現(xiàn)有架構(gòu)模式下,還能保障系統(tǒng)的高效穩(wěn)定運(yùn)行,故障及時(shí)恢復(fù),都對(duì)倉(cāng)儲(chǔ)系統(tǒng)的運(yùn)維帶來(lái)極大的挑戰(zhàn)。

以下章節(jié)就詳細(xì)闡述一下我們是如何應(yīng)對(duì)這些挑戰(zhàn)的。

二、UDBA 運(yùn)維自動(dòng)化平臺(tái)

工欲善其事必先利其器,想要做好大規(guī)模系統(tǒng)的運(yùn)維管理,一定需要有自動(dòng)化的運(yùn)維平臺(tái)作為支持,同時(shí)也為了提高工作效率,減少和研發(fā)的溝通成本,庫(kù)房運(yùn)維 DBA 開(kāi)發(fā)了 UDBA 數(shù)據(jù)庫(kù)自動(dòng)化運(yùn)維平臺(tái)。該平臺(tái)除了是 DBA 日常自動(dòng)化運(yùn)維的操作平臺(tái),還為 WMS 研發(fā)、運(yùn)營(yíng)人員提供了日常所需的技術(shù)支持和信息查詢。

UDBA 數(shù)據(jù)庫(kù)自動(dòng)化運(yùn)維平臺(tái)的主要功能模塊如下所示:

 

三、性能優(yōu)化

由于倉(cāng)儲(chǔ)業(yè)務(wù)邏輯復(fù)雜,并且系統(tǒng)是從早期的 SQLServer 遷移到 MySQL 的,對(duì)數(shù)據(jù)庫(kù)是強(qiáng)依賴的關(guān)系。很多業(yè)務(wù)場(chǎng)景尤其 WMS5 的報(bào)表業(yè)務(wù)會(huì)涉及很多超大表 (單表數(shù)據(jù)量超過(guò) 1 千萬(wàn)行) 的關(guān)聯(lián),且查詢條件根據(jù)現(xiàn)場(chǎng)工作人員需求進(jìn)行組合修改,再加上部分表設(shè)計(jì)不合理以及查詢 SQL 語(yǔ)法不規(guī)范等問(wèn)題,給數(shù)據(jù)庫(kù)優(yōu)化帶來(lái)極大挑戰(zhàn)。

我們主要通過(guò)以下方式來(lái)保證數(shù)據(jù)高性能:

  • 實(shí)時(shí)監(jiān)控?cái)?shù)據(jù)庫(kù)性能,針對(duì)突發(fā)性數(shù)據(jù)庫(kù)出現(xiàn)性能問(wèn)題及時(shí)進(jìn)行故障排查和故障恢復(fù),保證業(yè)務(wù)生產(chǎn)正常進(jìn)行。
  • 每天對(duì) MySQL 慢日志進(jìn)行分析匯總后郵件抄送給相關(guān)研發(fā)同事,配合研發(fā)同事一起進(jìn)行數(shù)據(jù)庫(kù)優(yōu)化。
  • 周期性對(duì)數(shù)據(jù)庫(kù)進(jìn)行巡檢,檢查數(shù)據(jù)庫(kù)運(yùn)行狀態(tài),對(duì)壓力較大的數(shù)據(jù)庫(kù)進(jìn)行重點(diǎn)分析優(yōu)化。
  • 定期對(duì)研發(fā)同事尤其新入職同事進(jìn)行 SQL 培訓(xùn),主要針對(duì) MySQL 語(yǔ)法規(guī)范、MySQL 表設(shè)計(jì)、MySQL 查詢優(yōu)化等方面,提升研發(fā)同事的數(shù)據(jù)庫(kù)設(shè)計(jì)能力和 SQL 編寫能力,在開(kāi)發(fā)過(guò)程中提前規(guī)避常見(jiàn)的性能問(wèn)題。
  • 將優(yōu)化過(guò)程中遇到的問(wèn)題歸納分析整理,幫助研發(fā)同事認(rèn)識(shí)性能問(wèn)題后的本質(zhì)原因,避免重復(fù)出現(xiàn)相同故障。
  • 積極與研發(fā)同事溝通學(xué)習(xí),深入了解業(yè)務(wù)以便更好地從業(yè)務(wù)角度對(duì)數(shù)據(jù)庫(kù)進(jìn)行優(yōu)化。

在一次服務(wù)器巡檢中,我們使用 SHOW ENGINE INNODB STATUS 查看 MySQL 服務(wù)器運(yùn)行狀態(tài)時(shí),發(fā)現(xiàn)該數(shù)據(jù)庫(kù)存在死鎖問(wèn)題,通過(guò)多次排查,發(fā)現(xiàn)死鎖發(fā)生頻率較高,由于死鎖告警信息中的事務(wù)信息不全,我們第一時(shí)間聯(lián)系相關(guān)業(yè)務(wù)人員,了解相關(guān)業(yè)務(wù)實(shí)現(xiàn)邏輯,該業(yè)務(wù)通過(guò)程序來(lái)保證數(shù)據(jù)唯一性,采用 “先嘗試更新,后嘗試插入” 的事務(wù)順序來(lái)操作,在詳細(xì)了解業(yè)務(wù)邏輯后,通過(guò)模擬測(cè)試幫助研發(fā)同事認(rèn)識(shí)到該死鎖的核心原因,并在此基礎(chǔ)上提供改進(jìn)建議,最后將該問(wèn)題優(yōu)化方案整理成文檔抄送給更多研發(fā)同事。

四、故障自愈

倉(cāng)儲(chǔ)數(shù)據(jù)庫(kù)故障自愈系統(tǒng)主要解決兩個(gè)問(wèn)題,一個(gè)是故障的自動(dòng)切換,一個(gè)是組件的自動(dòng)恢復(fù)。系統(tǒng)功能圖如下所示:

 

首先硬件作為應(yīng)用系統(tǒng)的底層基礎(chǔ)設(shè)施,一旦出現(xiàn)故障將大大降低系統(tǒng)的可用性,倉(cāng)儲(chǔ)業(yè)務(wù)的數(shù)據(jù)庫(kù)集群分散在全國(guó)各地幾百個(gè)庫(kù)房,數(shù)據(jù)庫(kù)服務(wù)如何在遇到硬件等異常時(shí)快速的故障轉(zhuǎn)移,如何能降低各地網(wǎng)絡(luò)等外界環(huán)境對(duì)數(shù)據(jù)庫(kù)的性能影響?

其次系統(tǒng)在日常運(yùn)行中,因?yàn)?Bug 或者其他原因,可能會(huì)導(dǎo)致數(shù)據(jù)庫(kù)宕機(jī),從庫(kù)復(fù)制進(jìn)程中斷,復(fù)制延遲過(guò)大等等問(wèn)題,如何快速解決這些問(wèn)題,也成為服務(wù)質(zhì)量?jī)?yōu)良的關(guān)鍵衡量標(biāo)準(zhǔn)。

基于以上這些考慮和實(shí)際需求,我們結(jié)合基礎(chǔ)信息系統(tǒng),監(jiān)控系統(tǒng),以及業(yè)界成熟的 MHA 高可用方案,實(shí)現(xiàn)了故障的自動(dòng)切換,當(dāng)數(shù)據(jù)庫(kù)主庫(kù)或者從庫(kù)遇到異常,能夠順利得進(jìn)行自動(dòng)切換,保障數(shù)據(jù)庫(kù)服務(wù)的持續(xù)性,當(dāng)服務(wù)器有維護(hù)需求時(shí),提供手動(dòng)切換管理,更方便的進(jìn)行硬件維護(hù)。

同時(shí)基于 UDBA 數(shù)據(jù)庫(kù)自動(dòng)運(yùn)維平臺(tái),對(duì)全部 MySQL 群集復(fù)制情況進(jìn)行自動(dòng)探測(cè),自動(dòng)識(shí)別高延遲實(shí)例,并通過(guò)修改 innodb_flush_log_at_trx_commit 和 sync_binlog 的刷盤策略參數(shù)進(jìn)行快速恢復(fù),一旦復(fù)制正常,參數(shù)將自動(dòng)調(diào)整為標(biāo)準(zhǔn)值,同時(shí)復(fù)制的 IO 線程或 SQL 線程異常停止,也可進(jìn)行自動(dòng)啟動(dòng)。

上面的處理結(jié)果都將以短信、微信和郵件等方式,通知值班同事,處理過(guò)程在 UDBA 自動(dòng)運(yùn)維平臺(tái)上同樣可以查詢,方便對(duì)故障切換的進(jìn)一步分析和統(tǒng)計(jì)。

五、數(shù)據(jù)結(jié)轉(zhuǎn)

庫(kù)房數(shù)據(jù)有時(shí)效性強(qiáng)和生命周期短的特點(diǎn),對(duì)于數(shù)據(jù)量較大且操作頻繁的業(yè)務(wù)表,如果不進(jìn)行歷史數(shù)據(jù)歸檔,會(huì)存在嚴(yán)重性能問(wèn)題和磁盤存儲(chǔ)瓶頸,因此我們采用生產(chǎn)庫(kù)保留三月 + 報(bào)表庫(kù)保留一年的歸檔策略,對(duì)生產(chǎn)庫(kù)上超過(guò)三月” 歷史數(shù)據(jù)” 進(jìn)行刪除,對(duì)報(bào)表庫(kù)上超過(guò)一年的 “歷史數(shù)據(jù)” 結(jié)轉(zhuǎn)到 IDC 機(jī)房進(jìn)行存放。

在未引入自動(dòng)化結(jié)轉(zhuǎn)平臺(tái)前,需要 DBA 手動(dòng)在每套服務(wù)器上部署結(jié)轉(zhuǎn)程序,當(dāng)結(jié)轉(zhuǎn)條件發(fā)生變化時(shí)需要通過(guò)命令行共計(jì)批量更新每套服務(wù)器上的配置信息,DBA 無(wú)法準(zhǔn)確掌握每套服務(wù)器的結(jié)轉(zhuǎn)情況,導(dǎo)致運(yùn)維難度高且存在較高的誤操作風(fēng)險(xiǎn)。

針對(duì)庫(kù)房數(shù)據(jù)結(jié)轉(zhuǎn)的各項(xiàng)痛點(diǎn),在對(duì)結(jié)轉(zhuǎn)流程的抽象分析基礎(chǔ)上開(kāi)發(fā)了自動(dòng)化結(jié)轉(zhuǎn)平臺(tái),其架構(gòu)為:

 

自動(dòng)化優(yōu)化平臺(tái)有以下優(yōu)點(diǎn):

  • 調(diào)度作業(yè)集中管理,無(wú)需 DBA 再到每套服務(wù)器上部署代理作業(yè),結(jié)轉(zhuǎn)平臺(tái)根據(jù)調(diào)度配置自動(dòng)將調(diào)度作業(yè)推送到庫(kù)房服務(wù)器上運(yùn)行,可以根據(jù)業(yè)務(wù)需求輕松調(diào)整調(diào)度時(shí)間和結(jié)轉(zhuǎn)條件以及結(jié)轉(zhuǎn)服務(wù)器。
  • 歷史庫(kù)動(dòng)態(tài)擴(kuò)容,在京東率先引入新一代分布式關(guān)系型數(shù)據(jù)庫(kù) CockroachDB 作為歷史歸檔服務(wù)器,支持高并發(fā)的密集寫入操作,可以按需對(duì)集群進(jìn)行動(dòng)態(tài)擴(kuò)容,且能很好動(dòng)態(tài)適應(yīng)報(bào)表庫(kù)上表結(jié)構(gòu)變化。
  • 數(shù)據(jù)職責(zé)分離,DBA 作為數(shù)據(jù)庫(kù)管理員而不是數(shù)據(jù)管理員,能提供數(shù)據(jù)庫(kù)服務(wù)器相關(guān)信息但無(wú)法定義數(shù)據(jù)結(jié)轉(zhuǎn)條件,自動(dòng)結(jié)轉(zhuǎn)平臺(tái)將結(jié)轉(zhuǎn)條件的管理接口在權(quán)限控制的基礎(chǔ)上提供給數(shù)據(jù)管理員,明確劃分職責(zé)權(quán)限。
  • 實(shí)時(shí)掌握結(jié)轉(zhuǎn)調(diào)度信息,自動(dòng)結(jié)轉(zhuǎn)平臺(tái)提供豐富的報(bào)表和管理界面,幫助 DBA 輕松掌握當(dāng)前結(jié)轉(zhuǎn)調(diào)度信息和歷史結(jié)轉(zhuǎn)情況。

六、升級(jí)擴(kuò)容

由于各種歷史原因,目前庫(kù)房數(shù)據(jù)庫(kù)仍主要使用 2011 年發(fā)布的 MySQL 5.5 版本,隨著 MySQL 5.7 版本的逐漸穩(wěn)定,我們通過(guò)謹(jǐn)慎測(cè)試評(píng)估發(fā)現(xiàn),MySQL 5.7 可以帶來(lái)極大的性能提升,并且其完善和改進(jìn)了很多高可用性及可維護(hù)性方面的功能,能幫助 DBA 更好的管理 MySQL 數(shù)據(jù)庫(kù)。

  • 升級(jí) MySQL 5.7 可以帶來(lái)如下優(yōu)勢(shì):
  • 性能提升,在官方測(cè)試報(bào)告中,MySQL 5.7 在高并發(fā)環(huán)境下的處理能力相對(duì) MySQL 5.5 有數(shù)十倍提升。
  • 高可用性,MySQL5.7 版本引入多線程復(fù)制和基于 AfterSync 模式的半同步等復(fù)制特性,能有效減少主從復(fù)制延遲,提升數(shù)據(jù)安全。
  • 可維護(hù)性,MySQL5.7 版本引入 GTID 復(fù)制、Online DDL 及新版系統(tǒng)視圖和管理函數(shù)等,極大提升數(shù)據(jù)庫(kù)可維護(hù)性,降低 DBA 運(yùn)維風(fēng)險(xiǎn)和管理難度

由于庫(kù)房數(shù)據(jù)庫(kù)服務(wù)器長(zhǎng)期運(yùn)行在惡劣的機(jī)房環(huán)境中,從而產(chǎn)生 RAID 卡電源故障、服務(wù)器硬件老化、過(guò)保等引起老舊服務(wù)器性能變差的問(wèn)題,導(dǎo)致 DBA 疲于處理服務(wù)器宕機(jī)或服務(wù)器硬件引起性能瓶頸的各種事件,因此在升級(jí) MySQL 版本同時(shí),我們也優(yōu)先對(duì)業(yè)務(wù)操作頻繁的重點(diǎn)倉(cāng)進(jìn)行升級(jí)擴(kuò)容,使用 IO 性能更好的 SSD 硬盤以及 CPU 和內(nèi)存配置更高的服務(wù)器,提升數(shù)據(jù)庫(kù)高性能和高可用性,為庫(kù)房順利且高效生產(chǎn)提供有力保障。 

為避免數(shù)據(jù)庫(kù)升級(jí)擴(kuò)容影響現(xiàn)有生產(chǎn),我們將所有風(fēng)險(xiǎn)操作安排到半夜庫(kù)房停產(chǎn)運(yùn)行,將升級(jí)過(guò)程進(jìn)行拆分細(xì)化,對(duì)每個(gè)升級(jí)環(huán)節(jié)進(jìn)行評(píng)估論證,編寫大量升級(jí)工具和檢查腳本來(lái)提升升級(jí)效率和降低誤操作風(fēng)險(xiǎn),并積極配合研發(fā)同事進(jìn)行測(cè)試驗(yàn)證,努力將升級(jí)擴(kuò)容帶來(lái)的負(fù)面影響降到最低,保障庫(kù)房正常生產(chǎn)。 

責(zé)任編輯:龐桂玉 來(lái)源: ITPUB
相關(guān)推薦

2018-07-11 06:06:20

物流倉(cāng)儲(chǔ)運(yùn)維數(shù)據(jù)庫(kù)

2015-07-14 09:24:03

京東618MySQL

2016-06-21 16:25:26

京東京東云云計(jì)算

2016-01-13 14:54:50

京東京東大腦

2011-02-28 14:14:06

2017-06-08 09:36:42

京東服務(wù)器

2016-06-13 15:48:33

京東

2021-03-10 11:18:21

高可用系統(tǒng)限流

2015-06-23 11:04:44

京東物流

2013-11-13 10:04:52

雙十一運(yùn)維數(shù)據(jù)中心

2018-12-05 08:30:27

IT運(yùn)維邏輯

2015-07-17 09:41:30

京東產(chǎn)品技術(shù)支持

2017-11-10 16:59:42

運(yùn)維轉(zhuǎn)型物流

2019-10-29 16:29:28

運(yùn)維架構(gòu)開(kāi)發(fā)

2011-01-05 15:39:44

2024-11-27 10:44:48

2018-07-05 10:56:42

白熊視頻 京東618

2016-07-21 17:50:39

京東

2019-01-08 09:34:05

蘇寧金融紅包流量
點(diǎn)贊
收藏

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