如何利用資料架構帶動企業增長?

個推發表於2019-01-16

對於架構師而言,技術的發展是無盡的,在搭建和實踐智慧資料架構的過程中,架構師們都會或多或少地遇到一些疑惑和挑戰,如何解決在架構建設中遇到的某些問題?架構建設的領域又有什麼新的行業動態和技術方法?

近日,在個推TechDay全國沙龍北京站的現場,幾位資深架構師圍繞“以智慧資料架構,挖掘增長金礦”的主題,開啟了對智慧資料技術的深入探討。


貝殼金服2B2C CTO

史海峰 《架構之十年磨劍,大巧不工》

在傳統的IT行業中,企業級業務系統是技術水平的高峰,比如電信、金融、稅務系統。以電信行業為例,它有其獨有的行業特徵:業務系統本身就是生產系統,資訊化程度高;24小時全天候跨地域不間斷地提供服務;業務複雜,功能多樣等。電信行業中以中國移動為代表的架構設計規劃最為領先,該架構有一套完整的設計規範,整體建設週期也很長。

而在PC網際網路時代,電子商務紛紛崛起,很多網際網路電商平臺都面臨著從自營到平臺化轉變的挑戰。自營與平臺化最大的區別在於,自營只有一個商戶,而真正的平臺則需要像雲端計算一樣,支援多商戶的入駐與經營。對於架構師來說,要實現這樣的平臺轉型,需要有清晰的業務系統架構總圖、系統架構藍圖以及技術架構規劃。

進入到移動網際網路時代,手機的普及使得O2O快速發展。O2O平臺對於系統穩定性的要求非常高,而且對業務發展的響應速度也提出了新的 ,其所需要的技術架構非常複雜、需要有嚴謹的基礎架構和運維機制,還要維持創新能力。

到了產業網際網路時代,架構師應該對行業有更深入的理解和實踐,同時,也要有相應的架構思維,從“點、線、面、體”各維度提升認知,在進行架構建設時,架構師不僅要考慮到技術上實現的可能性,也要考慮到行業特點,以及企業各個方面對於網際網路技術的態度與需求。


個推平臺架構主管

王志豪 《微服務閘道器架構實踐》

微服務是指,將單一的應用程式拆分成多個微小的服務,各個小服務之間低耦合,高內聚,每個小的服務可以單獨進行開發,不依賴於具體的程式語言,也可以使用不同的資料儲存技術,各個服務可以獨立部署,擁有各自的程式,相互之間通過輕量化的機制進行通訊,所有的服務共同實現具體的業務功能。

個推整體的微服務架構,主要是基於Docker和Kubernetes進行實踐的。個推將應用服務分為三層,最上層是API閘道器,為服務提供統一的入口;第二層是業務邏輯層,主要實現具體的業務邏輯;最底層是基礎服務層,為同一產品線下的不同產品提供共同的基礎服務。

在構建整個微服務體系時,個推選擇了研發自己的閘道器。目前市面也有很多優秀的閘道器產品,但都並不是特別適合個推的微服務體系。

第一,個推的配置和服務註冊與發現均基於Consul實現的;

第二,很多的開源的閘道器的配置相對於個推的需求略顯複雜;

第三,由於不同的功能很難用統一的閘道器去實現,個推更希望在API閘道器的功能擴充套件上保持足夠的靈活性;

第四,個推的微服務體系是基於Docker和Kubernetes進行實踐的,其他的閘道器較難直接融入個推的微服務體系。

個推選取了OpenResty+Lua作為實現閘道器的技術選型。其中OpenResty是一個基於 Nginx 與 Lua 的高效能 Web 平臺,Lua則是一個較為輕量的、擴充套件性較強的語言。同時,個推也借鑑了Kong和Orange的外掛機制,通過外掛的方式實現閘道器功能的擴充套件。

個推的微服務閘道器的設計重點,體現在外掛的設計和請求過程,每個外掛都會在OpenResty的一個或多個階段起作用。在進行請求處理的時候,個推會按照產品配置和外掛規則篩選出具體執行的外掛,然後例項化外掛,對流量進行處理。個推微服務閘道器還有規則配置簡單,不同外掛實現靈活,配置基於Conusl實時熱更新等特點。在自己的微服務閘道器中,個推還實現了諸如動態路由、流量控制、Auth鑑權、鏈路追蹤、A/B Testing等功能。

在實踐微服務閘道器的過程中,個推還有一些有待改進的地方,比如:閘道器的彈性設計不夠、閘道器還需要進一步與DevOps進行結合等。


