🧸安清h:個人主頁?
? ?🎥個人專欄:【Spring篇】【計算機網絡】【Mybatis篇】
🎯大題
?一.Nacos的服務注冊與發現
🚦1.怎么來進行服務的注冊與發現的這樣的一個流程,描述一下。
🎃描述Nacos服務注冊與發現的流程
① 服務提供者啟動時向Nacos注冊自身信息;
② 服務消費者啟動時訂閱所需服務;
③ Nacos通過心跳機制檢查服務健康狀態;
④ 消費者調用服務時從Nacos獲取可用實例;
⑤ 消費者通過負載均衡選擇實例發起調用
🚦2.Nacos配置客戶端信息
?
?二.聲明式服務調用組件
?1.寫一個OpenFeign的客戶端。
高頻考點預測
🚦1.客戶端接口定義
請為服務?user-service?的 REST 端點?GET /user/{id}?編寫 OpenFeign 客戶端接口。
@FeignClient(value = "user-service") // 必寫:指定服務名
public interface UserServiceClient {
????@GetMapping("/user/{id}") ???????// 必寫:映射請求方法和路徑
????String getUserById(@PathVariable("id") Integer id); // 參數注解不可省略}
?🚦2.請求方法映射
將以下方法轉為 Feign 客戶端接口(服務名:order-service
):
// 原始 Controller 方法:
@PostMapping("/create")
public Order createOrder(@RequestBody Order order);
答案:
@FeignClient("order-service")
public interface OrderServiceClient {
? ? @PostMapping("/create")
? ? Order createOrder(@RequestBody Order order); // 注意:參數注解需保留
}?
🚦題型:
1.補全代碼題
// 補全Feign客戶端調用 user-service 的 /users/{userId} 接口
@______(name = "_________")
public interface UserServiceClient {@______("/users/{userId}")User getUser(@______("userId") String id);
}
答案:
@FeignClient
,"user-service"
,@GetMapping
,@PathVariable
2.改錯題
// 找出以下代碼的3處錯誤
@FeignClient("order-service")
public class OrderClient {@RequestMapping("/orders/{orderId}")Order getOrder(@PathVariable Long orderId);
}
?錯誤點:
① 必須是interface
不能是class
②?@RequestMapping
未指定method類型
③?@PathVariable
缺少value屬性(當參數名≠路徑變量時)
3.場景應用題
為支付服務編寫Feign客戶端,要求:
-
服務名:
payment-service
-
端點:
POST /payments
?接收JSON格式Payment對象 -
端點:
GET /payments/{id}
?返回Payment對象
@FeignClient("payment-service")
public interface PaymentClient {@PostMapping("/payments")Payment createPayment(@RequestBody Payment payment);@GetMapping("/payments/{id}")Payment getPayment(@PathVariable("id") String paymentId);
}
?三.服務容錯組件Sentinel
🚦1.sentinel如何定義
SphU:
SphO:
🚦2.寫一個流控規則
?四.API網關Gateway?
🚦1.寫一個斷言的相應配置
比如說,讓你請求那個路徑,轉發給誰。
🚦2.自定義的路由斷言
?五.Nacos配置中心
🚦1.如果給定了DataID,group和文件格式,在配置文件中該如何與之對應?
🚦2.DataID的配置?
?