精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

58速運(yùn)架構(gòu)實(shí)戰(zhàn):拆分服務(wù)與DB,突破“中心化”瓶頸

開(kāi)發(fā) 架構(gòu) 開(kāi)發(fā)工具
58 速運(yùn)作為覆蓋中國(guó)及東南亞地區(qū)的同城貨運(yùn)平臺(tái),2018 年開(kāi)始了全新的速運(yùn) 2.0 時(shí)代

很高興有這次機(jī)會(huì),跟大家分享一下我們 58 速運(yùn)微信小程序的事件。我是后端平臺(tái)的負(fù)責(zé)人,從 2017 年底開(kāi)始負(fù)責(zé)我們 58 速運(yùn)的微信小程序的開(kāi)發(fā)工作。

本次分享主要從以下幾個(gè)方面來(lái)進(jìn)行:

  • 58 速運(yùn)模式
  • 小程序的意義
  • 小程序架構(gòu)實(shí)戰(zhàn)
  • 總結(jié)

58 速運(yùn)模式

58 速運(yùn)是覆蓋中國(guó)及東南亞地區(qū)的同城貨運(yùn)平臺(tái),2018 年開(kāi)始了全新的速運(yùn) 2.0 時(shí)代:

速運(yùn)模式

司機(jī)通過(guò)司機(jī)加盟的流程加入到我們,登錄司機(jī)端 APP,就可以開(kāi)始接單了;而用戶(hù)通過(guò) APP 或者是用戶(hù)端的 H5 登錄上去,可以跟司機(jī)下單,我們的推送系統(tǒng)經(jīng)過(guò)一系列的算法,推送給附近的司機(jī),然后司機(jī)搶單,到達(dá)目的地,將賬單發(fā)送給用戶(hù),用戶(hù)確定定單、收款,這個(gè)過(guò)程就結(jié)束了。

小程序的意義

那么問(wèn)題來(lái)了,有了我們司機(jī)端的 APP 和用戶(hù)端,為什么還要做微信小程序呢,它對(duì)我們的 58 速運(yùn)究竟有什么意義呢?

首先來(lái)解釋一下什么是速運(yùn)的 2.0。

在舊的 1.0 時(shí)代,司機(jī)只能通過(guò)加盟接單,并且想要成功接單還需要一系列的審核流程,因?yàn)槲覀円WC服務(wù)質(zhì)量,之后再登錄我們的 APP 才能完成。

我們對(duì)司機(jī)有一系列的審核、管理工作。用戶(hù)登錄我們的 APP 以后,只能給我們的平臺(tái)司機(jī)下單。

速運(yùn) 2.0 就是要把這個(gè)中心化的過(guò)程打破,要做去中心化的過(guò)程。

司機(jī)只要登錄了司機(jī)端的微信小程序就能夠接單,不用加盟;用戶(hù)登錄微信小程序,就能給所有的司機(jī)下單,不管這個(gè)司機(jī)是否在我們的平臺(tái)注冊(cè)過(guò)。

小程序的架構(gòu)實(shí)戰(zhàn)

現(xiàn)有架構(gòu)

這是現(xiàn)有的架構(gòu),如上圖:

  • 接入層有安卓、iOS、H5;
  • 服務(wù)層就是司機(jī)端服務(wù)、用戶(hù)端服務(wù),定單服務(wù)、派單服務(wù);
  • 數(shù)據(jù)層比如說(shuō) ES、DB 等等。

可以看到,我們的服務(wù)層都是一個(gè)個(gè)大而全的系統(tǒng),業(yè)務(wù)發(fā)展的過(guò)程中,前期的業(yè)務(wù)功能并不復(fù)雜,一個(gè)系統(tǒng)一個(gè)服務(wù)就能夠滿(mǎn)足我們所有的業(yè)務(wù)現(xiàn)狀,而且開(kāi)發(fā)起來(lái)也比較快。

當(dāng)我們的業(yè)務(wù)達(dá)到了一定的量級(jí)之后,這一個(gè)大而全的服務(wù)就會(huì)阻礙我們業(yè)務(wù)的發(fā)展,我們很多的團(tuán)隊(duì)在維護(hù)一個(gè)服務(wù),就會(huì)出現(xiàn)很多的問(wèn)題。

比如說(shuō)我們開(kāi)發(fā)的過(guò)程中就會(huì)有上線(xiàn)沖突;當(dāng)業(yè)務(wù)達(dá)到一定的量級(jí)之后,DB 壓力也很大。我們現(xiàn)在正在進(jìn)行的一項(xiàng)工作就是對(duì)服務(wù)和 DB 的一個(gè)拆分。

小程序功能

架構(gòu)肯定是為業(yè)務(wù)而設(shè)計(jì)的,那么我們的小程序有哪些功能?