百度主任架構師

鄭然《搜尋引擎的大資料計算架構》

搜尋引擎的建設主要分為三個方面,第一,是內容抓取部分,爬蟲會將海量資訊抓取下來;第二,是檢索系統部分,系統需要加入對已抓取資訊的內容的理解,放到索引中;第三,是索引構建部分。

支援搜尋引擎計算的建庫部分中,有一個非常核心的系統:Tera,它是一個大型分散式表格儲存系統,可以進行高效能、可伸縮的半結構化儲存,同時支援儲存萬億量級的超鏈和網頁資訊。Tera系統有八個核心技術:

1、資料模型的全域性有序;

2、實時的讀寫和區間掃描(這一點與資料模型的全域性有序也密不可分);

3、可以支援行式儲存和列式儲存;

4、友好的分散式檔案系統;

5、利用SSD cache熱資料;

6、資料壓縮,非同步IO和分組提交等效能優化手段;

7、支援秒級分裂合併,並且能夠實現自動負載均衡;

8、在分散式資料庫上實現了分散式事務。

Tera是百度搜尋引擎從批量處理邁向實時流式計算的最基礎的架構,它可以提供實時的讀寫能力,同時提供海量儲存和增量計算,並且節約增量成本。在研發方面,Tare也能夠使中間資料可見、Debug能力增強。

本質上來說,Tera是一個分散式儲存系統,它需要遵循分散式儲存系統的設計要素,包括:明確資料模型、儲存引擎的設計、資料分片的方式、如何管理後設資料、高可用的設計以及應用的是分層式還是豎井式的儲存。同時,儲存系統也需要進行效能優化工程的實踐,包括指標資料的採集和視覺化、先做profiling再手動優化、面向SSD進行程式設計、Batch&pipeline&asynchronous和學習儲存引擎的先進研究成果。


京東數科高階DBA

潘娟《Sharding-Sphere雲架構演化》

網際網路應用業務的特點是使用者和資料量大、產品迭代迅速、業務組合複雜、突發性流量暴增以及7*24小時不間斷提供服務,這些特點導致網際網路架構從一開始的單體式架構發展到分散式微服務,再到雲原生架構。分散式微服務使得系統解耦可用性得到提升,而云原生架構更好地實現了資源按需伸縮、自動化的部署和管理。同時,網際網路資料庫也在不斷地升級,由於早期的RDBMS無法滿足資料擴充套件的需求,NoSQL應運而生。再到後來,囊括分散式資料庫、分散式資料庫中介軟體以及雲資料庫的NewSQL也都紛紛順應資料擴充套件的需求而產生。

作為分散式資料庫的中介軟體,Sharding-Sphere可以藉助底層成熟的關係型資料庫進行增量持續的開發,這滿足了分散式的需求,並且能夠大大降低運維和接入成本。

同時,Sharding-Sphere也應該擁有四種核心能力:

1、能夠通過資料拆分或讀寫分離,實現資料分片的能力。具體來講,資料分片需要先通過SQL解析,對查詢語句進行優化、合併和改寫,再找到可以執行的SQL,最終實現結果歸併。

2、分散式事務能夠保證資料的一致性。在資料還未打散之前,我們可以用傳統的ACID(Atomicity、Consistency、Isolation、Durability)保障資料的一致性;但在資料被打散之後,我們則需要引進新的BASE原則(Basically Available、Soft state、Eventual consistency)來保障資料一致。有兩種方式可以實現分散式事務BASE:一種為XA,雖然XA支援回滾,能夠達到強一致性,但當併發量變大,它的效能會急劇下滑;而另一種方式是柔性事務,在這種方式下,當業務量急劇上升時,併發效能只會發生略微衰退,並且能夠保證,在最終達到一致。

3、資料庫治理。Sharding-Sphere可以通過註冊中心的操作,實現統一管理、熔斷或失效轉移的功能,同時可以通過拓撲圖和呼叫鏈來打造APM監控。

4、彈性伸縮。Sharding-Sphere是由 Sharding-JDBC、Sharding-Proxy 和 Sharding-Sidecar這3款相互獨立的產品組成的,他們均提供標準化的資料分片、分散式事務和資料庫治理功能。Sharding-JDBC更適用於單體應用和分散式微服務,它是一個輕量級的Java框架;Sharding-Proxy實現了MySQL的二進位制協議,並且不儲存任何資料;Sharding-Sidecar的核心是Service Mesh Sidecar,能夠幫助本地的應用層與網路節點進行溝通。

相關文章