中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

傳統(tǒng)數(shù)據(jù)庫(kù)架構(gòu)已經(jīng)不適合新興世界了?

2020-12-04    來(lái)源:raincent

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬(wàn)Linux鏡像隨意使用

作者:Jay Kreps   譯者:姚佳靈
來(lái)源:InfoQ

作者 Jay Kreps 是 Confluent 的首席執(zhí)行官,他分析了傳統(tǒng)數(shù)據(jù)庫(kù)的架構(gòu)不適合新興的世界的原因,提出了要構(gòu)建事件流平臺(tái),把數(shù)據(jù)庫(kù)和數(shù)據(jù)流結(jié)合在一起的目標(biāo)。

正文:

在 2011 年,Marc Andressen 寫了一篇文章,題目是《為什么軟件正在吞噬整個(gè)世界》。其中心思想是如果流程可以通過(guò)軟件來(lái)實(shí)現(xiàn),那么就一定會(huì)實(shí)現(xiàn)。這已經(jīng)成為一種投資理論簡(jiǎn)略的表達(dá)方式,這種理論隱藏在硅谷目前獨(dú)角獸初創(chuàng)企業(yè)浪潮的背后。它還是我們?nèi)缃窨吹降母鼜V泛的技術(shù)趨勢(shì)背后的統(tǒng)一思想,這些技術(shù)包括機(jī)器學(xué)習(xí)、物聯(lián)網(wǎng)、無(wú)處不在的 SaaS 以及云計(jì)算。這些趨勢(shì)都在用不同的方法使軟件變得更豐富和功能強(qiáng)大,并在企業(yè)間擴(kuò)大其影響范圍。

我認(rèn)為,伴隨而來(lái)的變化容易被忽視但同樣重要。這不僅僅是企業(yè)使用更多的軟件,而且越來(lái)越多的企業(yè)通過(guò)軟件重新定義。也即,企業(yè)執(zhí)行的核心過(guò)程(從生產(chǎn)產(chǎn)品的方式到與客戶交互的方式、交付服務(wù)的方式)正變得越來(lái)越多地在軟件中指定、監(jiān)控和執(zhí)行。這已經(jīng)是大多數(shù)硅谷技術(shù)公司的事實(shí)情況,但是,這種轉(zhuǎn)變正在蔓延到所有類型的公司,無(wú)論其提供什么產(chǎn)品或服務(wù)。

為了澄清我的意思,讓我們來(lái)看一個(gè)例子:消費(fèi)銀行的貸款批準(zhǔn)流程。這是一個(gè)在計(jì)算機(jī)出現(xiàn)以前就存在的業(yè)務(wù)流程。傳統(tǒng)上,這是一個(gè)需要幾個(gè)星期才能完成的流程,其中涉及銀行代理人、抵押貸款官員和信貸官員等,各自以手動(dòng)過(guò)程進(jìn)行協(xié)作。如今,該流程趨向于以半自動(dòng)化的方式執(zhí)行,這些功能都有一些獨(dú)立的軟件應(yīng)用程序,可以幫助使用者更有效地執(zhí)行。

然而現(xiàn)在,在很多銀行中這個(gè)操作正在變?yōu)橐粋(gè)完全自動(dòng)化的流程,其中信貸軟件、風(fēng)險(xiǎn)軟件和 CRM 軟件之間相互通信并在幾秒內(nèi)提供決策。這里,銀行貸款業(yè)務(wù)部門基本上變?yōu)檐浖。?dāng)然,這不是說(shuō)公司將只變?yōu)檐浖?即使在最以軟件為中心的公司中還是有很多人的),只是整個(gè)業(yè)務(wù)在用軟件定義過(guò)程。

 

 

企業(yè)不只是把軟件用作人工流程生產(chǎn)力的輔助手段,他們正在用代碼構(gòu)建整個(gè)業(yè)務(wù)部分。

這個(gè)轉(zhuǎn)變具有很多重要的意義,但是,我關(guān)注的是,這對(duì)軟件本身的角色和設(shè)計(jì)有什么意義。在這個(gè)新興的世界上,應(yīng)用程序的目的不太可能是為 UI 提供服務(wù)來(lái)幫助人們開(kāi)展業(yè)務(wù),更可能的是觸發(fā)操作或?qū)浖钠渌糠肿鞒龇磻?yīng)以直接開(kāi)展業(yè)務(wù)。盡管這很容易理解,但是,它引發(fā)了一個(gè)大問(wèn)題:

