摘要:個推整體的微服務(wù)架構(gòu),主要是基于和進(jìn)行實踐的。在構(gòu)建整個微服務(wù)體系時,個推選擇了研發(fā)自己的網(wǎng)關(guān)。在研發(fā)方面,也能夠使中間數(shù)據(jù)可見能力增強(qiáng)。
對于架構(gòu)師而言,技術(shù)的發(fā)展是無盡的,在搭建和實踐智能數(shù)據(jù)架構(gòu)的過程中,架構(gòu)師們都會或多或少地遇到一些疑惑和挑戰(zhàn),如何解決在架構(gòu)建設(shè)中遇到的某些問題?架構(gòu)建設(shè)的領(lǐng)域又有什么新的行業(yè)動態(tài)和技術(shù)方法?
近日,在個推TechDay全國沙龍北京站的現(xiàn)場,幾位資深架構(gòu)師圍繞“以智能數(shù)據(jù)架構(gòu),挖掘增長金礦”的主題,開啟了對智能數(shù)據(jù)技術(shù)的深入探討。
貝殼金服2B2C CTO
史海峰 《架構(gòu)之十年磨劍,大巧不工》在傳統(tǒng)的IT行業(yè)中,企業(yè)級業(yè)務(wù)系統(tǒng)是技術(shù)水平的高峰,比如電信、金融、稅務(wù)系統(tǒng)。以電信行業(yè)為例,它有其獨(dú)有的行業(yè)特征:業(yè)務(wù)系統(tǒng)本身就是生產(chǎn)系統(tǒng),信息化程度高;24小時全天候跨地域不間斷地提供服務(wù);業(yè)務(wù)復(fù)雜,功能多樣等。電信行業(yè)中以中國移動為代表的架構(gòu)設(shè)計規(guī)劃最為領(lǐng)先,該架構(gòu)有一套完整的設(shè)計規(guī)范,整體建設(shè)周期也很長。
而在PC互聯(lián)網(wǎng)時代,電子商務(wù)紛紛崛起,很多互聯(lián)網(wǎng)電商平臺都面臨著從自營到平臺化轉(zhuǎn)變的挑戰(zhàn)。自營與平臺化最大的區(qū)別在于,自營只有一個商戶,而真正的平臺則需要像云計算一樣,支持多商戶的入駐與經(jīng)營。對于架構(gòu)師來說,要實現(xiàn)這樣的平臺轉(zhuǎn)型,需要有清晰的業(yè)務(wù)系統(tǒng)架構(gòu)總圖、系統(tǒng)架構(gòu)藍(lán)圖以及技術(shù)架構(gòu)規(guī)劃。
進(jìn)入到移動互聯(lián)網(wǎng)時代,手機(jī)的普及使得O2O快速發(fā)展。O2O平臺對于系統(tǒng)穩(wěn)定性的要求非常高,而且對業(yè)務(wù)發(fā)展的響應(yīng)速度也提出了新的 ,其所需要的技術(shù)架構(gòu)非常復(fù)雜、需要有嚴(yán)謹(jǐn)?shù)幕A(chǔ)架構(gòu)和運(yùn)維機(jī)制,還要維持創(chuàng)新能力。
到了產(chǎn)業(yè)互聯(lián)網(wǎng)時代,架構(gòu)師應(yīng)該對行業(yè)有更深入的理解和實踐,同時,也要有相應(yīng)的架構(gòu)思維,從“點(diǎn)、線、面、體”各維度提升認(rèn)知,在進(jìn)行架構(gòu)建設(shè)時,架構(gòu)師不僅要考慮到技術(shù)上實現(xiàn)的可能性,也要考慮到行業(yè)特點(diǎn),以及企業(yè)各個方面對于互聯(lián)網(wǎng)技術(shù)的態(tài)度與需求。
個推平臺架構(gòu)主管
王志豪 《微服務(wù)網(wǎng)關(guān)架構(gòu)實踐》微服務(wù)是指,將單一的應(yīng)用程序拆分成多個微小的服務(wù),各個小服務(wù)之間低耦合,高內(nèi)聚,每個小的服務(wù)可以多帶帶進(jìn)行開發(fā),不依賴于具體的編程語言,也可以使用不同的數(shù)據(jù)存儲技術(shù),各個服務(wù)可以獨(dú)立部署,擁有各自的進(jìn)程,相互之間通過輕量化的機(jī)制進(jìn)行通信,所有的服務(wù)共同實現(xiàn)具體的業(yè)務(wù)功能。
個推整體的微服務(wù)架構(gòu),主要是基于Docker和Kubernetes進(jìn)行實踐的。個推將應(yīng)用服務(wù)分為三層,最上層是API網(wǎng)關(guān),為服務(wù)提供統(tǒng)一的入口;第二層是業(yè)務(wù)邏輯層,主要實現(xiàn)具體的業(yè)務(wù)邏輯;最底層是基礎(chǔ)服務(wù)層,為同一產(chǎn)品線下的不同產(chǎn)品提供共同的基礎(chǔ)服務(wù)。
在構(gòu)建整個微服務(wù)體系時,個推選擇了研發(fā)自己的網(wǎng)關(guān)。目前市面也有很多優(yōu)秀的網(wǎng)關(guān)產(chǎn)品,但都并不是特別適合個推的微服務(wù)體系。
第一,個推的配置和服務(wù)注冊與發(fā)現(xiàn)均基于Consul實現(xiàn)的;
第二,很多的開源的網(wǎng)關(guān)的配置相對于個推的需求略顯復(fù)雜;
第三,由于不同的功能很難用統(tǒng)一的網(wǎng)關(guān)去實現(xiàn),個推更希望在API網(wǎng)關(guān)的功能擴(kuò)展上保持足夠的靈活性;
第四,個推的微服務(wù)體系是基于Docker和Kubernetes進(jìn)行實踐的,其他的網(wǎng)關(guān)較難直接融入個推的微服務(wù)體系。
個推選取了OpenResty+Lua作為實現(xiàn)網(wǎng)關(guān)的技術(shù)選型。其中OpenResty是一個基于 Nginx 與 Lua 的高性能 Web 平臺,Lua則是一個較為輕量的、擴(kuò)展性較強(qiáng)的語言。同時,個推也借鑒了Kong和Orange的插件機(jī)制,通過插件的方式實現(xiàn)網(wǎng)關(guān)功能的擴(kuò)展。
個推的微服務(wù)網(wǎng)關(guān)的設(shè)計重點(diǎn),體現(xiàn)在插件的設(shè)計和請求過程,每個插件都會在OpenResty的一個或多個階段起作用。在進(jìn)行請求處理的時候,個推會按照產(chǎn)品配置和插件規(guī)則篩選出具體執(zhí)行的插件,然后實例化插件,對流量進(jìn)行處理。個推微服務(wù)網(wǎng)關(guān)還有規(guī)則配置簡單,不同插件實現(xiàn)靈活,配置基于Conusl實時熱更新等特點(diǎn)。在自己的微服務(wù)網(wǎng)關(guān)中,個推還實現(xiàn)了諸如動態(tài)路由、流量控制、Auth鑒權(quán)、鏈路追蹤、A/B Testing等功能。
在實踐微服務(wù)網(wǎng)關(guān)的過程中,個推還有一些有待改進(jìn)的地方,比如:網(wǎng)關(guān)的彈性設(shè)計不夠、網(wǎng)關(guān)還需要進(jìn)一步與DevOps進(jìn)行結(jié)合等。
百度主任架構(gòu)師
鄭然《搜索引擎的大數(shù)據(jù)計算架構(gòu)》搜索引擎的建設(shè)主要分為三個方面,第一,是內(nèi)容抓取部分,爬蟲會將海量信息抓取下來;第二,是檢索系統(tǒng)部分,系統(tǒng)需要加入對已抓取信息的內(nèi)容的理解,放到索引中;第三,是索引構(gòu)建部分。
支持搜索引擎計算的建庫部分中,有一個非常核心的系統(tǒng):Tera,它是一個大型分布式表格存儲系統(tǒng),可以進(jìn)行高性能、可伸縮的半結(jié)構(gòu)化存儲,同時支持存儲萬億量級的超鏈和網(wǎng)頁信息。Tera系統(tǒng)有八個核心技術(shù):
1、數(shù)據(jù)模型的全局有序;
2、實時的讀寫和區(qū)間掃描(這一點(diǎn)與數(shù)據(jù)模型的全局有序也密不可分);
3、可以支持行式存儲和列式存儲;
4、友好的分布式文件系統(tǒng);
5、利用SSD cache熱數(shù)據(jù);
6、數(shù)據(jù)壓縮,異步IO和分組提交等性能優(yōu)化手段;
7、支持秒級分裂合并,并且能夠?qū)崿F(xiàn)自動負(fù)載均衡;
8、在分布式數(shù)據(jù)庫上實現(xiàn)了分布式事務(wù)。
Tera是百度搜索引擎從批量處理邁向?qū)崟r流式計算的最基礎(chǔ)的架構(gòu),它可以提供實時的讀寫能力,同時提供海量存儲和增量計算,并且節(jié)約增量成本。在研發(fā)方面,Tare也能夠使中間數(shù)據(jù)可見、Debug能力增強(qiáng)。
本質(zhì)上來說,Tera是一個分布式存儲系統(tǒng),它需要遵循分布式存儲系統(tǒng)的設(shè)計要素,包括:明確數(shù)據(jù)模型、存儲引擎的設(shè)計、數(shù)據(jù)分片的方式、如何管理元數(shù)據(jù)、高可用的設(shè)計以及應(yīng)用的是分層式還是豎井式的存儲。同時,存儲系統(tǒng)也需要進(jìn)行性能優(yōu)化工程的實踐,包括指標(biāo)數(shù)據(jù)的采集和可視化、先做profiling再手動優(yōu)化、面向SSD進(jìn)行編程、Batch&pipeline&asynchronous和學(xué)習(xí)存儲引擎的先進(jìn)研究成果。
京東數(shù)科高級DBA
潘娟《Sharding-Sphere云架構(gòu)演化》互聯(lián)網(wǎng)應(yīng)用業(yè)務(wù)的特點(diǎn)是用戶和數(shù)據(jù)量大、產(chǎn)品迭代迅速、業(yè)務(wù)組合復(fù)雜、突發(fā)性流量暴增以及7*24小時不間斷提供服務(wù),這些特點(diǎn)導(dǎo)致互聯(lián)網(wǎng)架構(gòu)從一開始的單體式架構(gòu)發(fā)展到分布式微服務(wù),再到云原生架構(gòu)。分布式微服務(wù)使得系統(tǒng)解耦可用性得到提升,而云原生架構(gòu)更好地實現(xiàn)了資源按需伸縮、自動化的部署和管理。同時,互聯(lián)網(wǎng)數(shù)據(jù)庫也在不斷地升級,由于早期的RDBMS無法滿足數(shù)據(jù)擴(kuò)展的需求,NoSQL應(yīng)運(yùn)而生。再到后來,囊括分布式數(shù)據(jù)庫、分布式數(shù)據(jù)庫中間件以及云數(shù)據(jù)庫的NewSQL也都紛紛順應(yīng)數(shù)據(jù)擴(kuò)展的需求而產(chǎn)生。
作為分布式數(shù)據(jù)庫的中間件,Sharding-Sphere可以借助底層成熟的關(guān)系型數(shù)據(jù)庫進(jìn)行增量持續(xù)的開發(fā),這滿足了分布式的需求,并且能夠大大降低運(yùn)維和接入成本。
同時,Sharding-Sphere也應(yīng)該擁有四種核心能力:
1、能夠通過數(shù)據(jù)拆分或讀寫分離,實現(xiàn)數(shù)據(jù)分片的能力。具體來講,數(shù)據(jù)分片需要先通過SQL解析,對查詢語句進(jìn)行優(yōu)化、合并和改寫,再找到可以執(zhí)行的SQL,最終實現(xiàn)結(jié)果歸并。
2、分布式事務(wù)能夠保證數(shù)據(jù)的一致性。在數(shù)據(jù)還未打散之前,我們可以用傳統(tǒng)的ACID(Atomicity、Consistency、Isolation、Durability)保障數(shù)據(jù)的一致性;但在數(shù)據(jù)被打散之后,我們則需要引進(jìn)新的BASE原則(Basically Available、Soft state、Eventual consistency)來保障數(shù)據(jù)一致。有兩種方式可以實現(xiàn)分布式事務(wù)BASE:一種為XA,雖然XA支持回滾,能夠達(dá)到強(qiáng)一致性,但當(dāng)并發(fā)量變大,它的性能會急劇下滑;而另一種方式是柔性事務(wù),在這種方式下,當(dāng)業(yè)務(wù)量急劇上升時,并發(fā)性能只會發(fā)生略微衰退,并且能夠保證,在最終達(dá)到一致。
3、數(shù)據(jù)庫治理。Sharding-Sphere可以通過注冊中心的操作,實現(xiàn)統(tǒng)一管理、熔斷或失效轉(zhuǎn)移的功能,同時可以通過拓?fù)鋱D和調(diào)用鏈來打造APM監(jiān)控。
4、彈性伸縮。Sharding-Sphere是由 Sharding-JDBC、Sharding-Proxy 和 Sharding-Sidecar這3款相互獨(dú)立的產(chǎn)品組成的,他們均提供標(biāo)準(zhǔn)化的數(shù)據(jù)分片、分布式事務(wù)和數(shù)據(jù)庫治理功能。Sharding-JDBC更適用于單體應(yīng)用和分布式微服務(wù),它是一個輕量級的Java框架;Sharding-Proxy實現(xiàn)了MySQL的二進(jìn)制協(xié)議,并且不存儲任何數(shù)據(jù);Sharding-Sidecar的核心是Service Mesh Sidecar,能夠幫助本地的應(yīng)用層與網(wǎng)絡(luò)節(jié)點(diǎn)進(jìn)行溝通。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/28060.html
摘要:個推整體的微服務(wù)架構(gòu),主要是基于和進(jìn)行實踐的。在構(gòu)建整個微服務(wù)體系時,個推選擇了研發(fā)自己的網(wǎng)關(guān)。在研發(fā)方面,也能夠使中間數(shù)據(jù)可見能力增強(qiáng)。 對于架構(gòu)師而言,技術(shù)的發(fā)展是無盡的,在搭建和實踐智能數(shù)據(jù)架構(gòu)的過程中,架構(gòu)師們都會或多或少地遇到一些疑惑和挑戰(zhàn),如何解決在架構(gòu)建設(shè)中遇到的某些問題?架構(gòu)建設(shè)的領(lǐng)域又有什么新的行業(yè)動態(tài)和技術(shù)方法? 近日,在個推TechDay全國沙龍北京站的現(xiàn)場,幾位...
摘要:個推整體的微服務(wù)架構(gòu),主要是基于和進(jìn)行實踐的。在構(gòu)建整個微服務(wù)體系時,個推選擇了研發(fā)自己的網(wǎng)關(guān)。在研發(fā)方面,也能夠使中間數(shù)據(jù)可見能力增強(qiáng)。 對于架構(gòu)師而言,技術(shù)的發(fā)展是無盡的,在搭建和實踐智能數(shù)據(jù)架構(gòu)的過程中,架構(gòu)師們都會或多或少地遇到一些疑惑和挑戰(zhàn),如何解決在架構(gòu)建設(shè)中遇到的某些問題?架構(gòu)建設(shè)的領(lǐng)域又有什么新的行業(yè)動態(tài)和技術(shù)方法? 近日,在個推TechDay全國沙龍北京站的現(xiàn)場,幾位...
閱讀 2655·2021-11-23 09:51
閱讀 1644·2021-11-22 13:54
閱讀 2782·2021-11-18 10:02
閱讀 936·2021-08-16 10:57
閱讀 3554·2021-08-03 14:03
閱讀 1873·2019-08-30 15:54
閱讀 3527·2019-08-23 14:39
閱讀 598·2019-08-23 14:26