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