傳統(tǒng)的數(shù)據(jù)庫(kù)架構(gòu)是否適合這個(gè)新興的世界?

畢竟,數(shù)據(jù)庫(kù)一直是應(yīng)用程序開(kāi)發(fā)中最成功的基礎(chǔ)結(jié)構(gòu)層。然而,所有的數(shù)據(jù)庫(kù),從最完善的關(guān)系數(shù)據(jù)庫(kù)到最新的鍵值存儲(chǔ),都遵循一種范式,在該范式中,數(shù)據(jù)是被動(dòng)存儲(chǔ)的,數(shù)據(jù)庫(kù)等待命令對(duì)它進(jìn)行檢索或修改。被遺忘的是,這種范式的興起是由一種特定類型的面向用戶的應(yīng)用程序來(lái)驅(qū)動(dòng)的,在這種應(yīng)用程序中,用戶可以查看 UI 并啟動(dòng)將其轉(zhuǎn)換為數(shù)據(jù)庫(kù)查詢的操作。在我們上面提到的例子中,很顯然構(gòu)建了一個(gè)關(guān)系數(shù)據(jù)庫(kù)以支持有助于在這為期 1 到 2 周的貸款批準(zhǔn)流程中人為因素的應(yīng)用程序,但是,是否適合把包括實(shí)時(shí)貸款批準(zhǔn)流程在內(nèi)的全套軟件組合在一起,而該實(shí)時(shí)貸款批準(zhǔn)流程是基于不斷變化的數(shù)據(jù)進(jìn)行持持續(xù)查詢而建立的?

實(shí)際上,值得注意的是,隨著 RDBMS(CRM、HRIS、ERP 等等)的興起,所有的應(yīng)用程序都是在軟件時(shí)代作為人類生產(chǎn)力輔助工具出現(xiàn)的。CRM 應(yīng)用程序使銷售團(tuán)隊(duì)更有效率,HRIS 讓 HR 團(tuán)隊(duì)更有效率等等。這些應(yīng)用程序都是軟件工程師所謂的“CRUD”應(yīng)用程序。它們幫助用戶創(chuàng)建、更新及刪除數(shù)據(jù)庫(kù)記錄,并在該流程上管理業(yè)務(wù)邏輯。這其中固有的假設(shè)是,在網(wǎng)絡(luò)的另一端有人在驅(qū)動(dòng)和執(zhí)行該業(yè)務(wù)過(guò)程。這些應(yīng)用程序的目標(biāo)是給人們看一些東西(他們會(huì)查看結(jié)果),給應(yīng)用程序輸入更多的數(shù)據(jù)。

該模式與公司采用軟件的方式相匹配:一點(diǎn)一點(diǎn)地增加由人執(zhí)行的組織和過(guò)程。但是,數(shù)據(jù)基礎(chǔ)設(shè)施本身并不知道如何互連或?qū)緝?nèi)部其他地方發(fā)生的事情做出反應(yīng)。這導(dǎo)致產(chǎn)生了圍繞數(shù)據(jù)庫(kù)構(gòu)建的所有類型的解決方案,其中包括集成層、ETL 產(chǎn)品、消息傳遞系統(tǒng),以及大量代碼,這些代碼是大規(guī)模軟件集成的標(biāo)志。

 

 

由于數(shù)據(jù)庫(kù)沒(méi)有為數(shù)據(jù)流建模,因此,公司內(nèi)部系統(tǒng)之間的互連是一團(tuán)亂麻。

事件流的興起

當(dāng)軟件的主要角色不是為 UI 提供服務(wù),而是直接觸發(fā)操作或?qū)浖钠渌糠肿龀龇磻?yīng)時(shí),那么,我們的數(shù)據(jù)平臺(tái)需要什么新功能呢?

我認(rèn)為,要從事件和事件流的概念開(kāi)始來(lái)回答這個(gè)問(wèn)題。什么是事件?發(fā)生的任何事情,包括用戶登錄嘗試、購(gòu)買行為、價(jià)格的變化等等。什么是事件流?一系列不斷更新的事件,代表了過(guò)去發(fā)生的事情和現(xiàn)在正在發(fā)生的事情。