對(duì)于用戶(hù)來(lái)說(shuō),首先就是有一個(gè)會(huì)員商品的售賣(mài);其次,用戶(hù)只要購(gòu)買(mǎi)了我們的會(huì)員商品,就會(huì)有一些會(huì)員等級(jí);此外還有收藏司機(jī)的功能、用推廣碼下單的功能,如果用戶(hù)掃描了這個(gè)碼,就可以直接給司機(jī)下單。

那么針對(duì)司機(jī)來(lái)說(shuō)有哪些功能?就是登錄了微信小程序后會(huì)有一個(gè)二維碼,司機(jī)可以自主接單。

面對(duì)這些功能,我們的思路是:

  • 避免大而全,我們就要對(duì)這些功能進(jìn)行一個(gè)個(gè)的拆分,拆分成一個(gè)個(gè)的服務(wù);
  • 從簡(jiǎn)單的開(kāi)始著手,逐步進(jìn)行細(xì)化的過(guò)程;
  • 微服務(wù)的架構(gòu),方便后續(xù)的拓展和維護(hù)。

會(huì)員服務(wù)和用戶(hù)等級(jí)

來(lái)分析一下會(huì)員服務(wù)和用戶(hù)等級(jí)。為什么把它們兩個(gè)一塊兒說(shuō)?因?yàn)樗鼈兊暮诵墓δ茳c(diǎn)比較相似:

  • 會(huì)員服務(wù)就是買(mǎi)了會(huì)員商品后會(huì)有的等級(jí)和特權(quán);
  • 而如果用戶(hù)一個(gè)月下單數(shù)達(dá)到一定的階段,就會(huì)有用戶(hù)的等級(jí)和特權(quán)。

它們的核心功能點(diǎn)就是級(jí)別的展示、授權(quán)以及定期的發(fā)券。

首先是 Web 層,還有服務(wù)層。有升級(jí)就有降級(jí),針對(duì)降級(jí),我們使用的是定時(shí)任務(wù)來(lái)處理。

如果你單機(jī)部署,那這臺(tái)機(jī)器掛了怎么辦?如果是部署多臺(tái),那同時(shí)跑了怎么辦?

我們有一個(gè)自研的基于 ZK 的調(diào)度平臺(tái),在跑的時(shí)候,首先會(huì)出一個(gè)臨時(shí)節(jié)點(diǎn),說(shuō)明自己在跑,當(dāng)機(jī)器掛掉之后,節(jié)點(diǎn)就消失;另一個(gè)到達(dá)時(shí)間節(jié)點(diǎn)的時(shí)候,就會(huì)在另外的一個(gè)機(jī)器上面跑,保證一個(gè)時(shí)間點(diǎn)只能有一個(gè)機(jī)器在跑這個(gè) Job。

我們的用戶(hù)等級(jí)升級(jí)是要求比較高的,比如說(shuō)用戶(hù)買(mǎi)了一個(gè)商品,立馬就希望等級(jí)升上去。我們使用了一個(gè)消息隊(duì)列,保證我們收到消息之后,立馬把用戶(hù)的等級(jí)升上去。

還有定時(shí)發(fā)券的場(chǎng)景,我們使用了延時(shí)消息,我們?cè)谟脩?hù)發(fā)券之后去判斷是否還需要發(fā)券,如果還需要的話(huà),就接著發(fā)一個(gè)延時(shí)消息。

用戶(hù)等級(jí)服務(wù)的核心功能點(diǎn)之一,是根據(jù)用戶(hù)當(dāng)月的訂單數(shù)來(lái)實(shí)時(shí)地更新用戶(hù)等級(jí)。

一般情況下,統(tǒng)計(jì)當(dāng)月的訂單數(shù),都是使用定時(shí)任務(wù)每隔一段時(shí)間去計(jì)算。但是,因?yàn)槲覀儗?duì)實(shí)時(shí)性要求較高,這樣做并不合適。

所以我們使用了接收訂單完成的 MQ 來(lái)實(shí)時(shí)進(jìn)行計(jì)算。我們的做法是,先根據(jù) MQ 實(shí)時(shí)更新每天的訂單數(shù),保證每天的訂單數(shù)可查,同時(shí)更新每月的訂單數(shù)。

通常情況下,在更新當(dāng)月的訂單數(shù)之前或者是之后,只需要清除一次緩存就行了,但是我們清除了兩次,為什么?

用戶(hù)訪(fǎng)問(wèn)了自己的用戶(hù)等級(jí),可能會(huì)出現(xiàn)一種情況就是用戶(hù)看到的這個(gè)數(shù)據(jù)并不對(duì),數(shù)據(jù)不一致。使用雙緩存清除法能解決這個(gè)問(wèn)題。流程如下圖所示:

商品服務(wù)

