Featured image of post 微服務筆記

微服務筆記

關於微服務、SpringCloud、Eureka、Kubernetes相關的筆記

本文參考至

Java and Spring Boot Microservices | 10 Hour Full Course

我使用的Repository如下

https://github.com/Hoxton019030/SpringCloud

最近公司需要打考績,其中有一項是關於下一季的自評,我想了一下,就寫了下面這些

  1. 入門ElasticSearch
  2. 學習如何進行資料庫的備份
  3. 學習如何製作讀寫分離的資料庫
  4. SpringCloud入門
  5. Java鎖的機制

gif

所以這是一篇為了完成考績而寫的文章^_^,這邊先說一下我對微服務的理解。想像以Dcard作舉例,假設他們就用一台Server去處理註冊、登入、發布文章、回應請求,那麼這台Server可能要配置到很頂才能有辦法處理這件事情,因為當訪問量一大時,很容易就會導致其他功能的阻塞,所以我們的想法就是將不同的服務部署在不同的機器上面,讓A Server負責做登入、B Server負責做發布文章的事情…等等,如此一來我們就可以讓一些請求頻率比較少,但較耗時的工作(註冊、發布文章),和請求頻率高,但不耗時的工作(瀏覽文章),獨立開來,並且某一項服務掛掉時,不會影響到其他Server的運行,不需要整個網站關閉起來來做Hotfix。

學習目標

  1. 建立多模塊(Module的專案)
  2. 啟用Eureka作為服務發現中心
  3. 理解附載均衡(Load Balance)
  4. 使用Open Feign將類統整
  5. 使用Sleuth做Trace
  6. 理解Spring Cloud GateWay
  7. Message Queue之實作

建立多模塊(Module的專案)

請參考[Maven詳細研究]

ㄏㄏ ,第一段就直接水過去了,真爽

james-brown-dancing-gif

啟用Eureka作為服務發現中心

理解Spring Cloud GateWay

Gateway = 路由轉發+過濾器

predicate

當滿足特定條件,再進行路由轉發。有以下這些,Path也是其中一種方式

Path

路徑必須為…才做路由轉發

image-20231028162954288

Query

請求參數必須包含…才做路由轉發

image-20231028162956583

image-20231028164027169

請求頭中應該包含的內容,如果只有一個值,代表請求頭必須包含的參數名(key),如果有兩個值,則第一個代表是參數名(key),第二個代表是參數的值(value)

Method

用什麼請求方式。比如說Get, Post 之類的

image-20231028171326580

RemoteAddr

允許訪問的客戶端地址,限制哪些IP可以訪問Gateway,注意不可以寫localhost!

image-20231028171527655

Host

功能跟Header差不多

image-20231028172914218

要求請求必須包含指定的key跟value

After, Before, Between

在指定時間之前、之後、之中才可以訪問

image-20231028173913225

Weigh

負載均衡中的權重,對同一組url做load Balance

image-20231028174511190

Filter

通過了predicate之後就到Filter這層,Filter有以下三種

  1. 內置Filter,都是Gateway的實現類

image-20231028182453512

  1. 內置GlobalFilter,所有的路由都會經過這個
  2. 自定義GatewayFilter,在特定路由上生效

常用的Filter

image-20231029015731883

image-20231028183714521

Licensed under CC BY-NC-SA 4.0