偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

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

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

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

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

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

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

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

1.1   本地模式

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

 

1.2   集中模式

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

 

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

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

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

二、UDBA 運(yùn)維自動化平臺

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

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

 

三、性能優(yōu)化

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

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

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

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

四、故障自愈

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

 

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

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

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

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

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

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

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

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

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

 

自動化優(yōu)化平臺有以下優(yōu)點:

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

六、升級擴(kuò)容

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

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

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

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

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

2018-07-11 06:06:20

物流倉儲運(yùn)維數(shù)據(jù)庫

2015-07-14 09:24:03

京東618MySQL

2016-06-21 16:25:26

京東京東云云計算

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

京東

2015-06-23 11:04:44

京東物流

2021-03-10 11:18:21

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

2018-12-05 08:30:27

IT運(yùn)維邏輯

2013-11-13 10:04:52

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

2024-11-27 10:44:48

2017-11-10 16:59:42

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

2015-07-17 09:41:30

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

2011-01-05 15:39:44

2019-10-29 16:29:28

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

2016-07-21 17:50:39

京東

2018-07-05 10:56:42

白熊視頻 京東618

2017-05-31 09:29:00

IT運(yùn)維算法
點贊
收藏

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