會(huì)員商品服務(wù)的典型場(chǎng)景有四種:

  • 讀多寫(xiě)少;
  • 商品不可變;
  • 針對(duì)單個(gè)的商品和用戶(hù)是有一個(gè)限購(gòu)的條件的;
  • 商品有可能會(huì)有一些庫(kù)存的限制。

比如說(shuō)我就想賣(mài) 100 個(gè),針對(duì)這個(gè)場(chǎng)景我們能不能很簡(jiǎn)單的一個(gè) Web、一個(gè)服務(wù)加上存儲(chǔ)就搞得定呢?如果商品賣(mài)出去了,緩存是不是就失效了?

我們?nèi)绾伪WC商品緩存的時(shí)效性?如果我的庫(kù)存這一塊兒出現(xiàn)了問(wèn)題,那是不是商品會(huì)受到影響?比如說(shuō)庫(kù)存導(dǎo)致我們的服務(wù)掛了,那商品直接看不到……

針對(duì)這些問(wèn)題,我們處理的方式:

  • 首先就是將這個(gè)可變的數(shù)據(jù)隔離,將商品服務(wù)不做成一個(gè)服務(wù);
  • 針對(duì)消息一經(jīng)發(fā)布不可變,而且訪(fǎng)問(wèn)量很大的問(wèn)題,可以通過(guò)加緩存來(lái)緩解壓力;
  • 至于怎么保持庫(kù)存的一致性,就是用 CAS 樂(lè)觀(guān)鎖來(lái)保證庫(kù)存服務(wù)的效率。

司機(jī)的 GPS 服務(wù)

我們是一個(gè)同城貨運(yùn)平臺(tái),大部分的場(chǎng)景是用戶(hù)下單,司機(jī)接單。我們有 100 萬(wàn)的注冊(cè)司機(jī),要保證司機(jī)實(shí)時(shí)的 GPS 位置準(zhǔn)確,2 秒鐘上傳一次 GPS,這個(gè)請(qǐng)求量是特別大的。

但 GPS 的服務(wù)對(duì)我們的實(shí)時(shí)性的要求又非常高,所以 MySQL 的壓力非常大,如果再上一個(gè)層次,MySQL 肯定扛不住;如果放在緩存里面,又有另外的問(wèn)題,也就是緩存無(wú)法搜索的情況;還有怎么樣提高處理效率的問(wèn)題。

針對(duì)這幾個(gè)問(wèn)題,我們的做法:

使用了生產(chǎn)者消費(fèi)者模式,生產(chǎn)者發(fā)送 MQ 給消費(fèi)者,消費(fèi)者本身是一個(gè) Job。接到消息后,先進(jìn)行時(shí)效性的判斷,如果超時(shí),直接丟棄。

如果沒(méi)有超時(shí),異步調(diào)用 GPS 服務(wù)。GPS 服務(wù)接到調(diào)用后,先放到一個(gè)隊(duì)列里面,然后后臺(tái)有一個(gè)線(xiàn)程,批量地進(jìn)行 ES 的存儲(chǔ)。

訂單服務(wù)

現(xiàn)狀:

我們碰到的問(wèn)題,主要是老訂單因?yàn)闃I(yè)務(wù)的發(fā)展對(duì)我們的小程序已經(jīng)不太適用;老訂單的服務(wù)根據(jù)前臺(tái)的業(yè)務(wù)進(jìn)行了一個(gè)分表的處理,后臺(tái)是一個(gè)單表,我們后臺(tái)的單表查詢(xún)會(huì)非常的慢。

前后臺(tái)是采用了 canal 的方式同步的,最大的時(shí)候前后臺(tái)訂單有 6 個(gè)小時(shí)的同步,目前訂單已經(jīng)是 40 萬(wàn)的數(shù)據(jù)了。之前前臺(tái)的訂單服務(wù)、后臺(tái)的訂單服務(wù)包括訂單的 ES 服務(wù),很多人在調(diào)用的時(shí)候其實(shí)根本不知道調(diào)用哪些服務(wù)。

我們的思路,第一,訂單服務(wù)要統(tǒng)一成一個(gè);第二,我們要采用分庫(kù)的方式來(lái)實(shí)現(xiàn)。

一般有水平拆分和垂直拆分:

第一想到的就是能不能把我們的數(shù)據(jù)進(jìn)行一個(gè)隔離,比如說(shuō)按照時(shí)間段做一個(gè)垂直的,2017 年的放一個(gè)庫(kù),2018 年的放一個(gè)庫(kù)。

第二,水平的拆庫(kù)拆表。首先用戶(hù)肯定要查詢(xún)自己的訂單列表的,司機(jī)也需要查詢(xún),然后大部分的場(chǎng)景其實(shí)是司機(jī)的查看訂單詳情,還有我們公司自己的后臺(tái)的運(yùn)營(yíng)人員,有一些復(fù)雜的查詢(xún)。

那么如何確定我們的分庫(kù)方案?

