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