事件流為傳統(tǒng)數(shù)據(jù)庫(kù)的數(shù)據(jù)提供了一種非常不同的思考范式。基于事件構(gòu)建的系統(tǒng)不再被動(dòng)地存儲(chǔ)數(shù)據(jù)集和等待來(lái)自 UI 驅(qū)動(dòng)的應(yīng)用程序的命令。與之相反,它的設(shè)計(jì)目的是支持貫穿整個(gè)業(yè)務(wù)中的數(shù)據(jù)流以及實(shí)時(shí)響應(yīng)和處理發(fā)生在業(yè)務(wù)中的每個(gè)事件的反應(yīng)。這似乎與數(shù)據(jù)庫(kù)的領(lǐng)域相去甚遠(yuǎn),但是,我認(rèn)為,數(shù)據(jù)庫(kù)的一般概念對(duì)未來(lái)的發(fā)展來(lái)說(shuō)過(guò)于狹隘。

Apache Kafka® 及其用途

通過(guò)分享我自己的背景知識(shí),我將概述一些事件用例。Confluent 的創(chuàng)始人最初在 LinkedIn 工作的時(shí)候創(chuàng)建了這個(gè)開(kāi)源項(xiàng)目 Apache Kafka,近年來(lái),Kafka 已經(jīng)成為事件流運(yùn)動(dòng)的基礎(chǔ)技術(shù)。我們的動(dòng)機(jī)很簡(jiǎn)單:盡管 LinkedIn 所有的數(shù)據(jù)是通過(guò)一天 24 小時(shí)永不停止的流程不斷生成的,但是,利用這些數(shù)據(jù)的基礎(chǔ)設(shè)施限于每天結(jié)束時(shí)緩慢的大型批處理數(shù)據(jù)轉(zhuǎn)儲(chǔ)和簡(jiǎn)單的查找。“一天結(jié)束后的批處理”概念似乎是過(guò)去穿孔卡片和大型機(jī)時(shí)代的遺產(chǎn)。事實(shí)上,對(duì)于一個(gè)全球性的企業(yè)來(lái)說(shuō),每天沒(méi)有結(jié)束的概念。

很顯然,當(dāng)我們投入這個(gè)挑戰(zhàn)時(shí),這個(gè)問(wèn)題沒(méi)有現(xiàn)成的解決方案。此外,在構(gòu)建了支持實(shí)時(shí)網(wǎng)站的 NoSQL 后,我們知道,分布式系統(tǒng)研究和技術(shù)的復(fù)興為我們提供了一套工具,以過(guò)去不可能的方式來(lái)解決這個(gè)問(wèn)題。我們注意到“流處理”的學(xué)術(shù)文獻(xiàn),流處理是一個(gè)研究領(lǐng)域,可以把數(shù)據(jù)庫(kù)的存儲(chǔ)和數(shù)據(jù)處理技術(shù)擴(kuò)展到靜態(tài)表之外,并把它們應(yīng)用于這類持續(xù)、永不停息的數(shù)據(jù)流,這種數(shù)據(jù)流是像 LinkedIn 那樣的數(shù)字業(yè)務(wù)的核心。

 

 

我們都熟悉這個(gè)古老的問(wèn)題:“我們到了嗎?”傳統(tǒng)數(shù)據(jù)庫(kù)有點(diǎn)像個(gè)孩子,要回答這個(gè)問(wèn)題除了不斷詢問(wèn),別無(wú)選擇。借助流處理,ETA 變成一個(gè)連續(xù)的計(jì)算,總是和問(wèn)題的位置保持同步。

在社交網(wǎng)絡(luò)中,一個(gè)事件可以代表一次點(diǎn)擊、一封電郵、一次登錄、一個(gè)新的連接,或者一次個(gè)人資料的更新。把這些數(shù)據(jù)作為不斷發(fā)生的流來(lái)對(duì)待,可以讓 LinkedIn 所有的其他系統(tǒng)都可以訪問(wèn)這些數(shù)據(jù)。

我們的早期用例涉及為 LinkedIn 的社交圖片、搜索、Hadoop、數(shù)據(jù)倉(cāng)庫(kù)環(huán)境,以及像推薦系統(tǒng)、新聞提要、廣告系統(tǒng)的面向用戶的應(yīng)用程序及其他產(chǎn)品功能提供填充數(shù)據(jù)。隨著時(shí)間的流逝,Kafka 的使用擴(kuò)展到安全系統(tǒng)、低級(jí)應(yīng)用程序監(jiān)控、電郵、新聞提要以及數(shù)以百計(jì)的其他應(yīng)用程序。這些都發(fā)生在這樣一個(gè)大規(guī)模要求的背景下:每天都有數(shù)以萬(wàn)億計(jì)的消息流經(jīng) Kafka,并且數(shù)以千計(jì)的工程師圍繞著它工作。

在我們開(kāi)源 Kafka 后,它在 LinkedIn 外開(kāi)始了廣泛的傳播,在 Netflix、Uber、Pinterest、Twitter、Airbnb 等公司出現(xiàn)了類似的架構(gòu)。

隨著我于 2014 年離開(kāi) LinkedIn,創(chuàng)辦了 Confluent 后,Kafka 和事件流已經(jīng)開(kāi)始引起硅谷科技公司以外的廣泛關(guān)注,并從簡(jiǎn)單數(shù)據(jù)管道轉(zhuǎn)變?yōu)橹苯訛閷?shí)時(shí)應(yīng)用程序提供支持。

如今,全球最大的銀行中有一些把 Kafka 和 Confluent 用于欺詐檢測(cè)、支付系統(tǒng)、風(fēng)險(xiǎn)系統(tǒng)和微服務(wù)架構(gòu)。Kafka 是 Euronext 下一代證券交易平臺(tái)的核心,用于處理歐洲市場(chǎng)數(shù)十億筆交易。

在零售行業(yè), Walmart 、 Target 和 Nordstrom 等公司已經(jīng)采用了 Kafka。項(xiàng)目包括實(shí)時(shí)庫(kù)存管理,另外還有電子商務(wù)和實(shí)體設(shè)施的整合。零售業(yè)傳統(tǒng)上建立于每日緩慢的批處理的基礎(chǔ)之上,但是,來(lái)自電子商務(wù)的競(jìng)爭(zhēng)已經(jīng)推動(dòng)了一體化和實(shí)時(shí)化。

包括 Tesla 和 Audi 在內(nèi)的多家汽車公司已經(jīng)為其下一代聯(lián)網(wǎng)的汽車構(gòu)建了物聯(lián)網(wǎng)平臺(tái),把汽車數(shù)據(jù)建模為實(shí)時(shí)事件流。他們并不是唯一這么做的;疖嚒⒋、倉(cāng)儲(chǔ)和重型機(jī)械也都開(kāi)始在事件流中捕獲數(shù)據(jù)了。

從硅谷開(kāi)始的現(xiàn)象現(xiàn)在成了主流,成千上萬(wàn)的組織都在使用 Kafka,其中包括 60% 的財(cái)富 100 強(qiáng)公司。

事件流作為中樞神經(jīng)系統(tǒng)

這些公司中的大多數(shù)最初采用 Kafka 是為了一個(gè)特定用例啟用單個(gè)可擴(kuò)展的實(shí)時(shí)應(yīng)用程序或數(shù)據(jù)管道。這種最初的用法往往可以在公司內(nèi)部迅速傳播到其他應(yīng)用程序。

這種迅速傳播的原因是,事件流都是有多個(gè)讀者的:一個(gè)事件流可以有任意數(shù)量的“訂閱者”,可以對(duì)它進(jìn)行處理、做出反應(yīng)或回復(fù)。

以零售業(yè)為例,零售商可能首先捕獲單個(gè)用例在商店中發(fā)生的銷售流,比如,加快倉(cāng)庫(kù)管理。每個(gè)事件可能表示和一次銷售有關(guān)的數(shù)據(jù):售出的商品、售出商品的商店等等。但是,盡管使用可能從單個(gè)應(yīng)用程序開(kāi)始,相同的銷售流對(duì)于定價(jià)、報(bào)告、折扣系統(tǒng)以及數(shù)十個(gè)其他用例至關(guān)重要的。實(shí)際上,在全球零售業(yè)務(wù)中,有數(shù)百個(gè)甚至數(shù)千個(gè)軟件系統(tǒng)管理著業(yè)務(wù)的核心流程,包括庫(kù)存管理、倉(cāng)庫(kù)操作、發(fā)貨、價(jià)格變動(dòng)、分析及采購(gòu)。有多少個(gè)核心流程受產(chǎn)品銷售這個(gè)簡(jiǎn)單事件的影響?答案是很多或大多數(shù),因?yàn)殇N售商品是零售行業(yè)中最基本的活動(dòng)之一。