按照時(shí)間緯度的優(yōu)點(diǎn)是訂單分到最新時(shí)間段的庫(kù),直接查就行了,缺點(diǎn)在于如何確定時(shí)間緯度,一個(gè)月、一個(gè)季度或者是一兩年。

還有一個(gè)問(wèn)題就是說(shuō),如果確定了時(shí)間緯度之后,訂單還有大的增長(zhǎng)怎么辦?我們的庫(kù)是提前建好還是動(dòng)態(tài)申請(qǐng),資源上面也要權(quán)衡。

水平拆分,訂單如果再有一個(gè)上升的階段,就直接橫向擴(kuò)展了。我們也要解決跨庫(kù)查詢(xún),也需要訂閱方案。

我們 85% 的查詢(xún)是根據(jù)訂單的 ID 來(lái)查詢(xún)的,比如說(shuō)大部分的司機(jī)搶單,查看訂單詳情;用戶(hù)下單查看詳情之類(lèi)的。

接下來(lái)會(huì)有 10% 的用戶(hù)查看自己的 ID,我到底下了哪些單,或者是歷史的訂單是什么樣子的。

還有 4% 是根據(jù)司機(jī)的場(chǎng)景來(lái)查詢(xún),只是偶爾空閑的時(shí)候他才會(huì)查自己今天搶多少單,最后只有 1% 的后臺(tái)復(fù)雜查詢(xún),所以可以往后考慮。

如果需要滿(mǎn)足 85% 的場(chǎng)景,根據(jù)用戶(hù) ID 來(lái)取模行不行?但是問(wèn)題是司機(jī) ID 的列表查詢(xún)?cè)趺磥?lái)解決呢?方案就是索引表。

我需要查詢(xún)?nèi)蝿?wù),根據(jù)業(yè)務(wù)和訂單 ID 來(lái)建立索引表,就可以查到所有的訂單,然后能確定每一個(gè)庫(kù),就能搞定場(chǎng)景。

但是我們的數(shù)據(jù)量達(dá)到一定的階段,索引表也需要分庫(kù)怎么辦?這樣所有的用戶(hù)的東西都在一個(gè)庫(kù)里面,查詢(xún)用戶(hù)列表的時(shí)候就不用分庫(kù)了,這樣解決了我們 10% 的問(wèn)題,那 80% 多的問(wèn)題怎么解決?就是基因法。

根據(jù)用戶(hù) ID 得到的數(shù)字,其實(shí)就是我們的分庫(kù)基因,大家都知道 Java 里面是 64 位的數(shù)字,前 40 位用做一個(gè)時(shí)間,這個(gè)時(shí)間并不是說(shuō)我們直接調(diào)用系統(tǒng)的當(dāng)前時(shí)間,而是拿 2018 年,拿一個(gè)固定的起始時(shí)間。

比如說(shuō) 2018 年 1 月 1 號(hào),再用當(dāng)前的時(shí)間減去起始時(shí)間的毫秒數(shù),得到的時(shí)間左移 23 位,放到我們的 40 位的位置。

接下來(lái)的是我們的機(jī)器位,為什么會(huì)這樣呢?因?yàn)槲覀兊?ID 生成器不可能是在單機(jī)上面用的,是在多個(gè)機(jī)器上面用。

接下來(lái)的是我們的分庫(kù)基因,還有自動(dòng)的序列,是為了保證同一毫秒生成的 ID 不會(huì)有重復(fù)。

比如說(shuō)同一秒內(nèi)支持的 ID 生成是 6 萬(wàn)多個(gè),如果不夠用怎么辦?將時(shí)間的秒數(shù)量再加一就可以了。

ID 生成搞定了,怎么根據(jù)這個(gè)生成找到我們所在的庫(kù)?下面這個(gè)其實(shí)就是一個(gè)反向的過(guò)程,能確定到我們的一個(gè)庫(kù)。

解決了 95% 的場(chǎng)景,剩下的怎么搞?使用 ES 就行了。

 

因?yàn)樗緳C(jī)不會(huì)實(shí)時(shí)的去查看自己的訂單,運(yùn)維人員對(duì)訂單的實(shí)時(shí)性要求也并不高,所以說(shuō)直接使用 ES 就行了,最后我們的訂單服務(wù)就是這個(gè)樣子。

做一個(gè)總結(jié),就是按照用戶(hù)的緯度來(lái)分布,訂單 ID 使用 Snowflake 算法生成,訂單中記錄分庫(kù)因子,然后復(fù)雜查詢(xún)使用 ES 來(lái)解決。

老舊服務(wù)的兼容

這樣的話(huà)訂單服務(wù)并沒(méi)有完,我們還有老舊的服務(wù)必須做一個(gè)兼容:

