11 月 3 日浙垫,Spring 技術(shù)的擁有者 Pivotal 在北京舉辦 SpringOne Tour 技術(shù)峰會(huì),包括 Spring 技術(shù)布道師 Josh Long币厕、Pivotal 軟件開發(fā)布道師 Spencer Gibb 在內(nèi)的一眾 Spring 社區(qū)大咖來到中國,獻(xiàn)上一道 Spring 技術(shù)盛宴。
對(duì)于想要學(xué)習(xí)云原生 Java剧防、Spring Cloud、微服務(wù)辫樱、Spring Boot 2.0 的開發(fā)者來說峭拘,Spring 技術(shù)布道師 Josh Long 的演講和演示最值得期待。
他還是一貫的風(fēng)格,語速極快鸡挠、富有激情辉饱、語言詼諧。雖然現(xiàn)場網(wǎng)絡(luò)開始時(shí)有一點(diǎn)問題拣展,但是絲毫沒有影響他的情緒彭沼。作為《云原生 Java》一書的作者,他還推薦了自己的新書《響應(yīng)式 Spring》备埃。
他的演講主題是《云原生 Spring》姓惑,他的演示主要圍繞的是如何在微服務(wù)環(huán)境下進(jìn)行響應(yīng)式編程。他選擇了 Spring Boot 一個(gè)比較舊的版本——2.0.6 版本按脚,用于建立并演示一個(gè)服務(wù)于毙。
具體到演示環(huán)節(jié),信息量還是非常大的辅搬,加之 Josh 語速快唯沮、手下代碼翻飛,現(xiàn)場觀眾看得直呼過癮伞辛。
Josh 以 Demo 的方式來介紹云原生 Spring烂翰,首先快速從 start.spring.io 上構(gòu)建一個(gè)基于 Spring Boot、Reactive蚤氏、Mongo 的 reservation 微服務(wù)甘耿,然后基于微服務(wù)構(gòu)建 routing 支持,引入 Spring Cloud Gateway竿滨,Spring Hystrix佳恬,Spring Security,F(xiàn)low Control于游,Client 檢測毁葱,Rsocket 等機(jī)制。整體 Demo 演示下來贰剥,能夠讓與會(huì)的開發(fā)者充分了解 Spring Framework 的新功能和機(jī)制倾剿。
午間休息的時(shí)候,很多參會(huì)者去跟 Josh Long 以及其他幾位 Spring 技術(shù)專家合影蚌成,這其中有些人是第一次來中國前痘。大家都很興奮,很多人是 Josh Long 以及眾多技術(shù)大咖的“粉絲”担忧,合影時(shí)大喊“Open source”芹缔,令人感受到社區(qū)的強(qiáng)大月杉,以及開發(fā)者的熱情十绑。
現(xiàn)場隨機(jī)采訪幾位參會(huì)者息拜,大多對(duì) Josh Long 操控代碼的熟練程度、思維的活躍印象深刻桂塞。某銀行客戶提及 Josh Long 的演講表示:該分享從微服務(wù)思路上介紹了各類服務(wù)組合嘁灯,包括調(diào)用对碌、控制帝璧、認(rèn)證、攔截等等吵取,是比較完整的微服務(wù)治理的概念和思路的展示禽额。對(duì)于開發(fā)者來說,有利于建立對(duì) Spring 的系統(tǒng)認(rèn)識(shí)皮官。
如果大家對(duì) Josh Long 的分享尤其是代碼演示感興趣脯倒,可以觀看視頻回放,Josh Long 的代碼演示還是非常精彩的捺氢。
當(dāng)天參加活動(dòng)的小伙伴們還是很幸運(yùn)的藻丢,因?yàn)?Josh 在下午活動(dòng)中再次親身上陣進(jìn)行 Deom 演示,告訴大家如何測試 Spring 應(yīng)用和服務(wù)摄乒。標(biāo)題很有意思悠反,叫做:Bootiful Testing。
有了測試驅(qū)動(dòng)型開發(fā) (TDD)馍佑,我們可以確信自己構(gòu)建的內(nèi)容正確無誤斋否。TDD 讓開發(fā)人員知道他們能夠修復(fù)出現(xiàn)的問題并加以改進(jìn),從而滿懷信心拭荤。這個(gè)演示包括如何測試基本組件模型茵臭、如何利用測試切片的優(yōu)勢,以及如何測試 Web 應(yīng)用舅世。
響應(yīng)式 Spring 的道法術(shù)器
Pivotal 軟件開發(fā)布道師 Mark Heckler 發(fā)表了題為《響應(yīng)式 Spring 和 Spring Boot 2.0》的演講并現(xiàn)場編寫了一個(gè) CoffeeService 的 Reactive Stream 的 demo 應(yīng)用旦委,通過 coffeeservice 的 demo 應(yīng)用,開發(fā)人員可以理解 reactive 的非阻塞雏亚、異步缨硝、事件驅(qū)動(dòng)機(jī)制。Mark 很風(fēng)趣地自詡為一位“懶惰的編程者”罢低,不知道這一說法從何而來查辩。
現(xiàn)場編寫 Demo 的 github repository 點(diǎn)擊可以看到。
響應(yīng)式編程是 SpringFramework5.0 最重要的特性之一网持。響應(yīng)式編程提供了另一種編程風(fēng)格宜肉,專注于構(gòu)建對(duì)事件做出響應(yīng)的應(yīng)用程序。Mark 介紹了 reactive stream(定義響應(yīng)性 API 的語言中立嘗試)和 Reactor(由 Spring Pivotal 團(tuán)隊(duì)提供的 Reactive Stream 的 Java 實(shí)現(xiàn))的用途以及核心 API翎碑。
在分享結(jié)束的時(shí)候 Mark 展示了一張 PPT,這些資源可以協(xié)助開發(fā)者進(jìn)行測試之斯。
Spring日杈、函數(shù)遣铝、無服務(wù)器如何為我所用?
Pivotal 資深云平臺(tái)機(jī)構(gòu)師劉凡的分享集中在 Knative莉擒、riff 和 Serverless酿炸,希望揭示的問題是:Spring、函數(shù)涨冀、無服務(wù)器如何為我所用填硕?
分享一開始,劉凡詢問現(xiàn)場有多少人在用 k8s鹿鳖,舉手的人還是挺多的扁眯,這也與當(dāng)前 k8s 的熱度相吻合。
Knative 構(gòu)建在 Kubernetes 之上翅帜,提供了一系列中間件組件來構(gòu)建以源碼為中心姻檀,基于容器的現(xiàn)代應(yīng)用,便于這些應(yīng)用能夠運(yùn)行在任何云環(huán)境涝滴,支持不同的公有云绣版、私有云、甚至在第三方的數(shù)據(jù)中心歼疮。
Knative 的每一個(gè)組件都是基于 kubernetes 框架或應(yīng)用并可以進(jìn)行共享的杂抽,同時(shí)也是真實(shí)場景中成功經(jīng)驗(yàn)的總結(jié)。Knative 的組件主要關(guān)注解決單調(diào)重復(fù)但復(fù)雜的任務(wù)韩脏,比如部署容器缩麸、基于 kubernetes 從源代碼到 URL 的工作流容器編排、針對(duì)藍(lán)綠部署的路由和流量管理骤素、基于請(qǐng)求的自動(dòng)彈性擴(kuò)展匙睹、對(duì)事件生態(tài)綁定運(yùn)行的服務(wù)。
riff 也是一個(gè)開源項(xiàng)目济竹,提供 90% 的 Knative 的源碼痕檬。劉凡進(jìn)行了一個(gè) riff on Knative 的演示。對(duì)于 riff 來說送浊,第一步是創(chuàng)建 K8S 集群梦谜,進(jìn)行安裝。
對(duì)于無服務(wù)器函數(shù)袭景,劉凡介紹唁桩,其作用是用于讓大家更加關(guān)注自己的業(yè)務(wù),提升資源的使用效率耸棒。不同的工作負(fù)載可以使用不同的平臺(tái)荒澡,比如容器編排(CaaS)、應(yīng)用平臺(tái) (PaaS)与殃、Serverless Functions单山。
無服務(wù)器 /FaaS(Function-as-a-Service)的適用場景包括:數(shù)據(jù)實(shí)時(shí)處理碍现、文件實(shí)時(shí)處理、實(shí)時(shí)流處理(如日志流)米奸、實(shí)時(shí)消息處理昼接、ETL、IOT悴晰、移動(dòng)應(yīng)用后端慢睡、數(shù)據(jù)分析、API 和微服務(wù)開發(fā)铡溪、Webhook漂辐、作業(yè)調(diào)度、消息推送服務(wù)佃却、錯(cuò)誤處理等很多個(gè)者吁。
3Spring Cloud Gateway 的架構(gòu)和體驗(yàn)之旅
Pivotal 軟件開發(fā)布道師 Spencer Gibb 的分享主題是《Spring Cloud Gateway 的架構(gòu)和體驗(yàn)之旅》。圍繞 API 網(wǎng)關(guān)能讓企業(yè)的微服務(wù)架構(gòu)獲得哪些好處饲帅、API 網(wǎng)關(guān)概念复凳、類型及特征展開。值得一提的是灶泵,他是 Spring Cloud 的成員育八,更是 Spring Cloud Gateway 的主要貢獻(xiàn)者,這是他第一次來到中國赦邻。
Spencer 在演講中首先幽默地拆解了 Spring髓棋、Cloud 和 Gateway 的關(guān)系及,即 Spring 指的是運(yùn)營在 Spring Framwork5.0 以上惶洲,Cloud 指的是運(yùn)行在 Spring Boot2.0 以上并按照云原生的方式開發(fā)按声,而云原生的模式就是 API Gateway,所以三者相互依賴與共存恬吕。
在當(dāng)前的微服務(wù)應(yīng)用中签则,應(yīng)用在調(diào)用后端的微服務(wù)的過程中,不可避免的會(huì)面臨路由铐料、安全渐裂、監(jiān)控、彈性钠惩、金絲雀部署等要求柒凉,而 API Gateway 就是在這樣的需求和背景下應(yīng)運(yùn)而生。API Gateway 的類型可以是 Applicance篓跛、SaaS 服務(wù)膝捞、Web Server、Mesh 和面向開發(fā)者的愧沟。
而具體到 Spring Cloud Gateway绑警,它是基于 Spring boot2.0求泰、Project Reactor 等技術(shù)開發(fā)的非阻塞網(wǎng)關(guān)。
在演示環(huán)節(jié)计盒,Spencer 介紹了 Spring Cloud Gateway 以及它的架構(gòu)和開發(fā)人員的體驗(yàn)。現(xiàn)場聽眾了解了路由匹配和篩選芽丹,以及與 Zuul 1 體驗(yàn)的不同之處北启。Spring Cloud Gateway 作為 Spring Cloud 生態(tài)系中的網(wǎng)關(guān),目標(biāo)是替代 Netflix zuul拔第。
Spencer Gibb 表示咕村,Spring Cloud Gateway 對(duì)于開發(fā)者的最大意義和價(jià)值在于,這是一個(gè)云原生蚊俺,不僅僅是架構(gòu)懈涛,而是涉及整個(gè)流程的持續(xù)創(chuàng)新,可以讓開發(fā)者直接部署而不用依賴于任何其他團(tuán)隊(duì)和組織泳猬。
4為什么 Cloud Foundry 是運(yùn)行 Java 微服務(wù)的最佳平臺(tái)批钠?
Pivotal 高級(jí)解決方案架構(gòu)師李剛的演講主題是《為什么 Cloud Foundry 是運(yùn)行 Java 微服務(wù)的最佳平臺(tái)?》
對(duì)于企業(yè)來說得封,從開發(fā)到生產(chǎn)埋心,經(jīng)歷了什么?其實(shí)生產(chǎn)之旅并非一片坦途忙上,其間有很多磕磕絆絆拷呆。借助 Spring 和 PAS(Pivotal Application Service,也就是 Pivotal Cloud Foundry——PCF)疫粥,讓我們能夠快速上升到生產(chǎn)環(huán)境茬斧。
在對(duì) Spring Boot 和 Spring Cloud 的介紹中李剛表示:所謂 Spring Boot,可以五分鐘構(gòu)建出一個(gè)簡單的應(yīng)用梗逮,甚至這個(gè)時(shí)間其實(shí)可以更短项秉。Spring Boot 的能力特性包括:快速生成應(yīng)用、自動(dòng)依賴映射管理库糠、用 profiles 文件來管理不同環(huán)境下的配置伙狐、強(qiáng)大的開發(fā)工具、自動(dòng)配置瞬欧、監(jiān)控并管理 endpoints 贷屎、面向微服務(wù)。
而所謂 Spring Cloud艘虎,這是與 Netflix 合作唉侄、專門針對(duì)脆弱的基礎(chǔ)設(shè)施而設(shè)計(jì),這是一個(gè) Java 的微服務(wù)框架野建,100% Spring Boot 支持属划。
在提及企業(yè)為什么應(yīng)該選擇 PAS 的時(shí)候李剛表示:通過統(tǒng)計(jì)恬叹,大部分開發(fā)人員每天專注于寫代碼的時(shí)間并不長,很多時(shí)間都用于應(yīng)用程序的部署同眯、基礎(chǔ)設(shè)施的配置等等了绽昼,沒有放在代碼本身。
但是對(duì)于很多企業(yè)來說须蜗,很多轉(zhuǎn)變正在發(fā)生硅确。T-Mobile 過去更新和交付新軟件版本需要 72 個(gè)步驟、歷時(shí) 7 個(gè)月明肮,現(xiàn)在實(shí)現(xiàn)了當(dāng)日部署菱农;利寶互助保險(xiǎn)集團(tuán)在一個(gè)月內(nèi)構(gòu)建部署了一款 MVP 應(yīng)用,幾個(gè)月后便交付了最終版本柿估;康卡斯特一支 4 人組成的運(yùn)維團(tuán)隊(duì)支持了 1500 位開發(fā)人員循未;
家得寶每月向生產(chǎn)環(huán)境交付 1500 次,每月向所有環(huán)境交付 17000 次秫舌。
使用 Spinnaker 在 k8s 上測試的妖、構(gòu)建和部署應(yīng)用
Pivotal 解決方案架構(gòu)師 Paul Czarkowski,他的分享主題是《使用 Spinnaker 在 Kubernetes 上創(chuàng)建開發(fā)工作流》舅巷。
Paul 在演講一開始就調(diào)侃自己既不會(huì) Java 更不會(huì) Spring羔味,自己只是一個(gè)運(yùn)維者。作為運(yùn)維者钠右,Paul 目前力求改進(jìn) k8s 和 OpenStack 等復(fù)雜分布式系統(tǒng)的可運(yùn)維性問題赋元。在演講中,Paul 介紹了 k8s 及其核心組件飒房,借助 Spinnaker 的演示搁凸,著重介紹了 Spinnaker 可以輕松創(chuàng)建自定義工作流,用于在 k8s 上測試狠毯、構(gòu)建和部署應(yīng)用护糖。
k8s 是一個(gè)運(yùn)維平臺(tái),具備極大的靈活性嚼松,近期受到越來越多的關(guān)注嫡良,應(yīng)該說是一個(gè)非常熱門的概念。但其實(shí) k8s 部署簡單應(yīng)用時(shí)會(huì)遇到一些問題献酗,而 Spinnaker 可以幫助開發(fā)者輕松創(chuàng)建自定義工作流寝受,用于在 k8s 上測試、構(gòu)建和部署應(yīng)用罕偎。應(yīng)該說很澄,Spinnaker 可以節(jié)省很多勞動(dòng),它是一個(gè)開源的云驅(qū)動(dòng)的應(yīng)用,是一個(gè)好工具甩苛,用在多個(gè)平臺(tái)蹂楣、多個(gè)云上,無論用戶要把云部署到哪里讯蒲。
在分享中 Paul 為聽眾進(jìn)行了一個(gè) Spinnaker on PKS 的演示痊土,這個(gè)演示的安裝和部署還是非常簡單的,只需要 5 分鐘爱葵。