Java項目《谷粒商城》架構師級Java項目實戰,對標阿里P6-P7,全網最強
總時長 104:45:00 共408P
此文章包含第326p-第p331的內容
關注的問題
sentinel(哨兵)
sentinel來實現熔斷、降級、限流等操作
騰訊開源的tendis,分布式緩存
第一輛車開太慢就會堵車
有的解釋,降級是提供錯誤的一個兜底反饋,跟這個解釋好像不太一樣
sentinel學習
五種方法 我們一般使用第四種注解方法 第一種適配方法 第二種拋異常方法
步驟
- 引入sentinel包
控制臺
查看調用的是哪個版本的sentinel
這個jar包是個springboot項目 可以java -jar 直接啟動
這個項目默認端口是8080 如果被占用的話 可以用 --server.port=你要的端口號
步驟
控制臺操作方式
新增一個流控規則
再次刷新 進行限流
出現空指針異常 加一下判斷即可
只要加了依賴 就都會被監控
暴露規則
全部暴露
添加審計圖
導入endpoint依賴就可以使用統計圖
exclude是排除哪些(不暴露)
include(暴露)
自定義流控返回
新增一個配置類
sentinel 提供的管理器類
如果用spring5的webFlux編程就用下面的 這里我們用上面的
定義一個錯誤碼
亂碼了 我們定義一下編碼就行
全服務引入
每個服務都導入actuator 然后配置信息
錯誤
循環依賴錯誤
這里是用構造注入的方式解決循環依賴
解決:
注掉@postConstruct (它的作用是 方法會在bean實例化后被立即調用。)
這里解決失敗,還是報錯,我們自己創建一個rabbitTemplate
這里的@Primary注解的作用: 用于指示一個類、方法或字段作為首選的候選對象。當應用于類時,@Primary注解表示該類是首選的候選對象,將優先被實例化。當應用于方法時,@Primary注解表示該方法是最優選的候選方法,將優先被調用。當應用于字段時,@Primary注解表示該字段是最優選的候選字段,將優先被訪問。
我們定義的rabbitTemplate比別人的少一些配置 如下
還有一直解決方法
把@Bean注釋的轉換器和RabbitTemplate拆成兩個文件,可以解決循環依賴
效果
走完流程后
流控效果
warm up(熱身)
峰值如果是500 我們使用 warm up(熱身) :10秒內放進來500個請求
排隊等待
如果峰值時是500 進來700個請求 我們先將前500進行處理 然后剩下的200 等待我們設置的如3000毫秒 如果3000毫秒得不到處理 就拋出失敗