對於架構師而言,技術的發展是無盡的,在搭建和實踐智能數據架構的過程當中,架構師們都會或多或少地遇到一些疑惑和挑戰,如何解決在架構建設中遇到的某些問題?架構建設的領域又有什麼新的行業動態和技術方法?數據庫
近日,在個推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系統有八個核心技術:
一、數據模型的全局有序;
二、實時的讀寫和區間掃描(這一點與數據模型的全局有序也密不可分);
三、能夠支持行式存儲和列式存儲;
四、友好的分佈式文件系統;
五、利用SSD cache熱數據;
六、數據壓縮,異步IO和分組提交等性能優化手段;
七、支持秒級分裂合併,而且可以實現自動負載均衡;
八、在分佈式數據庫上實現了分佈式事務。
Tera是百度搜索引擎從批量處理邁向實時流式計算的最基礎的架構,它能夠提供實時的讀寫能力,同時提供海量存儲和增量計算,而且節約增量成本。在研發方面,Tare也可以使中間數據可見、Debug能力加強。
本質上來講,Tera是一個分佈式存儲系統,它須要遵循分佈式存儲系統的設計要素,包括:明確數據模型、存儲引擎的設計、數據分片的方式、如何管理元數據、高可用的設計以及應用的是分層式仍是豎井式的存儲。同時,存儲系統也須要進行性能優化工程的實踐,包括指標數據的採集和可視化、先作profiling再手動優化、面向SSD進行編程、Batch&pipeline&asynchronous和學習存儲引擎的先進研究成果。
京東數科高級DBA
互聯網應用業務的特色是用戶和數據量大、產品迭代迅速、業務組合複雜、突發性流量暴增以及7*24小時不間斷提供服務,這些特色致使互聯網架構從一開始的單體式架構發展到分佈式微服務,再到雲原生架構。分佈式微服務使得系統解耦可用性獲得提高,而云原生架構更好地實現了資源按需伸縮、自動化的部署和管理。同時,互聯網數據庫也在不斷地升級,因爲早期的RDBMS沒法知足數據擴展的需求,NoSQL應運而生。再到後來,囊括分佈式數據庫、分佈式數據庫中間件以及雲數據庫的NewSQL也都紛紛順應數據擴展的需求而產生。
做爲分佈式數據庫的中間件,Sharding-Sphere能夠藉助底層成熟的關係型數據庫進行增量持續的開發,這知足了分佈式的需求,而且可以大大下降運維和接入成本。
同時,Sharding-Sphere也應該擁有四種核心能力:
一、可以經過數據拆分或讀寫分離,實現數據分片的能力。具體來說,數據分片須要先經過SQL解析,對查詢語句進行優化、合併和改寫,再找到能夠執行的SQL,最終實現結果歸併。
二、分佈式事務可以保證數據的一致性。在數據還未打散以前,咱們能夠用傳統的ACID(Atomicity、Consistency、Isolation、Durability)保障數據的一致性;但在數據被打散以後,咱們則須要引進新的BASE原則(Basically Available、Soft state、Eventual consistency)來保障數據一致。有兩種方式能夠實現分佈式事務BASE:一種爲XA,雖然XA支持回滾,可以達到強一致性,但當併發量變大,它的性能會急劇下滑;而另外一種方式是柔性事務,在這種方式下,當業務量急劇上升時,併發性能只會發生略微衰退,而且可以保證,在最終達到一致。
三、數據庫治理。Sharding-Sphere能夠經過註冊中心的操做,實現統一管理、熔斷或失效轉移的功能,同時能夠經過拓撲圖和調用鏈來打造APM監控。
四、彈性伸縮。Sharding-Sphere是由 Sharding-JDBC、Sharding-Proxy 和 Sharding-Sidecar這3款相互獨立的產品組成的,他們均提供標準化的數據分片、分佈式事務和數據庫治理功能。Sharding-JDBC更適用於單體應用和分佈式微服務,它是一個輕量級的Java框架;Sharding-Proxy實現了MySQL的二進制協議,而且不存儲任何數據;Sharding-Sidecar的核心是Service Mesh Sidecar,可以幫助本地的應用層與網絡節點進行溝通。