7 月 21 日,Pivotal 在北京舉辦“應(yīng)用無(wú)憂 Spring 實(shí)戰(zhàn)營(yíng)”,包括 Pivotal 高級(jí)技術(shù)總監(jiān) Andrew Clay Shafer、京東金融資深研發(fā)張凡、Pivotal 高級(jí)解決方案架構(gòu)師李剛在內(nèi)的多位 Spring 技術(shù)專家,從 Spring 技術(shù)、工具如何幫助開(kāi)發(fā)者解決業(yè)務(wù)轉(zhuǎn)型和創(chuàng)新中的實(shí)際問(wèn)題出發(fā),發(fā)表多場(chǎng)精彩演講。
1 使用 Devops 就萬(wàn)事大吉?未必如此
Pivotal 高級(jí)技術(shù)總監(jiān) Andrew Clay Shafer 多年來(lái)一直是開(kāi)源領(lǐng)域的使用者和貢獻(xiàn)者,在構(gòu)建開(kāi)源業(yè)務(wù)和社區(qū)方面頗有見(jiàn)地,因發(fā)表關(guān)于 DevOps 和組織學(xué)習(xí)的論述而出名。作為開(kāi)場(chǎng)第一位演講嘉賓,他的演講主題是《論 Devops 創(chuàng)新的五大關(guān)鍵要素》。
對(duì)于企業(yè)來(lái)說(shuō),只要用到 Devops 就萬(wàn)事大吉嗎?其實(shí)未必如此,從文化、自動(dòng)化、精益思維、指標(biāo)與共享這五個(gè) Devops 要素方面,Andrew 進(jìn)行了一一闡述。他的 PPT 示意圖也非常有意思,把這五個(gè)要素比喻為了中國(guó)的五行金木水火土。
文化會(huì)告訴我們?nèi)绾胃纳?、如何?yōu)化、如何進(jìn)行工作。Andrew 以一張優(yōu)秀文化和不那么成功文化的對(duì)比列表,來(lái)闡述為什么文化會(huì)決定著 Devops 成功與否。
自動(dòng)化方面,它與架構(gòu)密切相關(guān)。有時(shí)候大家會(huì)說(shuō)軟件的一切都要自動(dòng)化,比如容器、調(diào)度、K8S …的流行就是最好的佐證。演講中 Andrew 也用一張對(duì)比圖來(lái)進(jìn)行闡釋。
指標(biāo)方面,據(jù) Andrew 介紹,在 Spring 社區(qū),已經(jīng)在做對(duì)服務(wù)水平進(jìn)行評(píng)估和監(jiān)測(cè)的很多工作。
共享方面,有人提出在開(kāi)發(fā)人員和運(yùn)營(yíng)人員之間再單獨(dú)配備 Devops 人員,Andrew 認(rèn)為這并非明智之舉,還是需要建立共享機(jī)制,讓大家打破圍墻進(jìn)行對(duì)話。在這方面,Andrew 也特別強(qiáng)調(diào)了社區(qū)力量的重要性。
精益思維方面,它可以包括軟件的方方面面,以上幾個(gè)要素都可以歸在精益層面當(dāng)中。為什么要強(qiáng)調(diào)精益?因?yàn)橐獜?qiáng)調(diào)持續(xù)改善,不斷做得比今天更好。
身為軟件開(kāi)發(fā)者,Andrew 在演講中還傳授了非常多個(gè)體的成功秘訣,比如創(chuàng)新、比如改變你的行為、比如擁抱風(fēng)險(xiǎn)…
2 深度解析 Spring Cloud Netflix-Ribbon
第二位演講嘉賓是京東金融資深研發(fā)張凡,主要是對(duì) Spring Cloud Netflix-Ribbon 進(jìn)行了深度解析。主要通過(guò)一部分代碼講述 Ribbon 如何作用在客戶端來(lái)攔截請(qǐng)求,完成負(fù)載均衡;默認(rèn)配置如何生效;怎樣獲得服務(wù)列表;有哪些負(fù)載均衡算法,并從代碼中找一些負(fù)載算法的例子來(lái)看 Ribbon 是怎么實(shí)現(xiàn)等等。具體來(lái)看,他的演講包括這幾個(gè)方面:Ribbon 簡(jiǎn)介、Ribbon 如何實(shí)現(xiàn)客戶端負(fù)載、Ribbon 負(fù)載均衡行為定義、Ribbon 的負(fù)載均衡策略、Ribbon 服務(wù)列表的獲取、Ribbon 的重試。
張凡的分享完全從自身工作實(shí)踐出發(fā),干貨滿滿。這里截取幾頁(yè)演示 PPT,從中可以看到 Spring Cloud Netflix-Ribbon 的使用情況。
3 分布式跟蹤和 Zipkin 概念及實(shí)踐
第三位演講嘉賓是 Spring Cloud OSS 分布式跟蹤技術(shù)員 Adrian Cole,演講內(nèi)容側(cè)重在分布式跟蹤和 Zipkin,Adrian 在 Pivotal 的 Spring Cloud OSS 團(tuán)隊(duì)工作。
當(dāng)我們部署微服務(wù)的時(shí)候,微服務(wù)會(huì)積累越來(lái)越多,如果有一個(gè)圖表來(lái)顯示整體情況,就變得非常重要。對(duì)此 Adrian Cole 演示了一個(gè)微服務(wù)的圖表??吹竭@個(gè)圖大家會(huì)覺(jué)得很復(fù)雜,但是實(shí)際情況就是如此,這個(gè)實(shí)例是從一個(gè) BBS 抓取的。
對(duì)此 Adrian Cole 表示,如果你有 15 個(gè)以上的服務(wù)要同時(shí)展現(xiàn)相互關(guān)系,就會(huì)非常復(fù)雜。所以我們需要有服務(wù)圖,更需要有具體的儀表板工具。
所謂跟蹤,就是追蹤系統(tǒng)里的請(qǐng)求走到了哪里,追蹤會(huì)幫助開(kāi)發(fā)者做出結(jié)論,了解服務(wù)前后的因果關(guān)系。當(dāng)我們進(jìn)行異步編程的時(shí)候,必須要了解真正的因果關(guān)系,而不是時(shí)間的順延關(guān)系。通過(guò)分布式跟蹤,所體現(xiàn)出的因果關(guān)系就會(huì)非??煽?,這才能讓我們知道延遲的根本原因是什么。
所謂 Zipkin 分布式跟蹤系統(tǒng),它可以幫助收集時(shí)間數(shù)據(jù),解決在微服務(wù)架構(gòu)下的延遲問(wèn)題;它管理這些數(shù)據(jù)的收集和查找;Zipkin 的設(shè)計(jì)基于谷歌的 Google Dapper 論文。
隨著微服務(wù)架構(gòu)和容器技術(shù)的興起,看似簡(jiǎn)單的一個(gè)應(yīng)用,后臺(tái)可能有幾十個(gè)甚至幾百個(gè)服務(wù)在支撐;另外當(dāng)請(qǐng)求變慢或者不可用時(shí),我們也無(wú)法得知是哪個(gè)后臺(tái)服務(wù)引起的,這時(shí)就需要解決如何快速定位服務(wù)故障點(diǎn),Zipkin 分布式跟蹤系統(tǒng)就能很好的解決這樣的問(wèn)題。
Zipkin Java 追蹤器中最受歡迎的是 Brava;另外還有 Sleuth,可以做偵查,在搜索和自動(dòng)追蹤的時(shí)候可以使用。此外還有一些開(kāi)源的追蹤庫(kù),包括 OpenCensus、OpenTracing、OpenTracing、Kamon,這些庫(kù)可以相互作用,在網(wǎng)絡(luò)上共享數(shù)據(jù)。
4 Spring Cloud Data Flow 概念及演示
第四位演講嘉賓是 Spring Cloud Skipper/Stream/Data Flow committer Ilayaperumal,他主要介紹如何使用 Spring Cloud Data Flow 執(zhí)行數(shù)據(jù)集成和實(shí)時(shí)數(shù)據(jù)處理流水線,并將它們部署到 Cloud Foundry 和 Kubernetes 等多個(gè)平臺(tái)。
在演講開(kāi)始,Ilayaperumal 首先介紹了云原生、微服務(wù)、Spring Cloud Data Flow 等概念的內(nèi)涵以及應(yīng)用場(chǎng)景。
很長(zhǎng)時(shí)間以來(lái),Spring Boot 一直被我們所關(guān)注,Spring Boot 有什么優(yōu)勢(shì)呢?Spring Boot 使用了特定的方式來(lái)進(jìn)行配置,從而使開(kāi)發(fā)人員不再需要定義樣板化的配置。如果你做微服務(wù)應(yīng)用開(kāi)發(fā),Spring Boot 會(huì)是最佳的選擇,它可以快速、方便、簡(jiǎn)單的進(jìn)行開(kāi)發(fā)。它提供自動(dòng)配置功能,如果你做一個(gè)數(shù)據(jù)庫(kù)的開(kāi)發(fā),如果把數(shù)據(jù)庫(kù)開(kāi)發(fā)的參數(shù)輸入 Spring Boot,它可以協(xié)助你進(jìn)行開(kāi)發(fā)。
在消息驅(qū)動(dòng)的微服務(wù)方面, Spring Cloud Data Flow 就是一個(gè)最好的例子,它以流為導(dǎo)向,對(duì)微服務(wù)進(jìn)行更好的分布。Spring Cloud Data Flow 是一個(gè)編排工具,提供流應(yīng)用,可以持續(xù)性的進(jìn)行交付。在隨后的演示中,Ilayaperumal 使用 Spring Cloud Data Flow 的 DSL 和 Designer User Interface 展示了在不用編寫任何代碼的情況下,針對(duì)常見(jiàn)用例如何組裝數(shù)據(jù)流水線。
此外,Ilayaperumal 還介紹了如何使用 Spring Cloud Skipper 持續(xù)交付這些處理流水線。Spring Cloud Skipper 是一個(gè) CI/CD 平臺(tái),可用于發(fā)現(xiàn)、安裝、升級(jí)和回滾多個(gè)云平臺(tái)上的應(yīng)用程序。
5 揭秘 Eureka 工作和應(yīng)用原理
在最后一個(gè)演講中,Pivotal 高級(jí)解決方案架構(gòu)師李剛介紹了 Spring Cloud Netflix-Eureka 原理以及工作原理。Eureka 作為 Spring Cloud 微服務(wù)架構(gòu)中的注冊(cè)中心,扮演著重要的角色。演講從源碼角度出發(fā),詳細(xì)介紹了 Eureka 的實(shí)現(xiàn)機(jī)制。
Eureka 是一個(gè)古希臘詞語(yǔ),含義為我找到了,我發(fā)現(xiàn)了。相傳阿基米德發(fā)現(xiàn)浮力原理的時(shí)候,說(shuō)出了這個(gè)詞。在李剛展示的一張 Eureka 架構(gòu)圖中,可以看到 Eureka Server 不同節(jié)點(diǎn)之間的工作原理。
從注冊(cè)機(jī)制來(lái)看,包括保存注冊(cè)信息、更新閾值、將新增示例保存到 Queue、清空緩存、復(fù)制給其他 Eureka Server 節(jié)點(diǎn)等幾個(gè)流程;從 Renew 機(jī)制來(lái)看,包括找到續(xù)約實(shí)例、更新續(xù)約時(shí)間、復(fù)制給其他 Eureka Server 節(jié)點(diǎn)幾個(gè)流程;此外,李剛還介紹了包括 Cancel、Evict 機(jī)制。
在 Eureka Server 緩存機(jī)制上,Eureka Server 內(nèi)置兩層緩存,readOnlyCacheMap 本質(zhì) MAP,無(wú)過(guò)期時(shí)間;readWriteCacheMap 本質(zhì) Guava 緩存,存在過(guò)期時(shí)間;通過(guò)參數(shù)可以決定是否啟用 MAP 緩存。
在 Eureka Server 節(jié)點(diǎn)復(fù)制機(jī)制上,Eureka Server 啟動(dòng)時(shí)從相鄰節(jié)點(diǎn)同步已有注冊(cè)信息;Eureka Server 接收 register、 renew、 cancel 事件時(shí)會(huì)將次信息同步給相鄰節(jié)點(diǎn)。
6 一個(gè)彩蛋
關(guān)注 Pivotal 公眾號(hào)(pivotal_china),可獲得此次實(shí)戰(zhàn)營(yíng)講師全部演講 PPT,讓你猶如親臨現(xiàn)場(chǎng)。
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。