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

解決IT運(yùn)維人員之痛:京東云自動(dòng)化運(yùn)維體系構(gòu)建實(shí)踐

原創(chuàng)
運(yùn)維 系統(tǒng)運(yùn)維 自動(dòng)化
京東云作為京東集團(tuán)能力對外輸出的窗口,實(shí)現(xiàn)京東能力+云平臺賦能客戶。其產(chǎn)品覆蓋IaaS層,PaaS層和基于此構(gòu)建的電商、物流、金融和保險(xiǎn)等領(lǐng)域的服務(wù)和解決方案。本文主要從保障這些服務(wù)穩(wěn)定性和效率的角度,講解京東云自動(dòng)化運(yùn)維體系構(gòu)建以及實(shí)施之路。

【51CTO.com原創(chuàng)稿件】京東云作為京東集團(tuán)能力對外輸出的窗口,實(shí)現(xiàn)京東能力+云平臺賦能客戶。其產(chǎn)品覆蓋IaaS層,PaaS層和基于此構(gòu)建的電商、物流、金融和保險(xiǎn)等領(lǐng)域的服務(wù)和解決方案。本文主要從保障這些服務(wù)穩(wěn)定性和效率的角度,講解京東云自動(dòng)化運(yùn)維體系構(gòu)建以及實(shí)施之路。

[[225421]]

2017 年 12 月 1 日-2 日,由 51CTO 主辦的 WOTD 全球軟件開發(fā)技術(shù)峰會(huì)在深圳中州萬豪酒店隆重舉行。

京東云資深架構(gòu)師在主會(huì)場與來賓分享了"京東云自動(dòng)化運(yùn)維體系構(gòu)建"的主題演講,以下是演講實(shí)錄。

說到京東云,我們最看重運(yùn)維,需要自動(dòng)化運(yùn)維平臺。對此有幾個(gè)關(guān)鍵問題,主要是圍繞安全、部署變更、網(wǎng)絡(luò)管理、監(jiān)控管理......利用自動(dòng)化運(yùn)維來提高平臺架構(gòu)穩(wěn)定性和人員的開發(fā)效率。

在京東云的整體環(huán)境中,除了有我們技術(shù)團(tuán)隊(duì)所管理和維護(hù)的云自身應(yīng)用之外,還啟用并提供著各種 SaaS 服務(wù)。

如何保持客戶在云端業(yè)務(wù)的穩(wěn)定性?我們對此進(jìn)行了深入的研究和探索,下面分四個(gè)部分為大家講解:

  • 京東云自動(dòng)化運(yùn)維基礎(chǔ)組件
  • 京東云自動(dòng)化運(yùn)維部署介紹
  • 京東云自動(dòng)化運(yùn)維監(jiān)控系統(tǒng)
  • 總結(jié)與展望

京東云自動(dòng)化運(yùn)維基礎(chǔ)組件

針對上述問題,我們從四個(gè)方面進(jìn)行入手:

  • 服務(wù)與資源管理
  • 任務(wù)調(diào)度管理
  • 監(jiān)控平臺
  • 客戶端

如上圖所示,京東云運(yùn)維平臺大致的搭建路線圖為:基礎(chǔ)組件→客戶端體系 →部署系統(tǒng)(包括:各種發(fā)布系統(tǒng)、任務(wù)調(diào)度系統(tǒng)、以及監(jiān)控系統(tǒng)),最終對運(yùn)維平臺進(jìn)行完善,從而更好地服務(wù)于我們的客戶。

服務(wù)與資源管理

首先我們來看第一個(gè)基礎(chǔ)組件:對于服務(wù)組織資源的管理,即運(yùn)用 CMDB 來實(shí)現(xiàn)所謂的配置管理。

通過 CMDB 的“服務(wù)樹”概念,我們可以掌握如下三個(gè)方面:

  • 找到各個(gè)服務(wù)項(xiàng)之間的依賴關(guān)系,進(jìn)而獲知它們在哪里被用到、由誰在使用、以及其本身所具備的用處。
  • 機(jī)器狀態(tài)。對于京東這樣體量的大公司而言,機(jī)器的數(shù)量多達(dá)十萬左右,我們需要掌握其中每一臺機(jī)器的當(dāng)前狀態(tài)、具體的機(jī)型、坐落在哪個(gè)機(jī)房、以及它們是如何被使用的。
  • 角色管理與基于角色的權(quán)限控制,我們需要掌握到具體是誰、能夠在什么時(shí)候、進(jìn)行什么樣的操作、實(shí)現(xiàn)什么功能。

