前些天,周末堂弟來找我玩,兩人聊到深夜!
本人堂弟 18 年畢業(yè)于長沙某大專,實習(xí)期間進入一家和學(xué)校合作的互聯(lián)網(wǎng)公司,一直在公司干著千篇一律的 CRUD,生活看不到希望,感覺一直在那里 CRUD 沒有希望,所以在春節(jié)回來后就離職了,一直在家中學(xué)習(xí)。和一些大佬在 VX 群里交流學(xué)習(xí)的過程中,無意中從一位騰訊云大佬手中拿到了這份由騰訊云大佬親碼的“Java 微服務(wù)”學(xué)習(xí)筆記!
java學(xué)習(xí)交流:737251827
作為這個時代碼代碼的禿頭人員,對微服務(wù)肯定是不陌生的,如果連微服務(wù)都沒用過,還真不好意思出去面試,指不定被面試官吊打多少次。
畢竟現(xiàn)在互聯(lián)網(wǎng)公司和一些創(chuàng)業(yè)公司都要用到微服務(wù),像亞馬遜、谷歌、阿里、騰訊都要使用,可見精通微服務(wù)使用真的很有必要。
所以,今天則分享出騰訊云大神親自碼出的“Java 微服務(wù)”學(xué)習(xí)筆記,筆記內(nèi)容沒有講一句廢話,全篇看下來都是精華!
這份筆記幫助你構(gòu)建供企業(yè)使用的微服務(wù)架構(gòu)實現(xiàn)。從核心概念和框架開始介紹,然后著重講述大型軟件項目的高層次設(shè)計,逐漸進入開發(fā)環(huán)境的設(shè)置和前期配置,對微服務(wù)架構(gòu)進行持續(xù)集成的部署。然后使用 Spring Security 實現(xiàn)微服務(wù)的安全性,利用 REST Java 客戶端和其他工具有效地執(zhí)行測試。最后,展示了微服務(wù)設(shè)計的最佳做法和一般原則,以及如何檢測和調(diào)試開發(fā)過程出現(xiàn)的問題。
受眾群體:熟悉微服務(wù)架構(gòu)的 Java 開發(fā)人員,并對微服務(wù)的核心要素和應(yīng)用程序有合理的知識水平和理解,現(xiàn)在想要深入了解如何有效地實施企業(yè)級微服務(wù)。

?微服務(wù)知識導(dǎo)圖
第一部分:一種解決方法
在這一部分中,你將學(xué)習(xí)微服務(wù)的永存性及其演化過程。它強調(diào)了本地部署和基于云的產(chǎn)品面臨的重大問題及微服務(wù)如何處理這些問題。同時還解釋了在 SaaS、企業(yè)級或大型應(yīng)用程序的開發(fā)過程中遇到的常見問題及其解決方案。
在這一部分,我們將學(xué)習(xí)一下主題:
微服務(wù)和背景簡介
整體式架構(gòu)
整體式架構(gòu)的限制
微服務(wù)提供的靈活性與效益
在諸如 Docker 的容器中部署微服務(wù)

?第二部分:設(shè)置開發(fā)環(huán)境
這一部分著重介紹開發(fā)環(huán)境的設(shè)置和配置。
在這里你將學(xué)到這些內(nèi)容:
Spring Boot 配置
示例 REST 程序
生成安裝程序
使用 Postman Chrome 擴展執(zhí)行 REST API 測試
NetBeans——安裝和設(shè)置

第三部分:領(lǐng)域驅(qū)動設(shè)計
這一部分通過引用一個示例項目為其余的部分定基調(diào)。從這里開始,將用這個示例項目來解釋不同的微服務(wù)概念。這一部分使用此示例項目驅(qū)動不同的功能組合和領(lǐng)域服務(wù)或應(yīng)用程序來解釋領(lǐng)域驅(qū)動設(shè)計( domain driven design, DDD )。它將幫助你了解 DDD 及其實際用法的基礎(chǔ)知識。你還將使用 REST 服務(wù)來學(xué)習(xí)設(shè)計領(lǐng)域模型的概念。
這一部分包含以下內(nèi)容:
DDD 的基本要素
如何使用 DDD 設(shè)計應(yīng)用程序
領(lǐng)域模型
一個基于 DDD 的領(lǐng)域模型設(shè)計示例

?第四部分:實現(xiàn)微服務(wù)
這一部分引導(dǎo)你從我們的示例項目——在線餐館訂位系統(tǒng)( OTRS )的設(shè)計階段進入實現(xiàn)階段。在這里,你將使用上一部分所述的相同設(shè)計,并增強它,以建立微服務(wù)。在這一部分的結(jié)尾,你不僅將學(xué)會實現(xiàn)此設(shè)計,還將學(xué)到微服務(wù)的不同方面一構(gòu)建、 測試和包裝。雖然重點是建立和實現(xiàn) Restaurant 微服務(wù),你可以使用同樣的方法來建立和實現(xiàn) OTRS 中用到的其他微服務(wù)。
這一部分主要包含一下內(nèi)容:
OTRS 概述
開發(fā)和實現(xiàn)微服務(wù)
測試