針對(duì)訂單的寫(xiě),我們是做了一個(gè)雙寫(xiě),寫(xiě)了新訂單之后,會(huì)去同步寫(xiě)一次老訂單;針對(duì)訂單的讀,我們是先查詢(xún)新訂單,如果查不到,會(huì)在老訂單里面查一遍再返回客戶(hù)端;我們對(duì)歷史數(shù)據(jù)也有一套完整的遷移方案。

推送服務(wù)的改造

微信小程序還涉及到了推送服務(wù)的兩個(gè)方面的改造:

因?yàn)槲覀冃略隽藘煞N推送模式:

  • 一對(duì)一的推送,相對(duì)來(lái)說(shuō)比較簡(jiǎn)單,下單的時(shí)候,如果用戶(hù)選擇的是一對(duì)一推送的,比如說(shuō)用戶(hù)只選了一個(gè)司機(jī),我們就默認(rèn)司機(jī)就是中單了,不管這個(gè)司機(jī)在不在線(xiàn),如果能推給司機(jī)就推給他,如果不能推給他,就給他發(fā)一個(gè)短信。
  • 一對(duì)多的推送,省去了推送的算法,用戶(hù)選擇多個(gè)司機(jī),然后我們的系統(tǒng)根據(jù)用戶(hù)篩選的司機(jī),挑選出在線(xiàn)的列表,然后全部推送給那些司機(jī),直到司機(jī)又搶單就結(jié)束了。

這是我們改造之后的一個(gè)微信小程序的總體架構(gòu)圖:

我們分了接入層、業(yè)務(wù)層、服務(wù)層、基礎(chǔ)服務(wù)、數(shù)據(jù)層。接入層就是對(duì)每一個(gè)服務(wù)做了一個(gè)劃分,進(jìn)行了一層業(yè)務(wù)的評(píng)定之類(lèi)的,反饋給我們的接入層。

我們的程序想要上線(xiàn),首先要接入我們的服務(wù)治理平臺(tái):

我們的服務(wù)治理平臺(tái)會(huì)提供一些功能:

  • 動(dòng)態(tài)機(jī)器的管理,比如說(shuō)我們的業(yè)務(wù)撐不住了,可以通過(guò)這個(gè)加一點(diǎn)機(jī)器;
  • 對(duì)整個(gè)服務(wù)的流量的監(jiān)控;
  • 訪(fǎng)問(wèn)耗時(shí)的監(jiān)控;
  • 還有我們的拋棄量監(jiān)控。

接下來(lái)就是接入我們的監(jiān)控平臺(tái),會(huì)有針對(duì)的關(guān)鍵字監(jiān)控,也有 URL 的監(jiān)控,針對(duì)不同的監(jiān)控有一些監(jiān)控的策略。

最后就是接入我們的 Dtrack 調(diào)用鏈,可以知道整個(gè)服務(wù)之間的調(diào)用關(guān)系:

如果服務(wù)的量級(jí)上來(lái)了,那么我們可能自己都不知道是調(diào)用了哪個(gè)服務(wù),它的層次關(guān)系靠人已經(jīng)分不清了。如果接入調(diào)用鏈的話(huà),會(huì)打印出一個(gè)服務(wù)的清晰的調(diào)用關(guān)系。

  • 它給我們提供了全局跟蹤,比如說(shuō)調(diào)用了哪些服務(wù),耗時(shí)有多少;
  • 哪個(gè)服務(wù)有問(wèn)題的,會(huì)立馬有一個(gè)異常的報(bào)警;
  • 針對(duì)服務(wù)之間會(huì)有清晰調(diào)用結(jié)構(gòu);
  • 對(duì)整個(gè)服務(wù)也會(huì)有一個(gè)效果監(jiān)測(cè)。

它的技術(shù)點(diǎn)在哪兒:

