🧸安清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的配置