本文參考至
Java and Spring Boot Microservices | 10 Hour Full Course
我使用的Repository如下
https://github.com/Hoxton019030/SpringCloud
最近公司需要打考績,其中有一項是關於下一季的自評,我想了一下,就寫了下面這些
- 入門ElasticSearch
- 學習如何進行資料庫的備份
- 學習如何製作讀寫分離的資料庫
- SpringCloud入門
- Java鎖的機制
所以這是一篇為了完成考績而寫的文章^_^,這邊先說一下我對微服務的理解。想像以Dcard作舉例,假設他們就用一台Server去處理註冊、登入、發布文章、回應請求,那麼這台Server可能要配置到很頂才能有辦法處理這件事情,因為當訪問量一大時,很容易就會導致其他功能的阻塞,所以我們的想法就是將不同的服務部署在不同的機器上面,讓A Server負責做登入、B Server負責做發布文章的事情…等等,如此一來我們就可以讓一些請求頻率比較少,但較耗時的工作(註冊、發布文章),和請求頻率高,但不耗時的工作(瀏覽文章),獨立開來,並且某一項服務掛掉時,不會影響到其他Server的運行,不需要整個網站關閉起來來做Hotfix。
學習目標
- 建立多模塊(Module的專案)
- 啟用Eureka作為服務發現中心
- 理解附載均衡(Load Balance)
- 使用Open Feign將類統整
- 使用Sleuth做Trace
- 理解Spring Cloud GateWay
- Message Queue之實作
建立多模塊(Module的專案)
請參考[Maven詳細研究]
ㄏㄏ ,第一段就直接水過去了,真爽
啟用Eureka作為服務發現中心
理解Spring Cloud GateWay
Gateway = 路由轉發+過濾器
predicate
當滿足特定條件,再進行路由轉發。有以下這些,Path也是其中一種方式
Path
路徑必須為…才做路由轉發
Query
請求參數必須包含…才做路由轉發
Header
請求頭中應該包含的內容,如果只有一個值,代表請求頭必須包含的參數名(key),如果有兩個值,則第一個代表是參數名(key),第二個代表是參數的值(value)
Method
用什麼請求方式。比如說Get, Post 之類的
RemoteAddr
允許訪問的客戶端地址,限制哪些IP可以訪問Gateway,注意不可以寫localhost!
Host
功能跟Header差不多
Cookie
要求請求必須包含指定的key跟value
After, Before, Between
在指定時間之前、之後、之中才可以訪問
Weigh
負載均衡中的權重,對同一組url做load Balance
Filter
通過了predicate之後就到Filter這層,Filter有以下三種
- 內置Filter,都是Gateway的實現類
- 內置GlobalFilter,所有的路由都會經過這個
- 自定義GatewayFilter,在特定路由上生效