我們?cè)诳蚣芾锩嫣峁┝瞬寮恳淮握{(diào)用的時(shí)候,就會(huì)形成 traceid,通過(guò)框架傳遞下去,每調(diào)用一個(gè)服務(wù),它的 ID 會(huì) +1。將這些調(diào)用關(guān)系通過(guò)日志打印出來(lái),通過(guò) Flume 采集之后展現(xiàn)出來(lái)就行了。

總結(jié)

最后總結(jié)一下,準(zhǔn)確的理解需求很重要,架構(gòu)是為業(yè)務(wù)服務(wù)的;碰到一個(gè)大的需求,對(duì)需求進(jìn)行拆分,由簡(jiǎn)單到復(fù)雜的拆分;根據(jù)業(yè)務(wù)需求進(jìn)行合適的技術(shù)選型,任何脫離業(yè)務(wù)的架構(gòu)設(shè)計(jì)都是耍流氓,監(jiān)控特別的重要,謝謝大家。

[[240860]]

張凱,58 速運(yùn)后端平臺(tái)部負(fù)責(zé)人。7 年開(kāi)發(fā)經(jīng)驗(yàn),涉及 CRM、微信錢(qián)包、卡券系統(tǒng)等;參與 58 到家錢(qián)包入口的優(yōu)化拆分改版,保證了系統(tǒng)平穩(wěn)過(guò)渡;參與 58 大促,保證了大促期間卡券系統(tǒng)的穩(wěn)定運(yùn)行。現(xiàn)在負(fù)責(zé)后端平臺(tái)的開(kāi)發(fā)工作。

責(zé)任編輯:武曉燕 來(lái)源: 51CTO技術(shù)棧
相關(guān)推薦

2017-08-24 12:56:36

里程計(jì)算里程APP

2018-06-14 21:47:46

WOT沈劍58速運(yùn)

2018-03-15 11:23:59

微服務(wù)架構(gòu)實(shí)踐

2018-03-24 12:21:21

58速運(yùn)微服務(wù)架構(gòu)智能云

2020-04-07 17:22:00

數(shù)據(jù)中心新基建5G

2020-11-26 15:35:40

網(wǎng)絡(luò)攻防

2017-12-14 09:35:10

58速運(yùn)訂單調(diào)度

2017-11-23 15:24:35

Python速覽實(shí)戰(zhàn)

2018-02-05 09:30:23

高性能高并發(fā)服務(wù)

2024-12-31 08:16:15

2020-04-22 11:11:48

Decoder性能應(yīng)用

2018-09-14 09:23:03

微服務(wù)服務(wù)集成

2015-08-25 10:38:20

中企通信云數(shù)據(jù)中心

2018-04-23 08:44:41

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

2024-06-25 09:00:00

架構(gòu)軟件開(kāi)發(fā)

2012-03-23 11:39:48

出口企業(yè)網(wǎng)絡(luò)

2011-12-27 09:16:04

惠普奧德賽32路服務(wù)器

2017-03-23 23:04:03

2025-01-02 10:19:18

點(diǎn)贊
收藏

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

国产三级视频在线看| 日本少妇在线观看| 91视频成人| 亚洲男人的天堂网| 久久99精品久久久久久秒播放器 | 青青操在线播放| 成人黄色理论片| 五月综合激情婷婷六月色窝| 日本一区二区三区四区高清视频| 免费国产羞羞网站美图| 动漫视频在线一区| 91福利小视频| 日韩在线观看a| 国产大片在线免费观看 | 97在线播放视频| 不卡在线视频| 成人激情黄色小说| 国产在线观看精品| 久久国产精品免费看| 性欧美69xoxoxoxo| 亚洲日本成人女熟在线观看 | 欧美色视频一区二区三区在线观看| 久草免费在线视频| 亚洲欧美综合色| 欧美日韩一区在线播放| www.色播.com| 久久成人麻豆午夜电影| 欧美在线免费观看| 久久久久久久久久久久久久免费看| 四虎国产精品成人免费影视| 欧美日韩视频在线| 97久久国产亚洲精品超碰热| www 日韩| 久久久精品综合| 黑人中文字幕一区二区三区| 国产xxxxxx| 精品在线你懂的| 国产精品女视频| av一级在线观看| 亚洲一区二区三区四区五区午夜| 国产午夜精品麻豆| 亚洲欧美日韩偷拍| jizz国产精品| 日韩一区二区三免费高清| 黄大色黄女片18第一次| abab456成人免费网址| 欧美日韩亚洲网| 欧美 日韩 国产在线观看| 三级网站视频在在线播放| 亚洲视频一区二区在线| 亚洲人久久久| 免费在线看黄网站| 中文字幕国产一区二区| 亚洲精品乱码久久久久久蜜桃91| 国产精品污视频| 美女视频黄免费的久久| 国产精品视频在线播放| 在线能看的av| 丝袜脚交一区二区| 日韩av不卡在线| 国产男人搡女人免费视频| 日韩激情一二三区| 国产精品91久久久| 在线观看中文字幕码| 人妖欧美一区二区| 91久久精品美女| 国产v在线观看| 丁香婷婷综合网| 久草一区二区| 国产精品免费播放| 国产精品福利在线播放| 在线观看成人免费| 阿v视频在线| 色999日韩国产欧美一区二区| 看全色黄大色大片| 免费毛片在线看片免费丝瓜视频 | 国产一区二区你懂的| 91高潮在线观看| 一级黄色av片| 精品一区二区三区久久| 亚洲一区二区三区四区在线播放| 波多野结衣视频网站| 日韩国产欧美在线视频| 成人福利在线视频| 亚洲经典一区二区三区| 99热这里都是精品| 亚洲 国产 欧美一区| bt在线麻豆视频| 五月天婷婷综合| 中文字幕第21页| 久久国际精品| 亚洲精品中文字幕av| 亚洲AV成人无码网站天堂久久| 精品中文一区| 久久精品国产69国产精品亚洲| 88久久精品无码一区二区毛片| 57pao国产一区二区| 日韩av在线免费看| 在线观看亚洲网站| 国产精品亚洲综合色区韩国| 成人黄色av网站| 国产成人手机在线| 国产精品亲子伦对白| 国产自产在线视频| 国产亚洲精品精品国产亚洲综合| 色综合视频一区二区三区高清| 欧美视频在线观看视频| 成人av观看| 欧美一区二区三区四区五区| 国产精品无码一区二区三区免费 | 欧美不卡三区| 亚洲成a人v欧美综合天堂麻豆| 国产女人18毛片水真多成人如厕 | 四虎在线免费看| 国产精品福利av| 美女福利视频在线| 一区二区三区在线资源| 国产亚洲精品久久久久动| 国产一级中文字幕| 国内成+人亚洲+欧美+综合在线 | 日本中文字幕片| 欧美专区视频| 久久久97精品| 亚洲婷婷久久综合| 久久综合资源网| 成人黄色片免费| 亚洲91在线| 一区二区三区高清国产| 五月激情六月丁香| www.欧美日韩| 免费看欧美一级片| 日韩在线视频一区二区三区 | 国产精品第8页| 四季av日韩精品一区| 亚洲三级在线观看| 嫩草视频免费在线观看| 日韩国产欧美| 国产精品欧美一区二区三区奶水| 国内老熟妇对白xxxxhd| 国产精品乱人伦一区二区| 宅男噜噜噜66国产免费观看| 嫩草一区二区三区| 欧美资源在线观看| 噜噜噜久久,亚洲精品国产品| 95精品视频在线| 九九热只有这里有精品| 97se亚洲| 高清欧美性猛交xxxx| 亚洲精品久久久久久动漫器材一区| 成人高清在线视频| 国产日韩亚洲欧美在线| 影音先锋欧美激情| 色综合色综合网色综合| 丰满熟女一区二区三区| 午夜精品久久久久久久| 污污内射在线观看一区二区少妇| 免费毛片在线不卡| 国产精品第一视频| 在线免费黄色| 91麻豆精品国产91久久久久久久久| 亚洲欧洲国产视频| 国模一区二区三区| 好吊色欧美一区二区三区四区 | 国产精品久久久久久久久久免费看 | 国产免费的av| 亚洲人妖av一区二区| 免费看的av网站| 欧美视频一区| 国内成+人亚洲| 亚洲播播91| www.久久久久| 午夜精品一区二区三| 亚洲图片有声小说| 久久精品成人av| 麻豆国产欧美日韩综合精品二区 | 夜夜嗨av一区二区三区网页 | 国产乱人伦偷精品视频免下载 | 亚洲一区二区3| 成人手机在线免费视频| 日韩精品电影一区亚洲| 欧美少妇在线观看| 卡通动漫国产精品| 国产精品成人品| 婷婷av在线| 亚洲天堂日韩电影| 国产欧美一级片| 精品久久久久久久大神国产| 久久亚洲AV无码专区成人国产| 亚洲小说欧美另类婷婷| 日本精品视频一区| 久久久久久久久成人| 91禁外国网站| 免费黄色网页在线观看| 日韩福利视频在线观看| 一级片免费网站| 天天影视色香欲综合网老头| 很污很黄的网站| 99久久婷婷国产精品综合| 99热这里只有精品在线播放| 欧美午夜影院| 香蕉久久夜色| 欧美五码在线| 91免费看片在线| 欧美最新精品| 久久久久久成人| 黄色网在线播放| 亚洲视频综合网| 成人午夜免费在线观看| 欧美精品在线一区二区三区| 天天操天天干视频| 国产精品麻豆欧美日韩ww| 在线免费观看a级片| 国产一区三区三区| 日本成人在线免费视频| 1024日韩| 欧美 亚洲 视频| 日韩综合精品| 久久99导航| 亚洲成人五区| 国产欧亚日韩视频| 欧美电影网站| 国产91对白在线播放| 欧美四级在线| 久久伊人免费视频| fc2在线中文字幕| 亚洲欧美激情另类校园| 人妻91麻豆一区二区三区| 日韩一区二区三区电影在线观看| 激情小说中文字幕| 国产精品国产三级国产aⅴ入口| 在线一区二区不卡| 久久人人97超碰国产公开结果| 少妇免费毛片久久久久久久久| h1515四虎成人| 91国自产精品中文字幕亚洲| 牛牛精品在线视频| 欧美成人免费网| 成视频免费观看在线看| 久久激情视频免费观看| 五月婷婷在线视频| 国产亚洲精品久久久久久| 欧美人体大胆444www| 日韩成人中文字幕| 亚洲色偷精品一区二区三区| 亚洲国产精品推荐| 性xxxx视频| 亚洲精品视频网上网址在线观看| 中文字幕一区2区3区| 91精品办公室少妇高潮对白| 在线免费观看国产精品| 在线看日本不卡| 最新中文字幕在线观看视频| 91久久线看在观草草青青| 亚洲成人av网址| 欧美日韩精品福利| 91久久精品国产91性色69| 在线电影一区二区三区| 国产91视频在线| 精品国产乱码久久久久久闺蜜 | 美女精品导航| 欧美大片免费看| 男人添女人下部高潮视频在线观看 | 91日韩欧美| 99热这里只有精品7| 欧美日一区二区三区在线观看国产免| 欧美高清视频一区| 国产欧美日韩| 中文精品视频一区二区在线观看| 狼人天天伊人久久| 国内视频一区| 欧美日韩老妇| 久久av喷吹av高潮av| 国产精品成人一区二区网站软件| 亚洲v国产v| 91高清一区| 国产a级片网站| 日韩高清中文字幕一区| 亚洲欧美天堂在线| 不卡一区中文字幕| 色欲AV无码精品一区二区久久| 成人久久视频在线观看| 欧美xxxxx精品| 欧美激情一区在线观看| 国产又黄又爽又无遮挡| 欧美日韩精品在线视频| 亚洲一区二区人妻| 亚洲精品一线二线三线 | 亚洲国产精品福利| 人成免费电影一二三区在线观看| 精品国产乱码久久久久久浪潮| 国产免费av观看| 日韩国产一区三区| 日本a级在线| 91国内精品久久| 亚洲精品三区| 欧美韩国日本精品一区二区三区| 丁香综合av| 亚洲一区二区精品在线观看| 在线成人黄色| 中文字幕国产高清| 久久网站最新地址| 九九热国产在线| 欧美午夜不卡在线观看免费| 亚洲欧美国产高清va在线播放| 91精品在线观看入口| 日韩a级作爱片一二三区免费观看| 亚洲国产精品悠悠久久琪琪| jizz在线观看视频| 3344国产精品免费看| 看亚洲a级一级毛片| 日韩欧美精品一区二区三区经典| 亚洲欧美tv| 免费的一级黄色片| 久久99精品国产| 国产在线观看h| 婷婷激情综合网| 亚洲高清视频网站| 久久精品99久久香蕉国产色戒| 黄色网在线免费看| 国产精品免费在线免费| 免费电影一区二区三区| av在线com| 国产乱码精品1区2区3区| 国产综合精品在线| 欧美日韩激情美女| 色综合免费视频| 欧美激情国内偷拍| 国产一区二区三区免费观看在线 | 你懂的一区二区三区| 国产女主播自拍| 国产成人精品在线看| 天天爽天天爽天天爽| 欧美在线播放高清精品| 免费在线国产| 91精品国产91久久久久久吃药| 欧美福利在线播放| 麻豆成人小视频| 亚洲福利一区| 在线观看国产三级| 精品久久久久久久久中文字幕| 波多野结衣黄色网址| 亚洲天堂av综合网| 成人黄色免费短视频| 欧美国产综合视频| 视频在线在亚洲| 久久国产柳州莫菁门| 欧美性videosxxxxx| 在线观看av的网站| 成人国产精品久久久| 久久密一区二区三区| 毛片毛片毛片毛| 亚洲欧美日韩成人高清在线一区| 97免费在线观看视频| 精品美女在线观看| 欧美xxxbbb| 精品免费二区三区三区高中清不卡 | 热久久一区二区| 女人裸体性做爰全过| 欧美日韩在线电影| 在线中文资源天堂| 成人免费看黄网站| 欧美日韩四区| 艳妇乳肉豪妇荡乳xxx| 欧美性猛xxx| www.久久热.com| 亚洲一区二区三区久久| 影音先锋久久久| 国精产品一区一区三区免费视频| 亚洲激情图片小说视频| 亚洲奶汁xxxx哺乳期| 欧美一级淫片丝袜脚交| 精品久久综合| 日本一本在线视频| 欧美日韩激情网| 在线观看免费黄色| 91在线免费网站| 9色精品在线| 四季av中文字幕| 欧美va亚洲va| 免费亚洲电影| 潘金莲一级淫片aaaaaa播放1| 三级欧美韩日大片在线看| 国产又黄又粗视频| 欧美一二三四在线| 成人性生活视频| 欧美xxxx吸乳| 久久久青草青青国产亚洲免观| 国产乡下妇女做爰| 中文字幕免费精品一区| 亚洲综合影院| 欧美 日韩 国产 激情| 一区二区三区日韩精品| 国产污视频在线| 国产精品久久亚洲| 秋霞影院一区二区| 日韩少妇高潮抽搐| 综合网日日天干夜夜久久| 国产精品任我爽爆在线播放| 91看片在线免费观看| 亚洲va国产天堂va久久en|