欢迎访问 生活随笔!

尊龙游戏旗舰厅官网

当前位置: 尊龙游戏旗舰厅官网 > 前端技术 > javascript >内容正文

javascript

springcloud教程-尊龙游戏旗舰厅官网

发布时间:2025/1/21 javascript 17 豆豆
尊龙游戏旗舰厅官网 收集整理的这篇文章主要介绍了 springcloud教程- 路由网关zuul (springcloud版本greenwich.sr4) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

文章目录

    • zuul简介
    • 创建zuul-gateway工程
    • 服务过滤

代码地址:github-spring-cloud地址

zuul简介

zuul是netflix开源的微服务网关,它可以和eureka、ribbon、hystrix等组件配合使用。zuul的核心是一些列的过滤器,这些过滤器可以完成以下功能。

  • 身份认证与安全:识别每个资源的验证要求,并拒绝那些与要求不符合的请求。
  • 审查与监控:在边缘位置追踪有意义的数据和统计结果,从而带来精确的生产视图。
  • 动态路由:动态的将请求路由到不同的后端集群。
  • 压力测试:逐渐增加指向集群的流量,以了解性能。
  • 负载分配:为每一种负载类型分配对应容量,并弃用超出限定值的请求。
  • 静态响应处理:在边缘位置直接建立部分响应,从而避免其转发到内部集群。
  • 多区域弹性:跨越aws region进行请求路由,旨在实现elb(elastic load balancing)使用的多样化,以及让系统的便越更贴近系统的使用者。

springcloud对zuul进行了整合和增强,zuul使用的默认http客户端是apache http client,也可以使用使用其他的。
使用zuul之后的架构如图所示(图片转载方志朋博客):

创建zuul-gateway工程

pom文件如下:

<?xml version="1.0" encoding="utf-8"?> <project xmlns="http://maven.apache.org/pom/4.0.0"xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactid>spring-cloud-learn</artifactid><groupid>com.sl.learn.cloud</groupid><version>1.0-snapshot</version></parent><modelversion>4.0.0</modelversion><groupid>com.sl.learn.cloud</groupid><artifactid>zuul-gateway</artifactid><version>1.0-snapshot</version><dependencies><dependency><groupid>org.springframework.cloud</groupid><artifactid>spring-cloud-starter-netflix-eureka-client</artifactid></dependency><dependency><groupid>org.springframework.boot</groupid><artifactid>spring-boot-starter-web</artifactid></dependency><dependency><groupid>org.springframework.boot</groupid><artifactid>spring-boot-starter-actuator</artifactid></dependency><!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-netflix-hystrix --><dependency><groupid>org.springframework.cloud</groupid><artifactid>spring-cloud-starter-netflix-zuul</artifactid></dependency></dependencies></project>

配置文件application.yml

server:port: 8089spring:application:name: zuul-gatewayeureka:client:serviceurl:defaultzone: http://localhost:8080/eureka/management:endpoints:web:exposure:include: '*'endpoint:health:show-details: alwaysshutdown:enabled: true zuul:routes:## 名字任意写api-feign:path: /api-feign/**## 注册到eureka idserviceid: eureka-feignapi-ribbon:path: /api-ribbon/**## 注册到eureka idserviceid: server-ribbon

启动类zuulgatewayapplication

@springbootapplication @enablezuulproxy @enablediscoveryclient public class zuulgatewayapplication {public static void main(string[] args) {springapplication.run(zuulgatewayapplication.class,args);} }

此工程依赖前面工程分别依次启动,
访问路径为a:http://localhost:8089/api-feign/hi?name=123

访问路径为b:http://localhost:8089//api-ribbon/hi?name=123

这说明zuul起到了路由的作用

服务过滤

自定义myzuulfilter

@component public class myzuulfilter extends zuulfilter {private static logger log = loggerfactory.getlogger(myzuulfilter.class);@overridepublic string filtertype() {return "pre";}@overridepublic int filterorder() {return 0;}@overridepublic boolean shouldfilter() {return false;}@overridepublic object run() throws zuulexception {requestcontext ctx = requestcontext.getcurrentcontext();httpservletrequest request = ctx.getrequest();log.info(string.format("%s >>> %s", request.getmethod(), request.getrequesturl().tostring()));object accesstoken = request.getparameter("token");if(accesstoken == null) {log.warn("token is empty");ctx.setsendzuulresponse(false);ctx.setresponsestatuscode(401);try {ctx.getresponse().getwriter().write("token is empty");}catch (exception e){}return null;}log.info("ok");return null;} }
  • filtertype:返回一个字符串代表过滤器的类型,在zuul中定义了四种不同生命周期的过滤器类型,具体如下:
    pre:路由之前
    routing:路由之时
    post: 路由之后
    error:发送错误调用
  • filterorder:过滤的顺序
  • shouldfilter:这里可以写逻辑判断,是否要过滤,本文true,永远过滤。
  • run:过滤器的具体逻辑。可用很复杂,包括查sql,nosql去判断该请求到底有没有权限访问。
    访问地址不加token

    访问地址加上token

总结

以上是尊龙游戏旗舰厅官网为你收集整理的springcloud教程- 路由网关zuul (springcloud版本greenwich.sr4)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得尊龙游戏旗舰厅官网网站内容还不错,欢迎将尊龙游戏旗舰厅官网推荐给好友。

网站地图