所以說,“服務(wù)樹”主要涉及到服務(wù)在系統(tǒng)中的實(shí)時(shí)信息,包括:哪個(gè)服務(wù)處于哪臺機(jī)器之上,有哪些實(shí)例,屬于哪個(gè) App,具有哪些內(nèi)部邏輯過程,如何對外部申請所需的權(quán)限,以及我們?nèi)绾螌?shí)現(xiàn)對它的監(jiān)控等。這些都需要能從服務(wù)器上獲取到。

其次是 Naming service,它能夠解決服務(wù)之間的解耦關(guān)系,也就是服務(wù)和實(shí)例間的關(guān)聯(lián)關(guān)系、以及服務(wù)向外所提供的窗口。

上圖右側(cè)展示了“服務(wù)樹”與名字服務(wù)的示意圖,最下方展示了一個(gè)從應(yīng)用到實(shí)例關(guān)系的解耦,往上則是客戶端的 back off(解耦合)。

任務(wù)調(diào)度管理

第二個(gè)基礎(chǔ)組件是任務(wù)調(diào)度管理。在實(shí)際場景中,不管我們是要協(xié)同做某個(gè)操作、還是進(jìn)行發(fā)布上線、或是對文件進(jìn)行部署與分發(fā)。

這些都需要系統(tǒng)去調(diào)度目標(biāo)機(jī)器,以完成相應(yīng)的任務(wù),也就是我們必須要求指定的機(jī)器能夠按照指定的策略,進(jìn)行指定的命令。由于該過程具有實(shí)時(shí)性、批量性和共生性,因此對于系統(tǒng)的支撐能力極具挑戰(zhàn)性。

同時(shí),我們需要通過策略來定義不同類型的并發(fā)度,比如要對一百臺機(jī)器進(jìn)行發(fā)布上線,那么我們不會(huì)將它們予以同時(shí)部署,而是分批次地進(jìn)行并發(fā)。

因此我們需要規(guī)定每次并發(fā)的具體任務(wù),判定成功與否的邏輯關(guān)系,以及檢驗(yàn)具體的完成程度,并且還要找出那些超時(shí)的狀態(tài)。由于這些都是通過底層架構(gòu)來構(gòu)建出的各種業(yè)務(wù),所以它們的調(diào)度邏輯實(shí)際上都是一樣的。

另外,所有的執(zhí)行操作都需要是可追溯的,包括能夠知曉什么人、在什么時(shí)間、進(jìn)行了什么操作,可見安全性和規(guī)范性是非常重要的。

而如果出現(xiàn)了故障,我們需要及時(shí)地截獲輸出,進(jìn)而定位問題。這些都是任務(wù)調(diào)度系統(tǒng)需要基于服務(wù)樹和 Naming Service 來實(shí)現(xiàn)的基礎(chǔ)邏輯。

監(jiān)控平臺

第三個(gè)基礎(chǔ)組件就是監(jiān)控平臺。監(jiān)控?zé)o非是從數(shù)據(jù)采集、到數(shù)據(jù)匯聚、再到存儲處理的過程。

不同于平時(shí)常見的數(shù)據(jù)監(jiān)控,我們構(gòu)建的是時(shí)序性數(shù)據(jù)存儲(TSDB)。由于需要查詢的數(shù)據(jù)點(diǎn)非常多,因此我們將每次查詢和收集到的監(jiān)控點(diǎn)信息按照順序存儲起來。

另外,我們的系統(tǒng)具有“讀少寫多”的特點(diǎn),即:“寫”(寫入數(shù)據(jù))相對比較均衡;而“讀”(讀取數(shù)據(jù))則具有突發(fā)性。

比如說:查看一個(gè)監(jiān)控的狀態(tài),是屬于隨時(shí)做的操作。一般此類寫操作是以 1 秒、10 秒、或 1 分鐘作為采集間隔,是一個(gè)比較頻發(fā)的過程。而讀操作則發(fā)生得比較突兀,所以我們需要做到讀寫分離。

因此,我們基于 ES(elasticsearch)實(shí)現(xiàn)了 TSPD,其中涉及到兩種封裝:

  • 對于熱點(diǎn)數(shù)據(jù)的封裝,我們將較為重要的數(shù)據(jù),以及那些實(shí)時(shí)的數(shù)據(jù)存放在 Redis 中。
  • 同樣,我們對歷史數(shù)據(jù)也會(huì)進(jìn)行 ES,然后再封裝,從而實(shí)現(xiàn)了讀寫的分離。這種數(shù)據(jù)的雙寫過程,合理地保證了數(shù)據(jù)的高可用。

