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