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

网站违规词处罚做网站的做视频网站 带宽多少才合适

网站违规词处罚做网站的,做视频网站 带宽多少才合适,贵州省网站建设选哪家,福州网站设计网址Spring Cloud Zuul 底层是基于Servlet实现的#xff0c;核心是通过一系列的ZuulFilter来完成请求的转发。 1、核心组件注册 1.1. EnableZuulProxy注解 启用Zuul作为微服务网关#xff0c;需要在Application应用类加上EnableZuulProxy注解#xff0c;而该注解核心是利用Im…Spring Cloud Zuul 底层是基于Servlet实现的核心是通过一系列的ZuulFilter来完成请求的转发。 1、核心组件注册 1.1. EnableZuulProxy注解 启用Zuul作为微服务网关需要在Application应用类加上EnableZuulProxy注解而该注解核心是利用Import注解往Spring容器导入了ZuulProxyConfiguration配置类 1.2. ZuulProxyConfiguration ZuulProxyConfiguration继承了ZuulConfiguration。 1.2.1. ZuulConfiguration ZuulConfuguration主要是利用Import往Spring容器注入了ServerPropertiesAutoConfiguration配置类下一小节介绍并且作为配置类往Spring容器注入了CompositeRouteLocator、SimpleRouteLocator、ZuulController、ZuulHandlerMapping、ZuulServlet等组件基于Spring DispatcherServlet实现请求转发入口。 还有ServletDetectionFilter、Servlet30WrapperFilter、SendResponseFilter、SendErrorFilter、SendForwardFilter等pre、post类型的过滤器是Zuul实现路由转发的核心过滤器。 还有ZuulRefreshListener监听器同于监听应用内部事件设置路由信息状态为dirty实现动态更新。 1.2.2. ZuulProxyConfiguration 当然了ZuulProxyConfiguration本身也注入了实现路由转发的核心过滤器包含route类型的过滤器RibbonRoutingFilter、SimpleHostRoutingFilter。 还有路由定位器DiscoveryClientRouteLocator先调用父类SimpleRouteLocator获取配置文件中的路由配置然后再从注册中心中补充路由信息。 还有一个非常重要的ListenerZuulDiscoveryRefreshListener它实现了ApplicationListener接口主要监听InstanceRegisteredEvent、ParentHearbeatEvent和HeartbeatEvent根据注册中心发送的事件来更新最新的路由信息设置路由信息状态为dirty。 2、路由配置注册 上面已经提到Zuul是基于Servlet实现的而根据请求URL找到对应Handler是利用HandlerMapping完成的而Zuul也根据此实现了ZuulHandlerMapping实现类。 2.1. ZuulHandlerMapping DispatcherServlet#initHandlerMappings 2.2. ZuulHandlerMapping#lookupHandler 在DispatcherServlet在首次请求分发时就会遍历所有HandlerMapping然后根据请求去获取对应的HandlerHandlerExecutionChain包含Handler和拦截器当遍历到ZuulHandlerMapping时会调用lookupHandler方法如果是首次调用会触发上面的registerHandlers方法进行路由配置注册。 2.3. ZuulHandlerMapping#registerHandlers ZuulHandlerMapping首次根据url查找Handler时会先找到所有的路由配置然后遍历注册HandlerZuulController这里查找所有路由配置就是上面提到的DiscoveryClientRouteLocator。 3、请求处理 DispatcherServlet分发请求的流程 图片拿自网络 3.1. ZuulController 在2.3.中ZuulHandlerMapping给路由配置注册Handler时对应的Handler是ZuulController。ZuulController继承了ServletWrappingController底层是实现Controller接口。 3.2. SimpleControllerHandlerAdapter 根据上面流程图找到HandlerMapping后会继续找到能执行对应Handler的HandlerAdapter而上面也提到ZuulController是实现于Controller接口所以最后定位到的是SimpleControllerHandlerAdapter。 SimpleControllerAdapter执行请求逻辑非常简单就是执行Handler的handleRequest方法即执行ZuulController的handleRequest方法。 3.3. ZuulController#handleRequest ZuulController的handleRequest很简单调用的是父类的handleRequestInternal方法。 但是我们需要注意ZuulController的构造函数里面给servletClass、servletName和supportedMethods赋值了其中servletClass尤为关键因为后续处理就是调用此类实例的方法。 3.4. ServletWrappingController ServletWrappingController重写了InitializingBean#afterPropertiesSet方法在设置实例属性后根据servletClass实例化了servletInstance对象这里就是ZuulServlet的实例。 ServletWrappingController的handleRequestInternal方法也很简单就是调用servletInstance的service方法这里就是ZuulServlet#service方法。 3.5. ZuulServlet#service ZuulServlet的service方法逻辑很简单都是利用ZuulRunner来完成的在ServletWrappingController实例化servletInstance时同时调用了servletInstance的init方法此时ZuulServlet同时会创建一个ZuulRunner实例。 service方法逻辑 执行ZuulRunner#init方法创建请求上下文RequestContext并将利用HttpServletRequestWrapper和HttpServletResponseWrapper分别将HttpServletRequest和HttpServletResponse包装起来。调用ZuulRunner#preRoute方法执行前置过滤器调用ZuulRunner#route方法执行路由过滤器调用ZuulRunner#postRoute方法执行后置过滤器如果步骤2到步骤4出现错误则执行ZuulRunner的error方法最后清理RequestContext内容ThreadLocal 3.6. ZuulRunner ZuulRunner实现也是非常简单底层是利用FilterProcessor来实现的。 3.7. FilterProcessor FilterProcessor执行过滤器的逻辑也非常简单就是根据过滤器类型找到所有的过滤器然后遍历调用processZuulFilter方法执行里面只要是执行ZuulFilter的runFilter方法并且对错误信息和成功信息做统计。 3.8. FilterLoader和FilterRegistry FilterProcessor中是利用FilterLoader来完成过滤器的加载的而FilterLoader最终是利用FilterRegistry来完成过滤器的加载。 FilterLoader和FilterRegistry都是单例在ZuulFilterConfiguration中创建并注入到ZuulFilterInitializer中最后并将ZuulFilterInitializer注入到Spring容器中。 ZuulFilterInitializer实现了ServletContextListener接口在Spring容器完成初始化时会将ZuulFilter集合注入到FilterRregistry中。 4. 核心过滤器 这里只要分析核心过滤器不包含所有的过滤器。 4.1. 前置过滤器 4.1.1. ServletDetectionFilter 执行顺序为-3主要是区分请求是通过Spring的DispatcherServlet处理运行的还是ZuulServlet来处理运行的。 4.1.2. Servlet30WrapperFilter 执行顺序为-2主要是将HttpServletRequest包装成Servlet30RequestWrapper。 4.1.3. FormBodyWrapperFilter 执行顺序为-1条件要么是Context-Type为application/x-www-form-urlencoded的请求要么是Context-Type为multipart/form-data且是由String的DispatcherServlet处理的请求主要是将HttpServletRequest包装成FormBodyRequestWrapper。 4.1.4. DebugFilter 执行顺序为1条件要么配置里指定zuul.debug.request为true要么请求参数debug为true。主要用来将当前请求上下文中的debugRouting和debugRequest参数设置为true主要是做到灵活开关debug模式开启debug模式时会打印一些日志方便分析问题。 4.1.5. PreDecorationFilter 执行顺序为5条件要求请求上下文中不存在forward.do和serviceId参数主要是做一个预处理将相关信息存到上下文中包含路由、后置、错误过滤器的过滤条件判断信息。 4.2. 路由过滤器 4.2.1. RibbonRoutingFilter 执行顺序为10条件是请求上下文中routeHost为null并且serviceId不为null主要是构建Ribbon命令上下文并且发起请求转发。 在发起请求转发的时候需要构建HTTP客户端这里会根据配置和依赖来选用指定的HTTP客户端。 4.2.2. SimpleHostRoutingFilter 执行顺序为100条件是请求上下文中routeHost不为null主要是直接根据物理地址发送请求这里是直接调用原生的HttpClient包的客户端。 4.2.3. SendForwardFilter 执行顺序为500条件是请求上下文中forward.do不为null并且sendForwardFilter.ran为false主要是做本地转发。 4.3. 后置过滤器 4.3.1. SendResponseFilter 执行顺序为1000条件是请求上下文中异常为null并且响应头或响应体不为null主要是将响应写回给客户端。 4.4. 错误过滤器 4.4.1 SendErrorFilter 执行顺序为0条件是请求上下文中异常不为null并且sendErrorFilter.ran为false主要是将异常写回给客户端。
http://www.zqtcl.cn/news/98485/

相关文章:

  • 怎样做自己介绍网站昆明网红打卡地有哪些地方
  • 一个外国人做汉字网站广州近期流行的传染病
  • 做pc端网站新闻pdf 网站建设
  • 盱眙网站建设棋牌软件定制开发
  • struts2 做的网站南京做网站优化
  • 网站设计的安全尺寸wordpress qqoq主题
  • 网站建设500错误代码网站文章超链接怎么做
  • 网站建设尺寸凡科建站弊端
  • 企业网站建设模板多少钱在哪里建网站免费
  • 盐城网站建设咨询优秀vi设计
  • 网站里面内外链接如何做北京pk10网站建设
  • 网站布局策划的流程百度知道入口
  • 个人网站设计毕业设计论文上海百度seo优化
  • 展台设计网站都有哪些拓者设计吧手机版
  • 河南省级建设主管部门网站免费推广平台哪个好
  • wordpress禁止自动升级seo实战密码怎么样
  • 福永网站建设公司如何利用个人nas做网站
  • 北京网站seo外包wordpress心情
  • 租用服务器一般是谁帮助维护网站安全网站如何看是哪家公司做的
  • 戴尔网站建设的特点开创者wordpress素材
  • 网站假设公司排名不用囤货
  • 有关网站建设合同织梦珠宝网站模板
  • 月牙河做网站公司电商网站开发成本
  • iis7建立网站注册公司地址虚拟地址怎么申请
  • 响应式网站开发的想要去国外网站买东西怎么做
  • 网站建设开发有什么好处百度网盘0基础网站开发教程
  • 桂林整站优化青岛网站制作哪里有
  • 织梦cms手机网站源码天天想你视频免费观看西瓜
  • 怎么做网站弄网盟邯郸超速云_网站建设
  • 桂阳做网站的软件定制开发外包wordpress电子商务插件