監(jiān)控?cái)?shù)據(jù)的另一個(gè)特點(diǎn)是自動(dòng)抽樣,有時(shí)候一些頻發(fā)的查詢會(huì)牽扯到較大的時(shí)間跨度。

例如:一個(gè)月甚至是一年。由于我們的采集數(shù)據(jù)間隔是 1 秒、10 秒、或 1 分鐘,那么如果直接去查詢所有數(shù)據(jù)點(diǎn),需要產(chǎn)生龐大的數(shù)據(jù)量,當(dāng)然也就很難實(shí)現(xiàn)。

因此,我們對寫操作進(jìn)行了自動(dòng)抽樣。當(dāng)查詢 15 天以上的數(shù)據(jù)時(shí),我們會(huì)把這些數(shù)據(jù)以每分鐘、或每小時(shí)進(jìn)行聚合,然后放在庫中,進(jìn)而查詢一個(gè)月的數(shù)據(jù)。

通過自適應(yīng)路由的方式,我們就可以查到有限量的一小時(shí)數(shù)據(jù),同時(shí)我們的數(shù)據(jù)庫、以及業(yè)務(wù)系統(tǒng)速度也能具有較快的水平。

另外,對于那些實(shí)時(shí)的數(shù)據(jù)處理,我們主要采用的是多地部署和基于JNS的多調(diào)度過程,從而實(shí)現(xiàn)了多維度的實(shí)時(shí)計(jì)算。  

客戶端

第四個(gè)基礎(chǔ)組件就是客戶端,由于所有的業(yè)務(wù)都需要客戶端,因此對于京東這樣體量的公司而言,會(huì)細(xì)分為部署類(如 JNS)、監(jiān)控類、初始化等客戶端類型。

設(shè)想一下,如果我們需要對十萬臺機(jī)器進(jìn)行加載部署或是上線升級,其工作量是可想而知的。

就算我們只是維護(hù)十幾萬機(jī)器的 Agent,由于環(huán)境復(fù)雜,且存在著多個(gè)IP,如果只是按照單一維度去處理諸如“什么時(shí)候、出現(xiàn)什么了問題”的話,既耗時(shí)又耗力。

所以在此我們引入了 Agent 的資源超限這一重要概念。比如說:對 Agent 的監(jiān)控,由于占有了部分計(jì)算資源,則有可能將當(dāng)前的服務(wù)宕機(jī),那么這種本身處于服務(wù)之外的監(jiān)控就影響到了服務(wù)本身的穩(wěn)定性。

可見對于 Agent 客戶端需要做到如下方面:

  • 管理所有 Agent 的部署和升級。
  • 維護(hù)各個(gè) Agent 的存活性。即在發(fā)現(xiàn)哪臺機(jī)器上的 Agent 宕機(jī)的時(shí)候,我們需要知道如何將其重新激活上線。
  • 資源超限守護(hù)。
  • 分級發(fā)布。

在具體實(shí)現(xiàn)上,我們運(yùn)用 ifrit 進(jìn)行管控。即當(dāng)一臺機(jī)器在引入某個(gè)服務(wù)時(shí),負(fù)責(zé)管理的 Agent 會(huì)在我們的 ifrit 服務(wù)器上進(jìn)行注冊,以告知其當(dāng)前所處的分機(jī)房和使用的 Agent 的版本。

那么它對應(yīng)的客戶端就可以相應(yīng)地將這些信息包下載下來,從而掌握 Agent 的最新版本等信息。這就形成了一個(gè)簡單的客戶端體系結(jié)構(gòu)。

京東云自動(dòng)化運(yùn)維部署介紹

有了上述客戶端與組件體系的構(gòu)建基礎(chǔ),我們進(jìn)一步構(gòu)建部署和發(fā)布任務(wù)就相對比較容易了。

我們先看看應(yīng)用的部署系統(tǒng)。它除了實(shí)現(xiàn)應(yīng)用部署之外,還管理著各種服務(wù)的維護(hù)和資源、以及接入的過程。

如上圖所示:我們除了“往前”進(jìn)行了編譯構(gòu)建,還“往后”實(shí)現(xiàn)了流量接入。

如上圖所示,該 Agent 在此處有著一個(gè)核心的要求:實(shí)現(xiàn)跨平臺。由于京東整體平臺的環(huán)境較為復(fù)雜,我們有不同的虛擬機(jī)、Docker、物理機(jī),它們需要把前面所提到的多種操作融合起來。

因此我們需要做到如下容錯(cuò)功能:

  • 不允許出現(xiàn)由于單臺宕機(jī)而引發(fā)服務(wù)故障。
  • 出現(xiàn)了服務(wù)故障,系統(tǒng)可以實(shí)現(xiàn)自我發(fā)現(xiàn)。
  • 面對雙十一和 618 之類的重要促銷場景。系統(tǒng)能夠快速擴(kuò)容,以應(yīng)對此類流量的驟增。

針對上述功能的實(shí)現(xiàn),我們在部署中分為兩種類型:

  • 基于 Docker 的鏡像輸出。
  • 基于傳統(tǒng)物理機(jī)或虛擬機(jī)的包輸出。

一般的流程是:編譯構(gòu)建自身產(chǎn)品庫(其中包含代碼包和代碼項(xiàng))→通過部署服務(wù)和上述調(diào)度系統(tǒng)的部署服務(wù)進(jìn)行發(fā)布(在物理機(jī)和容器上都可實(shí)現(xiàn))→部署完成開始運(yùn)行→對運(yùn)行予以維護(hù)(尤其對鏡像日志進(jìn)行收集)→通過日志服務(wù),進(jìn)一步做分析。

同時(shí)我們在前端做好了流量的接入,中間部分也提供了一個(gè) LB(負(fù)載均衡)的網(wǎng)絡(luò)。通過上述兩種部署方式,我們可以根據(jù)服務(wù)的實(shí)際需要進(jìn)行按需升級。

另外,我們此處采用的是基于 NS 的服務(wù)自動(dòng)化與資源管理。它并不需要關(guān)心當(dāng)前服務(wù)的具體過程是如何被實(shí)現(xiàn)的,而只注重:當(dāng)前的容量、需要什么資源、以及能夠獲得的資源。

京東云自動(dòng)化運(yùn)維監(jiān)控系統(tǒng)

除了上述提到的部署,我們對監(jiān)控系統(tǒng)也十分重視。監(jiān)控最重要的作用就是在出現(xiàn)問題時(shí)能夠及時(shí)恢復(fù)。

要實(shí)現(xiàn)這一點(diǎn)就必須做到如下方面:

  • 能在第一時(shí)間發(fā)現(xiàn)問題,這是恢復(fù)的基礎(chǔ)。
  • 快速定位問題,及時(shí)判斷問題出在哪里,是虛擬機(jī)上還是硬件上。
  • 能夠自動(dòng)運(yùn)用既定的算法,通過自動(dòng)調(diào)度預(yù)案或人工響應(yīng)予以快速處理和恢復(fù)。

因此,面對既有虛擬機(jī)又有 Docker 的復(fù)雜環(huán)境,為了保證服務(wù)器不停止運(yùn)行,我們在上線過程中采用的是部署聯(lián)動(dòng)式的分級發(fā)布。

它可以監(jiān)控到某個(gè)服務(wù)是處于機(jī)器層、服務(wù)層,還是在對外流量接入層、甚至是在網(wǎng)絡(luò)層。這些都是監(jiān)控所需要解決的問題。

上圖是監(jiān)控的整體架構(gòu),這里展示了從底層的數(shù)據(jù)抽象、到數(shù)據(jù)的采集,然后經(jīng)過數(shù)據(jù)處理,以及離線處理的全過程。

其中數(shù)據(jù)的采集模式包括:采集 Agent、外部探測和 API 推送。

同時(shí)在處理邏輯上包括了:如何去判斷異常類型,以及針對異常所做出的報(bào)警類型和采取的是運(yùn)維通訊還是研發(fā)通訊等方式。我們對這些步驟都事先進(jìn)行了較好的規(guī)劃。

當(dāng)然,這些故障本身又屬于事件類型。因此我們需要考慮如何將事件存儲起來,以方便查詢和進(jìn)一步做出相應(yīng)的決策。

由于先前的事件可能會(huì)影響到后續(xù)事件,因此如果您擁有一個(gè)很好的事件庫,那么就能夠讓系統(tǒng)的下游獲取到上游究竟是何時(shí)何地出現(xiàn)了何種故障,這些對于下游的排障都是極有幫助的。

與此同時(shí),我們也會(huì)對監(jiān)控的數(shù)據(jù)進(jìn)行一些離線處理,通過各種高效的算法,反饋到計(jì)算相應(yīng)的報(bào)警之中。最終各種數(shù)據(jù)都是以趨勢圖或 Dashboard 的方式來展示各種事件和報(bào)警。

有了前面的基礎(chǔ),我們所構(gòu)建的京東云監(jiān)控體系就由如下四種監(jiān)控類型組成:

  • 基礎(chǔ)監(jiān)控,針對的是機(jī)器層面,不需要用戶去配置,自動(dòng)采集的是 CPU、內(nèi)存、硬盤、網(wǎng)絡(luò)等簡單的信息。
  • 存活監(jiān)控,針對的是服務(wù)監(jiān)控,包括監(jiān)控進(jìn)程、端口和語義等方面。
  • 性能監(jiān)控,針對的是服務(wù)層的對外表現(xiàn)狀況。我們通過四大核心指標(biāo),來解決服務(wù)性能上是否存在異常。同時(shí)我們運(yùn)用日志監(jiān)控來收集pv、錯(cuò)誤和容量,并確定所謂的異常邊界的問題。
  • 業(yè)務(wù)監(jiān)控,類似于黑盒子,從用戶的角度來觀察服務(wù),發(fā)現(xiàn)問題。例如:所有服務(wù)指標(biāo)狀態(tài)都顯示 OK,但是服務(wù)對外表現(xiàn)不佳,網(wǎng)站無法被訪問。

這個(gè)問題實(shí)際上對于京東來說會(huì)非常地嚴(yán)重,因?yàn)樗鼤?huì)直接影響到用戶流量乃至用戶訂單的損失,所以我們要從用戶的層面上做好黑盒檢測。

基礎(chǔ)監(jiān)控

具體來說,對于機(jī)器監(jiān)控,我們從采集、到計(jì)算、再到報(bào)警,實(shí)現(xiàn)了機(jī)器連通性的全程自動(dòng)化,從而免于人工的干預(yù)。

同時(shí)我們給各種報(bào)警指標(biāo)設(shè)定了默認(rèn)值,比如說:通過發(fā)現(xiàn)某臺機(jī)器的 cpu.idle 小于 10%,我們就可以獲知它所隸屬的服務(wù),從服務(wù)名稱獲知其維護(hù)者是誰,進(jìn)而向其維護(hù)者發(fā)出報(bào)警信息,通過報(bào)警信息我們就能大概知曉相關(guān)的數(shù)據(jù),這樣便實(shí)現(xiàn)了后臺聯(lián)動(dòng)。

存活監(jiān)控

對于存活監(jiān)控來說,主要查看的是進(jìn)程以及端口兩個(gè)方面是否存活。為了實(shí)現(xiàn)部署聯(lián)動(dòng),我們規(guī)定了進(jìn)程與端口的部署路徑。

有了進(jìn)程的路徑,我們就能獲知進(jìn)程的類型和對外開通的端口,從而實(shí)現(xiàn)了自然監(jiān)控。

性能監(jiān)控

我們再來看性能監(jiān)控方面,它主要關(guān)注的是服務(wù)對外的指標(biāo),該指標(biāo)一般來自于日志。

為了統(tǒng)一,我們事先規(guī)定、規(guī)范、并約定一種日志格式,從多個(gè)維度讀取日志信息里的不同 tag(標(biāo)簽)值。

比如說:從宏觀層面上看京東的整體流量是平穩(wěn)的,但是我們通過多維度的聚合,就能發(fā)現(xiàn)某個(gè)省的機(jī)房流量存在著細(xì)微的底層波動(dòng)。

當(dāng)然在采集方式上除了從日志里主動(dòng)抓取之外,我們還能從程序和用戶處的報(bào)警來獲知。

業(yè)務(wù)監(jiān)控

業(yè)務(wù)監(jiān)控是從用戶處查看服務(wù)是否正常。例如:電商常用到的是通過模擬全國各地的用戶訪問來發(fā)現(xiàn)分省份、分運(yùn)營商或者分機(jī)房訪問的情況。

這就是運(yùn)用外網(wǎng)或是自定義的方式來測試業(yè)務(wù)。另外,我們也會(huì)運(yùn)用模擬云操作的方式,去監(jiān)控云服務(wù)。

例如:模擬一個(gè)用戶登錄到云網(wǎng)站→購買一臺主機(jī)→部署一個(gè)鏡像→進(jìn)行一次發(fā)布。

我們來判斷全程是否一切正常。如此,我們就能夠從用戶的角度,先于用戶發(fā)現(xiàn)問題、處理問題、并排除故障。

總結(jié)與展望

