首页IT科技ribbon配置负载均衡策略(SpringBoot(三) – Ribbon客户端负载均衡,Zuul网关,Config配置中心)

ribbon配置负载均衡策略(SpringBoot(三) – Ribbon客户端负载均衡,Zuul网关,Config配置中心)

时间2025-05-02 12:48:36分类IT科技浏览5154
导读:1、Ribbon客户端负载均衡 1.1 依赖...

1            、Ribbon客户端负载均衡

1.1 依赖

1.2 配置信息

# feign默认加载了ribbon负载均衡            ,默认负载均衡机制是:轮询 # 负载均衡机制是添加在消费端(客户端)的                  ,如果改为随机      ,指定服务名         ,指定规则 edocmall-server: ribbon: NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule

1.3 测试

1.3.0 测试准备 1.3.0.1 复制一个服务端 1.3.0.2 eureka查看服务 1.3.0.3 查询数据 1.3.1 默认是轮询 1.3.1.1 第一个服务端 1.3.1.2 第二个服务端 1.3.2 指定为随机 后 1.3.2.1 第一个服务端 1.3.2.2 第二个服务端 1.3.3 可以自定义 负载均衡规则(省略)

2                  、Zuul网关

2.1 模块说明

2.2 主要依赖

<!-- eureka 客户端依赖 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <!-- zuul 依赖 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zuul</artifactId> </dependency>

2.3 配置信息

# 端口 server: port: 8100 # 服务名 spring: application: name: edocmall-zuul # eureka 注册中心的配置 eureka: client: service-url: defaultZone: http://127.0.0.1:8096/eureka # 关闭自我保护机制                  ,保证不可用的服务及时剔除 server: enable-self-preservation: false # zuul 网关配置 zuul: ignored-services: * # 默认情况下         ,zuul网关服务会自动将eureka上的所有注册服务名(serviceId)设置为默认路由地址(path)      ,如果只能按照path配置路径进行路由                  ,必须手动屏蔽默认路由; *:表示所有的服务名不能作为路由地址            ,也可以指定具体服务名不能作为路由地址 routes: edocmall-web-kgc: #默认路由的服务名   ,可以写真实的服务名也可以自定义 #方式一 # path: /edocmall-web/** # 指定自定义网关的映射路劲前缀                  ,代理的请求               ,必须是指定的访问路径,才可以进入网关               ,否者无法进行网关映射处理 # url: http://127.0.0.1:8098 # 指定请求服务的真实地址(一定要确保可以进行访问即地址有效)                  ,注意   ,无法进行集群处理            ,不利于维护和扩展 #方式二 path: /edocmall-zuul/** #指定自定义网关路径                  ,配合service使用      ,实现通过指定服务名进行接口调用 serviceId: edocmall-web # 指定的是eureka注册中心上         ,真实服务名                  ,好处:(不需要维护请求地址)只需要指定服务名         ,自动根据服务名路由到对应的所有集群服务上 edocmall-server-kgc: path: /edocmall-zuul2/** serviceId: edocmall-server

2.4 主启动类上的注解

@EnableEurekaClient @EnableZuulProxy //开启网关代理功能

2.5 测试

2.5.1 不屏蔽默认路由 serviceId: edocmall-web 和 path: /edocmall-zuul/** 都可以访问 2.5.2 屏蔽默认路由 ignored-services: * 只有 path: /edocmall-zuul/** 都可以访问

2.6 自定义网关过滤器

2.6.1 自定义网关过滤器 //Description: 自定义网关过滤器 @Component public class AuthZuulFilter extends ZuulFilter { @Override public String filterType() { //指定网关过滤器的类型      ,允许返回值只能是:pre,post,route,error //pre : 在请求被路由转发前调用                  ,通常用于权限校验            ,日志处理等 //post : 在请求被路由转发后调用   ,一般都是收集服务调用信息 //route : 在请求被路由转发是调用(服务被调用前)                  ,通常用户在特定服务调用前增加参数处理 //error: 在请求被路由转发过程中               ,出现异常是调用 return "pre"; } @Override public int filterOrder() { //指定网关过滤器的优先级,允许值是int类型整数               ,值越小优先级越高 return 0; } @Override public boolean shouldFilter() { //指定网关过滤器是否需要执行自定义的业务逻辑处理                  ,如果是false不执行   ,true执行            ,执行自定义业务逻辑处理                  ,就是下面的run方法内的业务逻辑 return true; } @Override public Object run() { //自定义网关过滤器需要执行的业务逻辑处理 //模拟场景:当请求到达网关      ,网关接收请求进行请求映射处理         ,把必须要先校验权限                  , // 如果权限校验失败         ,不进行路由转发      ,只有权限校验成功                  ,才可以路由转发到真实服务上 //引入知识点:用户在登录状态保持            ,一般是通过token令牌实现的   ,当用户登录成功                  ,会返回一个token令牌给客户端保存               , // 如果再次请求,自动携带改=该令牌               ,如果令牌有效                  ,权限通过   ,否者登录校验失败            ,不允许访问 //为了方便演示                  ,token变为请求参数      ,方便获取(正常流程是后端登录成功后返回给客户端         ,且必须要保存在请求头                  ,方便携带)         ,如果请求地址中没有token参数      ,就不给访问                  ,如果有            ,可以访问 RequestContext requestContext = RequestContext.getCurrentContext(); HttpServletRequest request = requestContext.getRequest(); //根据请求对象获取请求参数 String token = request.getParameter("token"); // TOO 必须要校验token的有效性 //权限校验   ,如果token令牌是有效的                  ,可以进行路由转发               ,否者需要重新登陆 if(StringUtils.isBlank(token)){ //token失败,权限校验失败               ,必须过滤调当前请求                  ,不能进行路由转发 requestContext.setSendZuulResponse(false); //修改返回提示信息 requestContext.setResponseStatusCode(HttpStatus.FORBIDDEN.value()); // requestContext.setResponseBody(HttpStatus.FORBIDDEN.getReasonPhrase()); requestContext.setResponseBody("token令牌校验失败   ,请求非法            ,被拦截"); //设置响应的内容格式                  ,防止中文乱码 HttpServletResponse response = requestContext.getResponse(); response.setContentType("text/html;charset=utf-8"); } //返回RequestContext 对象 return requestContext; } } 2.6.2 测试

3      、Config配置中心

3.1 模块介绍

3.2 conf-sever 配置服务端

3.2.1 依赖 <!-- eureka 客户端依赖 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <!-- config 配置中心服务端依赖 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency> 3.2.2 配置信息 application.yml # 端口 server: port: 8101 # 服务名 spring: application: name: edocmall-conf-server # 指定环境      ,适用于本地环境配置         ,即:将公共配置中心内部文件作为公共配置文件                  ,提供给客户端使用 # profiles: # active: native # git 仓配置信息 cloud: config: server: git: uri: https://gitee.com/wangsong_huayu/kh96-conf-server.git username: username password: password # eureka 注册中心的配置 eureka: client: service-url: defaultZone: http://127.0.0.1:8096/eureka 3.2.3 主启动类上的注解 @EnableEurekaClient //config服务端注册到eureka注册中心 @EnableConfigServer //开启 congfig 配置中心服务端 3.2.4 本地公共配置 config-native.properties # 自定义公共配置 kh96.conf.server=kh96-conf-server-native 3.2.5 git 仓 管理的配置信息 3.2.5.1 本地仓 2.3.5.2 远程仓

3.3 conf-client 配置客户端

3.3.1 依赖 <!-- eureka 客户端依赖 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <!-- config 配置中心 客户端依赖 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency> 3.3.2 配置信息application.yml # 端口 server: port: 8102 # 服务名 spring: application: name: edocmall-conf-client 3.3.3 配置信息 bootstrap.properties # 什么时候使用此配置文件 # 1         、当使用SpringCloud的config配置中心时         ,在客户端需要注册到eureka注册中心时      ,eureka配置信息必须增加在此文件中                  ,才会生效 # 2                  、当配置信息不能被其它的配置文件覆盖时            ,可以将内容配置到此文件中   ,优先级高于application(云可以遮住太阳) # config客户端                  ,配置eureka注册中心 eureka.client.service-url.defaultZone=http://127.0.0.1:8096/eureka # config客户端               ,开启主动发现eureka注册中心上 注册的config配置中心服务端,默认是关闭的               ,必须手动开 spring.cloud.config.discovery.enabled=true # config客户端                  ,指定eureka注册中心上注册的config配置中心服务端的服务名 spring.cloud.config.discovery.service-id=edocmall-conf-server # 读取本地 配置配置文件 # config客户端   ,指定从config配置中心服务端读取 本地 的公共配置文件名            ,注意:不需要加后缀                  ,只要文件名 #spring.cloud.config.name=config-native # 读取远程配置文件 # config客户端      ,指定从 config配置中服务端读取的文件名         ,对应远程创库文件名 符号 -                   ,前面的名称 spring.cloud.config.name=config # config客户端         ,指定从 config配置中服务端读取的文件名      ,对应远程创库文件名 符号 -                  ,后面的名称 spring.cloud.config.profile=dev # config客户端            ,指定从 config配置中服务端读取 对应git远程仓库中配置所在的分支名   ,默认是master主线分支                  ,也可以指定其他分支 spring.cloud.config.label=master 3.3.4 请求方法 //测试读取config配置中心服务端提供的公共配置信息 @RestController public class ConfigClientController { @Value("${kh96.conf.server:kh96-conf-client-native}") private String kh96ConfigServer; // 客户端               ,测试读取服务端的公共配置信息 @GetMapping("/testConfigServer") public String testGetPropertiesFromConfServer(){ return kh96ConfigServer; } } 3.3.5 主启动类上的注解 @EnableEurekaClient

3.4 测试

3.4.0 配置服务端与配置客户端 3.4.1 本地公共配置读取 3.4.2 git 仓管理的配置信息读取

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
windows10到期了怎么激活(Win11超过时间如何退回Win10?Win11超过时间退回Win10的方法) nodejs常用框架(【node进阶】浅析Koa框架—ejs模板|文件上传|操作mongoDB)