第五部分:部署和測試
這一部分將會解釋如何用不同的形式,包括獨立部署和使用諸如 Docker 的容器來部署微服務(wù),還將演示如何用 Docker 把我們的示例項目部署到云服務(wù)如 AWS 上。在實現(xiàn) Docker 之前,我們將首先探索微服務(wù)的其他相關(guān)因素,如負載均衡和邊緣服務(wù)器,你也將了解使用不同的 REST 客戶端,如 RestTemplate、Netflix Feign 等來測試微服務(wù)。
在這一部分,主要包含一下內(nèi)容:
使用 Netflix OSS 的微服務(wù)架構(gòu)概述
微服務(wù)的負載均衡
邊緣服務(wù)器
斷路器和監(jiān)控
使用容器部署微服務(wù)
使用 Docker 容器對微服務(wù)進行集成測試

第六部分:實現(xiàn)微服務(wù)的安全性
正如你所知,微服務(wù)是我們部署在處所內(nèi)或云基礎(chǔ)設(shè)施中的組件,微服務(wù)可以提供 API 或 web 應(yīng)用程序。我們的示例應(yīng)用程序 OTRS 提供的是 API。這一部分將側(cè)重如何使用 Spring Security 和 Spring OAuth2 來實現(xiàn)這些 API 的安全性,還會重點介紹 OAuth 2.0 基礎(chǔ)知識,我們會使用 OAuth 2.0 來保護 OTRS 的 API。
這一部分主要包含一下內(nèi)容:
啟用安全套接字層(SSL)
身份驗證和授權(quán)
OAuth 2.0

第七部分:利用為服務(wù) Web 應(yīng)用程序來使用服務(wù)
在這一部分,我們將探索如何開發(fā)這些獨立的 UI 應(yīng)用程序。我們將開發(fā)和實現(xiàn)沒有登錄和授權(quán)流程的 OTRS 示例應(yīng)用程序。我們會部署一個功能非常有限地實現(xiàn)并涵蓋高層次的 AngularJS 概念。
在這一部分,主要包含一下內(nèi)容:
AngularJS 框架概述
開發(fā) OTRS 的功能
建立一個 web 應(yīng)用程序(UI)

第八部分:最佳做法和一般原則
在為獲得微服務(wù)示例項目開發(fā)經(jīng)驗付出這么多辛苦的工作后,你一定會想如何避免常見的錯誤,并改進基于微服務(wù)的產(chǎn)品和服務(wù)的開發(fā)全過程。我們可以按照這些原則或準則,來簡化微服務(wù)的開發(fā)過程,并避免或減少潛在的局限性。我們將在這部分著重介紹這些關(guān)鍵概念。
這一部分主要包含一下內(nèi)容:
概述和心態(tài)
最佳做法和原則
微服務(wù)框架和工具

第九部分:故障排除指南
到目前為止,我們已經(jīng)學(xué)了這么多東西,我敢肯定你享受這個具有挑戰(zhàn)性的快樂學(xué)習(xí)旅程的每時每刻。學(xué)完這一部分后,我不愿意說這份資料結(jié)束了,而寧愿說你正在完成第一個里程碑??邕^這個里程碑,我們就可以繼續(xù)學(xué)習(xí)基于微服務(wù)的新設(shè)計范式并在云環(huán)境中實現(xiàn)它。我想重申,集成測試是測試微服務(wù)和 API 之間交互的重要途徑。在你完成在線餐館訂座系統(tǒng)( OTRS )示例應(yīng)用程序的過程中,我確信你面臨許多挑戰(zhàn),尤其是在調(diào)試應(yīng)用程序時。在這里,我們將介紹幾種做法和工具,幫助你解決部署應(yīng)用程序、Docker 容器和宿主機的故障。
這一部分主要包含一下內(nèi)容:
日志記錄和 ELK 環(huán)境
使用相關(guān) ID 來進行服務(wù)調(diào)用
依賴項和版本

寫在最后
最后,我想說的是,學(xué)習(xí)并非難事,而貴在堅持,尤其是在我們參與工作之后,要繼續(xù)堅持學(xué)習(xí)就更不容易了。但對于程序員來說,學(xué)習(xí)是立業(yè)之根本,如若放棄學(xué)習(xí),被市場淘汰是遲早的事情。所以,學(xué)習(xí)更多新的知識對于自己來說才是一種更大的投資。
希望大家能夠時刻保持一顆積極向上的心,我始終相信一件事:機會永遠是留給有準備的人。