這是采用的良性循環(huán)。第一個(gè)應(yīng)用程序帶來(lái)其關(guān)鍵數(shù)據(jù)流。新的應(yīng)用程序加入平臺(tái)以訪問(wèn)這些數(shù)據(jù)流,并帶來(lái)它們自己的數(shù)據(jù)流。數(shù)據(jù)流帶來(lái)應(yīng)用程序,而應(yīng)用程序又帶來(lái)更多的數(shù)據(jù)流。

其核心思想是,事件流可以作為已發(fā)生事件的記錄加以處理,并且,任何系統(tǒng)或應(yīng)用程序都可以實(shí)時(shí)利用它來(lái)對(duì)數(shù)據(jù)流做出反應(yīng)、響應(yīng)或進(jìn)行處理。

這有著非常重要的意義。在公司內(nèi)部,通常是一團(tuán)亂麻似的相互連接的系統(tǒng),每個(gè)應(yīng)用程序都臨時(shí)與另外一個(gè)連接。這是非常昂貴耗時(shí)的方法。事件流提供了一種替代方法:可以有一個(gè)中央平臺(tái),支持實(shí)時(shí)處理、查詢和計(jì)算。每個(gè)應(yīng)用程序都可以發(fā)布與其業(yè)務(wù)部分相關(guān)的流,并以完全解耦的方式依賴其他流。

 

 

為了驅(qū)動(dòng)內(nèi)部連接,事件流平臺(tái)充當(dāng)新興軟件定義的公司的中樞神經(jīng)系統(tǒng)。我們可以把單獨(dú)的、以 UI 為中心、離線的應(yīng)用程序看作一種軟件世界的單細(xì)胞生物。通過(guò)很多這類單細(xì)胞動(dòng)物的簡(jiǎn)單堆疊不可能形成一個(gè)綜合的數(shù)字公司,就像一條狗不能從一堆沒(méi)有差異的阿米巴變形蟲(chóng)中創(chuàng)造出來(lái)一樣。一個(gè)多細(xì)胞動(dòng)物有神經(jīng)系統(tǒng),協(xié)調(diào)所有單個(gè)細(xì)胞成為一個(gè)整體,可以對(duì)其在任何組成部分中所經(jīng)歷的任何事情做出反應(yīng)、計(jì)劃和即時(shí)行動(dòng)。數(shù)字公司需要相當(dāng)于這種神經(jīng)系統(tǒng)的軟件,以連接其所有的系統(tǒng)、應(yīng)用程序和流程。

這讓我們相信,這個(gè)新興的事件流平臺(tái)將會(huì)是現(xiàn)代企業(yè)中最具戰(zhàn)略意義的單一數(shù)據(jù)平臺(tái)。

事件流平臺(tái):數(shù)據(jù)庫(kù)和數(shù)據(jù)流必須結(jié)合在一起

正確地做這件事不僅僅是管道膠帶公司為特別集成構(gòu)建的生產(chǎn)問(wèn)題。就現(xiàn)狀來(lái)說(shuō),這是不夠的,更別說(shuō)新興的潮流了。所需的是實(shí)時(shí)數(shù)據(jù)平臺(tái),可以把數(shù)據(jù)庫(kù)的全部存儲(chǔ)和查詢處理能力整合到一個(gè)現(xiàn)代的、水平可擴(kuò)展的數(shù)據(jù)平臺(tái)中。

對(duì)這個(gè)平臺(tái)的需求不僅僅是對(duì)這些事件流進(jìn)行讀寫。事件流不只是關(guān)于正在發(fā)生的事情短暫的、有損的數(shù)據(jù)噴射,它是對(duì)業(yè)務(wù)從過(guò)去到現(xiàn)在的過(guò)程中所發(fā)生事情的完整的、可靠的、持久的記錄。為了充分利用事件流,需要一個(gè)用于存儲(chǔ)、查詢、處理和轉(zhuǎn)換這些流的實(shí)時(shí)數(shù)據(jù)平臺(tái),而不只是一個(gè)短暫的事件數(shù)據(jù)的“啞巴管道”。

