哈尔滨网站专业制作,沈阳男科医院好吗,开福区互动网站建设,昆山市住房和建设局网站OpenFeign内部调用二 4.修改各业务服务的调用代码为feignClient
开启nacos注册 把Client变成bean 该服务仅内部调用#xff0c;不是给前端的 将某个服务标记为“内部调用”的目的主要有以下几个方面#xff1a; 安全性: 内部API通常不对外部用户公开#xff0c;这样可以防止…OpenFeign内部调用二 4.修改各业务服务的调用代码为feignClient
开启nacos注册 把Client变成bean 该服务仅内部调用不是给前端的 将某个服务标记为“内部调用”的目的主要有以下几个方面 安全性: 内部API通常不对外部用户公开这样可以防止未授权的访问。通过限制只允许内部服务调用可以降低潜在的安全风险。 服务架构: 在微服务架构中服务之间的通信往往是通过内部API进行的。这种设计使得各个服务能相互协作同时避免了直接暴露给外部的复杂性。 性能优化: 内部调用通常可以优化网络请求例如使用轻量级的通信协议如gRPC或HTTP/2而不是传统的RESTful API这样可以提高性能。 版本控制: 内部API可以独立于外部API进行版本控制使得内部服务能够在不影响外部用户的情况下进行更新和迭代。 简化开发: 开发人员可以在内部API中使用更复杂的逻辑和数据结构而不需要考虑外部用户的兼容性问题。 监控与日志: 内部调用可以更方便地进行监控和日志记录以便于分析和调试内部服务之间的交互。
通过这些措施可以确保系统的稳定性和安全性同时提升开发效率和服务可维护性。 编写服务的实现类 注意要和之前定义的客户端保持一致
这服务只是内部调用的
package com.yupi.yuojbackenduserservice.controller.inner;import com.yupi.yuojbackendmodel.model.entity.User;
import com.yupi.yuojbackendserviceclient.service.UserFeignClient;
import com.yupi.yuojbackenduserservice.service.UserService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;
import java.util.Collection;
import java.util.List;/*** 该服务仅内部调用不是给前端的*/
RestController
RequestMapping(/inner)
public class UserInnerController implements UserFeignClient {Resourceprivate UserService userService;/*** 根据 id 获取用户* param userId* return*/OverrideGetMapping(/get/id)public User getById(RequestParam(userId) long userId) {return userService.getById(userId);}/*** 根据 id 获取用户列表* param idList* return*/OverrideGetMapping(/get/ids)public ListUser listByIds(RequestParam(idList) CollectionLong idList) {return userService.listByIds(idList);}}什么时候用Client呢 5.开启nacos的配置 让服务互相发现
注册配置中心 现在所有服务引入依赖 dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-sentinel/artifactId/dependency 每个服务都配置一下
是针对 Spring Cloud 使用 Nacos 作为服务发现的设置 spring:cloud:nacos:discovery:server-addr: 127.0.0.1:8848 给项目启动类打上注解
开启服务发现
找到对应客户端Bean的位置
这边建议的是给每个服务都加上 EnableDiscoveryClient
EnableFeignClients(basePackages {com.yupi.yuojbackendserviceclient.service}) 全局要引入负载均衡器依赖
主要功能包括 客户端负载均衡根据策略如轮询、随机等将请求分发到不同的服务实例。 与 Spring Cloud 生态系统的集成可以与其他 Spring Cloud 组件如 Eureka、Consul 等一起使用以实现服务发现和负载均衡。 自定义负载均衡策略支持用户定义自己的负载均衡算法。
使用场景 在微服务架构中多个服务实例提供相同的功能时可以通过负载均衡器将请求合理分配到这些实例上以提高可用性和性能。 dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-loadbalancer/artifactIdversion3.1.5/version/dependency 注册中心有响应