如上圖所示,我們最終在前面的基礎(chǔ)上構(gòu)建了京東云的自動(dòng)化運(yùn)維平臺 ark。

在界面上,它能夠提供:

  • 配置管理、JNS 管理和資源管理。
  • 當(dāng)天的部署過程。
  • 應(yīng)用相關(guān)的工具和組件。
  • 各種報(bào)表。
  • 監(jiān)控的對外展示,包括如何做對比、報(bào)表和查詢。

總結(jié)起來,我們的監(jiān)控自動(dòng)化平臺,通過各種技術(shù)的運(yùn)用基本實(shí)現(xiàn)了服務(wù)化,做到了全生命周期的 DevOps。

面對數(shù)量龐大的 SaaS 客戶,我們的解決方案為他們保證了交付效率、節(jié)約了成本、并為各種可能碰到的問題做好了準(zhǔn)備。 

[[225423]]

鄭永寬,京東云資深架構(gòu)師,華中科技大學(xué)碩士。擁有 6 年自動(dòng)化運(yùn)維平臺研發(fā)運(yùn)營經(jīng)驗(yàn)。2011 年-2016 年任百度自動(dòng)化運(yùn)維平臺經(jīng)理,主要負(fù)責(zé)分布式任務(wù)調(diào)度系統(tǒng),數(shù)據(jù)傳輸系統(tǒng),百度部署發(fā)布系統(tǒng)。2016 年至今,任京東云運(yùn)維平臺負(fù)責(zé)人,主要負(fù)責(zé)京東云自動(dòng)化運(yùn)維體系構(gòu)建。

【51CTO原創(chuàng)稿件,合作站點(diǎn)轉(zhuǎn)載請注明原文作者和出處為51CTO.com】

責(zé)任編輯:武曉燕 來源: 51CTO
相關(guān)推薦

2017-12-01 11:34:44

京東京東云自動(dòng)化運(yùn)維

2014-08-04 10:10:35

IT運(yùn)維自動(dòng)化運(yùn)維

2015-06-24 10:42:19

云計(jì)算運(yùn)維自動(dòng)化運(yùn)維ANSIBLE

2015-10-08 10:55:23

云服務(wù)自動(dòng)化運(yùn)維 ANSIBLE

2015-07-07 08:54:27

云計(jì)算自動(dòng)化運(yùn)維

2017-07-25 10:53:27

2013-04-16 14:55:21

自動(dòng)化運(yùn)維Puppet實(shí)戰(zhàn)

2014-09-22 11:24:18

運(yùn)維

2012-10-22 14:54:48

2017-10-13 13:14:35

互聯(lián)網(wǎng)

2010-08-12 17:39:07

網(wǎng)站運(yùn)維自動(dòng)化管理

2012-05-05 21:48:43

puppet自動(dòng)化運(yùn)維

2012-05-05 22:27:46

puppet自動(dòng)化運(yùn)維

2012-05-05 21:28:44

2013-04-11 17:31:28

運(yùn)維自動(dòng)化Cobbler

2018-06-23 07:31:05

2015-08-05 09:53:34

運(yùn)維自動(dòng)化

2017-06-26 10:23:42

傳統(tǒng)運(yùn)維京東金融

2017-12-03 15:48:12

2013-06-19 14:50:14

云計(jì)算
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 欧美一区二区久久 | 性色在线 | 国产日韩欧美激情 | 国产精品久久精品 | 成人毛片视频在线播放 | 久久久久久久综合色一本 | 性国产丰满麻豆videosex | 国产伦精品一区二区三区高清 | 国产精品高潮呻吟久久久久 | 亚洲国产精品一区 | 久久综合一区二区三区 | 亚洲精品一区二区三区免 | 一区二区三区视频在线 | 精品一区av| 久久久久国产精品一区二区 | 亚洲成av人片在线观看无码 | 无码国模国产在线观看 | 国产黄色小视频 | 亚洲精品1 | 91在线一区二区三区 | 精品成人一区 | 久草在线在线精品观看 | 天堂av免费观看 | 黄色a视频 | 成人激情视频网 | 天天草天天干天天 | 伊人网一区 | 99re在线播放 | 国产成人网 | 成人在线播放网站 | 毛片毛片毛片毛片 | av在线二区 | 国产一区二区三区四区hd | 亚洲激情一区二区三区 | 久久久国产精品视频 | 国产高清视频一区 | 午夜私人影院在线观看 | 国产在线一区二区三区 | 久久99国产精一区二区三区 | 久久一热 | 欧美视频在线一区 |