把數(shù)據(jù)庫(kù)的存儲(chǔ)和處理能力與實(shí)時(shí)數(shù)據(jù)結(jié)合起來(lái)似乎有點(diǎn)古怪。如果我們把數(shù)據(jù)庫(kù)看作一種含有一大堆被動(dòng)數(shù)據(jù)的容器,那么,事件流看起來(lái)離數(shù)據(jù)庫(kù)的領(lǐng)域還很遠(yuǎn)。但是,流處理的想法顛覆了這一點(diǎn)。如果我們把在公司內(nèi)部發(fā)生的任何東西的流看作“數(shù)據(jù)”,并允許持續(xù)“查詢”對(duì)它的處理、響應(yīng)和反應(yīng),會(huì)發(fā)生什么事呢?這導(dǎo)致了根本不同的數(shù)據(jù)庫(kù)功能框架。

在傳統(tǒng)的數(shù)據(jù)庫(kù)中,數(shù)據(jù)是被動(dòng)地放置的,等待應(yīng)用程序或人來(lái)發(fā)出其要響應(yīng)的查詢。在流處理中,這個(gè)過(guò)程倒過(guò)來(lái)了:數(shù)據(jù)是持續(xù)的,活動(dòng)的事件流,饋送到被動(dòng)的查詢中,該查詢只是對(duì)數(shù)據(jù)流做出反應(yīng)和處理。

 

 

在某些方面,數(shù)據(jù)庫(kù)已經(jīng)在內(nèi)部設(shè)計(jì)中展示了其在表和事件流上的二元性,即使不是其外部特征也是如此。大多數(shù)數(shù)據(jù)庫(kù)都是圍繞提交日志構(gòu)建的,提交日志充當(dāng)數(shù)據(jù)修改事件的持久流。通常,這些日志僅僅是傳統(tǒng)數(shù)據(jù)庫(kù)中的實(shí)現(xiàn)細(xì)節(jié),查詢無(wú)法訪問(wèn)。然而,在事件流的世界,這些日志及其填充的表需要成為一等公民。

但是,集成這兩件事的理由不只是基于數(shù)據(jù)庫(kù)內(nèi)部。基本上,應(yīng)用程序是用存儲(chǔ)在表中的數(shù)據(jù)對(duì)世界上發(fā)生的事件做出反應(yīng) 。在我們的零售示例中,銷售事件會(huì)影響庫(kù)存事件(數(shù)據(jù)庫(kù)表中的狀態(tài)),從而影響重新訂購(gòu)事件(另一個(gè)事件!)。整個(gè)業(yè)務(wù)流程可以由這些應(yīng)用程序和數(shù)據(jù)庫(kù)交互的菊花鏈形成,創(chuàng)建新事件的同時(shí)也改變這個(gè)世界的狀態(tài)(減少庫(kù)存數(shù)量,更新余額等等)。

傳統(tǒng)數(shù)據(jù)庫(kù)只支持這個(gè)問(wèn)題的一半,剩下的一半嵌入應(yīng)用程序代碼。 KSQL 等現(xiàn)代流處理系統(tǒng)正在把這些抽象集合到一起,以開(kāi)始完成數(shù)據(jù)庫(kù)需要跨事件和傳統(tǒng)存儲(chǔ)數(shù)據(jù)表進(jìn)行的操作,但是,事件與數(shù)據(jù)庫(kù)的統(tǒng)一只是一個(gè)剛開(kāi)始的運(yùn)動(dòng)。

作者介紹

Jay Kreps 是 Confluent 的首席執(zhí)行官,也是 Apache Kafka 的聯(lián)合創(chuàng)始人之一。他曾是 LinkedIn 的資深架構(gòu)師。

原文鏈接: Every Company is Becoming a Software Company

標(biāo)簽: 數(shù)據(jù) 餳芄

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇:AI人才稀缺:全面解讀數(shù)據(jù)科學(xué)家成長(zhǎng)的4個(gè)階段

下一篇:2019年度十大Web開(kāi)發(fā)趨勢(shì)