Linkerd Service Mesh 服務(wù)配置文件規(guī)范
服務(wù)配置文件 為 Linkerd 提供有關(guān)服務(wù)的附加信息。以下是可以使用服務(wù)配置文件完成的所有操作的參考。
系列
中文手冊(cè)(https://linkerd.hacker-linner.com)
Spec(規(guī)范)
服務(wù)配置文件規(guī)范必須包含以下頂級(jí)字段:
field | value |
---|---|
routes |
route 對(duì)象的列表 |
retryBudget |
定義此服務(wù)的最大重試率的 retry budget 對(duì)象 |
Route(路由)
route 對(duì)象必須包含以下字段:
field | value |
---|---|
name |
這條 route 的名稱,因?yàn)樗鼘⒊霈F(xiàn)在 route 標(biāo)簽中 |
condition |
一個(gè) request match 對(duì)象,用于定義請(qǐng)求是否與此 route 匹配 |
responseClasses |
(可選)response class 對(duì)象列表 |
isRetryable |
表示對(duì)該 route 的請(qǐng)求始終可以安全重試,并且會(huì)導(dǎo)致 proxy 盡可能重試該 route 上失敗的請(qǐng)求 |
timeout |
發(fā)送請(qǐng)求后等待響應(yīng)(包括重試)完成的最長(zhǎng)時(shí)間 |
Request Match(請(qǐng)求匹配)
請(qǐng)求匹配對(duì)象必須恰好包含以下字段之一:
field | value |
---|---|
pathRegex |
匹配請(qǐng)求路徑的正則表達(dá)式 |
method |
GET, POST, PUT, DELETE, OPTION, HEAD, TRACE 之一 |
all |
必須全部匹配的 request match 對(duì)象列表 |
any |
request match 對(duì)象的列表,其中至少一個(gè)必須匹配 |
not |
必須不匹配的 request match 對(duì)象 |
Request Match 使用示例
最簡(jiǎn)單的條件是路徑正則表達(dá)式:
- pathRegex: '/authors/\d+'
這是檢查請(qǐng)求方法的條件:
- method: POST
如果設(shè)置了多個(gè)條件字段,則必須滿足所有條件。這等效于使用 all 條件:
- all:
- - pathRegex: '/authors/\d+'
- - method: POST
可以使用 all、any 和 not 組合條件:
- any:
- - all:
- - method: POST
- - pathRegex: '/authors/\d+'
- - all:
- - not:
- method: DELETE
- - pathRegex: /info.txt
Response Class(響應(yīng)類)
response class 對(duì)象必須包含以下字段:
field | value |
---|---|
condition |
一個(gè) response match 對(duì)象,它定義一個(gè) response 是否匹配這個(gè) response class |
isFailure |
一個(gè)布爾值,用于定義這些 response 是否應(yīng)歸類為失敗 |
Response Match(響應(yīng)匹配)
response match 對(duì)象必須恰好包含以下字段之一:
field | value |
---|---|
status |
用于匹配響應(yīng)狀態(tài)代碼的 status range 對(duì)象 |
all |
必須全部匹配的 response match 對(duì)象列表 |
any |
response match 對(duì)象列表,其中至少一個(gè)必須匹配 |
not |
必須不匹配的 response match 對(duì)象 |
Response Match 條件可以以類似于上面顯示的 Request Match 使用示例 的方式組合
Status Range(狀態(tài)范圍)
status range 對(duì)象必須包含以下至少一個(gè)字段。只指定 min 或 max 中的一個(gè)將只匹配一個(gè)狀態(tài)碼。
field | value |
---|---|
min |
狀態(tài)碼必須大于或等于此值 |
max |
狀態(tài)碼必須小于或等于此值 |
Retry Budget(重試預(yù)算)
retry budget 指定應(yīng)發(fā)送到此服務(wù)的最大重試總次數(shù)與原始請(qǐng)求量的比率。
field | value |
---|---|
retryRatio |
重試請(qǐng)求 與原始請(qǐng)求 的最大比率 |
minRetriesPerSecond |
除了 retryRatio 允許的重試次數(shù)外,允許每秒重試次數(shù) |
ttl |
指示在計(jì)算 retryRatio 時(shí)應(yīng)考慮請(qǐng)求的時(shí)間 |
實(shí)戰(zhàn)
- 設(shè)置服務(wù)配置文件
https://linkerd.hacker-linner.com/2.11/tasks/setting-up-service-profiles/
- 完整的 demo 演練
https://linkerd.hacker-linner.com/2.11/tasks/books/#service-profiles/