当前位置: 首页 > news >正文

网站建设 小程序开发大冶市建设局网站

网站建设 小程序开发,大冶市建设局网站,如何用html做网站头像,网站建设z亿玛酷1负责Zuul背景Zuul的作用Zuul API网关Zuul请求过滤Zuul路由规则Zuul异常处理背景 通过之前的学习#xff0c;我们知道注册中心Eureka#xff0c;可以讲服务注册到该注册中心#xff0c;Ribbon和Feign可以实现服务负载均衡地调用#xff0c;Hystrix可以实现服务熔断#xff0c;… Zuul背景Zuul的作用Zuul API网关Zuul请求过滤Zuul路由规则Zuul异常处理背景 通过之前的学习我们知道注册中心Eureka可以讲服务注册到该注册中心Ribbon和Feign可以实现服务负载均衡地调用Hystrix可以实现服务熔断但我们还缺点什么 微服务架构图 外部调用方浏览器、其他客户端负载均衡nginxOpenService开放服务服务消费者。集群部署ServiceA/B内部服务服务提供者。两个服务进行集群部署每个服务有三个实例。虚线框内服务调用可以使用Ribbon进行负载均衡访问通过Eureka注册中心进行服务注册与订阅 现在还有一些问题需要解决 如果我们的微服务中有很多独立的服务都要对外提供服务那么我们要如何去管理这些接口特别是当项目非常庞大的情况下要如何让管理在微服务中一个独立的系统被拆分成很多个独立的服务为了确保安全权限管理也是一个不可回避的问题如果在每个服务商都添加上相同的权限验证代码来确保系统不被非法访问那么工作量也太大了且维护也不方便。 为了解决上述问题微服务架构中提出了API网关的概念它就像一个安检站一样所有的外部请求都需要经过它的调度与过滤然后API网关来实现全球路由、负载均衡、权限验证等功能。 Spring Cloud这个一站式的微服务开发框架基于Netflix Zuul实现了Spring Cloud Zuul采用了Spring Cloud Zuul即可实现一套基于API网关服务。 Zuul的作用 按照不同策略将请求转发到不同的服务上去 聚合API接口统一对外暴露提高系统的安全性 实现请求统一的过滤以及服务的熔断降级 项目结构 Zuul API网关 创建普通SpringBoot工程添加依赖 spring-cloud-starter-netflix-eureka-client和 spring-cloud-starter-netflix-zuul主入口激活 EnableEurekaClient 和 EnableZuulProxyapplication.properties文件中配置路由规则 server.port9001#指定该服务的名字该名称将在服务被调用时使用 spring.application.namezuul-eureka-client-gateway#Eureka配置服务注册到哪里 eureka.client.service-url.defaultZonehttp://eureka7001:7001/eureka#Zuul配置api_zuul 可任意写 #path表示请求的拦截规则以/api-zuul开头的任意目录以及子目录中所有请求都会被拦截 zuul.routes.api-zuul.path/api-8001/** #service-id指定服务名字用于对这个服务下的某个特定请求进行拦截 zuul.routes.api-zuul.serviceIdzuul-eureka-client-provider通过 http://localhost:8001/api-zuul/test 可以访问端口号是8001的服务提供者zuul-eureka-client-provider的test方法相当于是请求http://localhost:8001/test 。 Zuul请求过滤 定义一个过滤器并继承自ZuulFilter并将该Filter作为一个Bean /*** 自定义网关过滤器类并继承过滤器父类*/ Component public class AuthFilter extends ZuulFilter {//返回值决定当前过滤器的类型执行时间Overridepublic String filterType() {//pre前置过滤器在执行转发访问服务提供者之前执行通常用作身份认证return pre;}//过滤器序号根据返回值大小决定执行的先后顺序数字越小执行越先级越高Overridepublic int filterOrder() {return 0;}//过滤器是否启动true启动false不启动Overridepublic boolean shouldFilter() {return true;}//过滤器执行方法返回值目前版本没有特殊作用因此可写nullOverridepublic Object run() throws ZuulException {//获取当前请求上下文对象RequestContext context RequestContext.getCurrentContext();//获取用户请求对象HttpServletRequest request context.getRequest();//获取请求中的请求参数token(身份令牌用于请求身份验证)String token request.getParameter(token);//验证身份有效性(实际应用中从数据库取数据进行验证)if(tokennull || !123.equals(token)){//设定false表示请求不继续执行不转发给服务器context.setSendZuulResponse(false);//设置响应码401表示权限不足也可设置500或其他编码context.setResponseStatusCode(401);//设置响应类型及编码格式context.addZuulResponseHeader(context-type,text/html;charsetutf-8);//设置响应内容context.setResponseBody(非法请求);}else{System.out.println(请求合法继续执行请求准备进入服务或下一个过滤器);}return null;} } 合法请求http://localhost:8001/api-zuul/test?token123 非法请求http://localhost:8001/api-zuul/test 基于Zuul的这些过滤器可以实现各种丰富的功能而这些过滤器类型则对应于请求的典型生命周期。 PRE 这种过滤器在请求被路由之前调用。我们可利用这种过滤器实现身份验证、在集群中选择请求的微服务、记录调试信息等。 ROUTING这种过滤器将请求路由到微服务。这种过滤器用于构建发送给微服务的请求并使用Apache HttpClient或Netfilx Ribbon请求微服务。 POST这种过滤器在路由到微服务以后执行。这种过滤器可用来为响应添加标准的HTTP Header、收集统计信息和指标、将响应从微服务发送给客户端等。 ERROR在其他阶段发生错误时执行该过滤器。 除了默认的过滤器类型Zuul还允许我们创建自定义的过滤器类型。例如我们可以定制一种STATIC类型的过滤器直接在Zuul中生成响应而不将请求转发到后端的微服务。 Zuul中默认实现的Filter Zuul路由规则 在前面的例子中 #Zuul配置api_zuul 可任意写 #path表示请求的拦截规则以/api-zuul开头的任意目录以及子目录中所有请求都会被拦截 zuul.routes.api-zuul.path/api-zuul/** #service-id指定服务名字用于对这个服务下的某个特定请求进行拦截 zuul.routes.api-zuul.serviceIdzuul-eureka-client-provider#-----------------------------可以化简为---------------------------zuul.routes.zuul-eureka-client-provider/api-8001/**其他配置 # 忽略某些请求:访问出现404资源不存在 如果需要同时忽略多个请求可以使用逗号分隔 也可以使用通配符*和** zuul.ignored-patterns/api-8001/test3 # 配置统一网关路由前缀http://localhost:8001/myapi/api-8001/test3?token123 zuul.prefix/myapi通配符 # 可使用的通配符有 * ** ? # ? 单个字符 # * 任意多个字符不包含多级路径 # ** 任意多个字符包含多级路径一般情况下API网关只是作为各个微服务的统一入口但有时候我们可能也需要在API网关服务上做一些特殊的业务逻辑处理那么我们也可以让请求到达API网关后仔转发给自己本身由API网关自己来处理那么我们可以进行如下操作 RestController public class GateWayController {RequestMapping(/api/local)public Object test(){return 网关工程自己的控制器方法;} }#配置自我转发将某些请求转发到当前的网关请求 #http://localhost:8001/myapi/gateway zuul.routes.gateway.path/gateway/** zuul.routes.gateway.urlforward:/api/localZuul异常处理 Spring Cloud Zuul对异常的处理非常的方便从Zuul请求的生命周期图中可以看到异常过滤器是对前置过滤、路由过滤、后置过滤过程中出现的异常图中虚线框内进行处理 方式一、禁用zuul默认的异常处理SendErrorFilter过滤器然后自定义我们自己的ErrorFilter过滤器 # 禁用默认异常拦截器启用自定义异常拦截器 zuul.SendErrorFilter.error.disabletrue//自定义异常过滤器 Component public class MyErrorFilter extends ZuulFilter {Overridepublic String filterType() {//标明异常过滤器其他过滤器出现异常自动执行当前过滤器return error;}Overridepublic int filterOrder() {return 0;}Overridepublic boolean shouldFilter() {return true;}Overridepublic Object run() throws ZuulException {RequestContext context RequestContext.getCurrentContext();ZuulException exception (ZuulException) context.getThrowable();HttpServletResponse response context.getResponse();response.setStatus(exception.nStatusCode);response.setContentType(test/html;charsetutf-8);PrintWriter writer null;try {writer response.getWriter();writer.println(出现异常了异常码exception.nStatusCode 异常信息exception.getMessage());}catch(IOException e){e.printStackTrace();}finally {if(writer ! null){writer.close();}}return null;} }方式二、自定义全局异常页面 /*** 自定义全局异常页面* 注意自定义全局异常页面和自定义异常过滤器有冲突二选一即可*/ RestController public class ErrorHandleController implements ErrorController {Overridepublic String getErrorPath() {return /error;}RequestMapping(/error)public Object error(){RequestContext ctx RequestContext.getCurrentContext();ZuulException exception (ZuulException) ctx.getThrowable();return exception.nStatusCode---exception.getMessage();}}
http://www.pierceye.com/news/861227/

相关文章:

  • 电子商务网页设计与网站建设论文在线设计培训
  • 做旅游网站的项目背景软件开发手册
  • 宁波品牌网站设计app外包接活
  • 清远市住房和城乡建设局门户网站图片软件制作工具
  • 宝马itms做课网站网站开发群
  • 网站开发工作协议书范本谷歌优化软件
  • 什么网站都能进的浏览器企业融资方案
  • 网站建设公司领导致辞自己可以开发一个软件吗
  • 高端网站设计平台专门做二手书网站或app
  • 系网站建设工作总结大庆建设网站表格下载
  • 免费建站网站seo长春专业网站制作
  • 做网站公司哪家正规公司网站如何更改内容
  • 广州黄埔区建设局网站局wordpress怎么看访问量
  • 佛山找人做网站国家建设免费论文网站
  • 网站内容建设ppt网站建设header
  • 图书馆网站建设费用青海省住房建设厅网站
  • 重庆网站供奉战犯wordpress 关键字链接
  • 给个2021站你们懂得不花钱的深圳手机网站建设
  • 织梦图片自适应网站源码php企业网站源码推荐
  • 网站建网站建设网页微信头像logo在线制作
  • 微网站模板怎么做买了域名如何做网站
  • 新华美玉官方网站在线做维护一个网站要多少钱
  • 网站内容由什么组成部分网页网站设计价格
  • wordpress方框里面打勾两个域名同一个网站做优化
  • 个人怎么做公司网站闲置电脑做网站服务器
  • 有没有什么 网站能够做试卷wordpress写 a href
  • 西安 北郊网站建设网站上传图片加水印
  • 沈阳网站制作哪家好包头爱出行app最新版本
  • 怎么用IP做网站地址网站如何投放广告
  • 试述电子商务网站的建设流程太原建站的模板