SpringBoot(三)(springboot三级缓存)

  本篇文章为你整理了SpringBoot(三)(springboot三级缓存)的详细内容,包含有springboot三个核心注解 springboot三级缓存 springboot三层 springboot三层架构图 SpringBoot(三),希望能帮助你了解 SpringBoot(三)。

  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 仓管理的配置信息读取

  以上就是SpringBoot(三)(springboot三级缓存)的详细内容,想要了解更多 SpringBoot(三)的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: