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

门户网站免费建站怎么搭建一个网站

门户网站免费建站,怎么搭建一个网站,手机网站开发者模式,长沙哪些公司做网站这一次给大家分享微服务网关的相关知识#xff0c;这个也是微服务架构中#xff0c;相当重要的组件之一#xff0c;来#xff0c;下面听我徐徐道来1#xff0c;API网关概览1.1#xff0c;现有的交互模式存在什么问题#xff1f;目前#xff0c;是客户端会直接跟多个微服…这一次给大家分享微服务网关的相关知识这个也是微服务架构中相当重要的组件之一来下面听我徐徐道来1API网关概览1.1现有的交互模式存在什么问题目前是客户端会直接跟多个微服务直接交互这种模式存在什么问题1客户端会请求多个不同的服务需要维护不同的请求地址增加开发难度 2在某些场景下存在跨域请求的问题也会降低访问的效率3加大身份认证的难度每个微服务都需要独立认证因此我们需要一个微服务网关介于客户端与服务器之间的中间层所有的外部请求都会先经过微服务网关处理之后再交给相关的业务服务进行处理。客户端只需要与网关交互只知道一个网关地址即可这样简化了开发还有以下优点 1方便客户端调用2方便做统一身份认证 3减少了客户端与各个微服务之间的交互次数 1.2什么是微服务网关API网关是一个服务器是系统对外的唯一入口。API网关封装了系统内部架构为每个客户端提供一个定制的API。API网关方式的核心要点是所有的客户端和消费端都通过统一的网关接入微服务在网关层处理所有的非业务功能。API网关提供REST/HTTP的访问API1.3网关的实现方案有哪些Zuul Netflix开源功能丰富使用JAVA开发易于二次开发需要运行在web容器中如Tomcat。 问题缺乏管控无法动态配置依赖组件较多处理Http请求依赖的是Web容器性能不如 Nginx ​ Spring Cloud Gateway SpringCloud提供的网关服务 ​ Nginx 如果只是需要一个基础的具备转发功能的网关那么使用Ngnix是一个不错的选择。 ​ 比如路由过滤处理nginxlua location /api-index { proxy_pass http://127.0.0.1:8081/; } location /api-product { proxy_pass http://127.0.0.1:8082/; }2Zuul2.1什么是Zuulzuul是Netflix开源的微服务网关它可以和Eureka、Ribbon、Hystrix等组件配合使用Zuul组件的核心是一系列的过滤器这些过滤器可以完成以下功能动态路由动态将请求路由到不同后端集群 负载分配为每一种负载类型分配对应容量并弃用超出限定值的请求身份认证和安全: 识别每一个资源的验证要求并拒绝那些不符的请求。Spring Cloud对Zuul进行 了整合和增强让我们可以轻松上手。2.2Zuul网关的构成1客户端发送一个请求经过网关将这个请求转到合适的服务 这个过程叫做路由路由规则起到映射的作用 2核心是一系列过滤器 前置pre后置post路由Route错误Error2.3搭建Zuul网关服务工程1创建网关工程api-zuul-server2引入依赖dependency3启动类添加注解EnableZuulProxy2.4网关核心功能-路由1配置server:port: 8888 eureka:client:service-url:defaultZone: http://localhost:9090/eureka/ spring:application:name: api-zuul-server2检验效果【1】默认提供的路由规则可以帮助我们路由到后台的服务如下访问规则网关地址:端口/微服务服务名称/微服务请求地址访问案例http://localhost:8888/product-service/product/list默认zuul就已经提供了好了路由规则无需任何配置就可以实现路由路由本质就是映射【2】自定义路由规则#自定义路由规则默认的规则依然生效 zuul:routes:api-index:path: /index/**serviceId: index-serviceapi-product:path: /product/**serviceId: product-service注意原先的路由规则依然有效新配置的路由规则也生效【3】需求 不想让默认的服务对外暴露接口zuul:routes:api-index:path: /index/**serviceId: index-serviceapi-product:path: /product/**serviceId: product-service#统一入口为上面的配置其他入口忽略ignored-patterns: /*-service/**#处理http请求头为空的问题sensitive-headers:#默认zuul会屏蔽cookiecookie不会传到下游服务这里设置为空则取消默认的黑名单表示会传递到下游服务比如product-service2.5网关核心功能-过滤1ZuulFilter简介Zuul中的过滤器跟我们之前使用的 javax.servlet.Filter 不一样javax.servlet.Filter是通过配置 urlPatterns 来拦截对应的请求。而 Zuul 中的过滤器是分为不同的类型每种类型都有对应的使用场景。 1PRE这种过滤器在请求被路由之前调用。我们可利用这种过滤器实现身份验证、记录访问日志等等。 2ROUTING这种过滤器将请求路由到微服务。这种过滤器用于构建发送给微服务的请求并使用 Apache HttpClient或Netfilx Ribbon请求微服务。 注意此处的过滤器类型应该写为route3 POST这种过滤器在路由到微服务以后执行可以对响应的信息做处理。 4ERROR在其他阶段发生错误时执行该过滤器过滤器的应用场景请求鉴权一般放在pre类型如果发现没有访问权限直接就拦截了 异常处理一般会在error类型和post类型过滤器中结合来处理。 服务调用时长统计pre和post结合使用。2ZuulFilter接口说明/*** author huangguizhao*/ public class MyZuulFilter extends ZuulFilter{Overridepublic String filterType() {return null;} ​Overridepublic int filterOrder() {return 0;} ​Overridepublic boolean shouldFilter() {return false;} ​Overridepublic Object run() throws ZuulException {//具体的过滤处理逻辑return null;} }方法说明filterType返回一个字符串代表过滤器的类型在zuul中定义了四种不同生命周期的过滤器类型pre路由之前routing路由之时post 路由之后error发生错误调用 filterOrder通过返回的int值来定义过滤器的执行顺序数字越小优先级越高。 shouldFilter返回一个 Boolean 值判断该过滤器是否需要执行。返回true执行返回false 不执行。 run过滤器的具体逻辑比如判断当前用户是否有合法权限没有则不放行我们假设以请求中的token为例http://localhost:8888/product/product/list?token6663自定义ZuulFilterComponent public class MyZuulFilter extends ZuulFilter{Overridepublic String filterType() {return pre;}Overridepublic int filterOrder() {return 0;}Overridepublic boolean shouldFilter() {return true;}Overridepublic Object run() throws ZuulException {//请求上下文RequestContext ctx RequestContext.getCurrentContext();HttpServletRequest request ctx.getRequest();System.out.println(---拦截请求 request.getRequestURI());String token request.getParameter(token);if(token null){//此处让请求不再往下分发ctx.setSendZuulResponse(false);try {//给客户端响应信息ctx.getResponse().getWriter().print(Token is null!);} catch (IOException e) {e.printStackTrace();}}return null;} }4RequestContext说明RequestContext用于在过滤器之间传递消息它的数据保存在每个请求的ThreadLocal中它用于存储请求路由到哪里、错误、HttpServletRequest、HttpServletResponse都存储在 RequestContext中。所有的zuulFilter都可以共享到此块数据。2.6搭建高可用的zuul集群架构配置多个实例保证下面的配置是一致的即可spring:application:name: api-zuul-serverSpringCloud让我们非常方便对组件进行水平扩展2.7zuul网关存在的问题【问题一】Zuul1x版本本质上就是一个同步Servlet采用多线程阻塞模型进行请求转发。简单讲每来 一个请求Servlet容器要为该请求分配一个线程专门负责处理这个请求直到响应返回客户端这个线程才会被释放返回容器线程池。如果后台服务调用比较耗时那么这个线程就会被阻塞阻塞期间线程资源被占用不能干其它事情。我们知道Servlet容器线程池的大小是有 限制的当前端请求量大而后台慢服务比较多时很容易耗尽容器线程池内的线程造成容器无法接受新的请求。 【问题二】且不支持websocket这种长连接的方式。【解决方案】2018 年 5 月Zuul 2.x基于 Netty也是非阻塞的支持长连接发布但 Spring Cloud 暂时还没有整合计划。所以我们可以看到整合的zuul版本还是1X版本。下期我们分享SpringCloudGateway另一款微服务网关的实现如果对您有帮助就点个赞吧
http://www.pierceye.com/news/832527/

相关文章:

  • 企业网站建设网站优化推广站群网站建设推广
  • 深圳市多语言网站建设公司营销网站建设公司哪家好
  • 网站推广是怎么做的仿腾讯网站源码
  • 北京市建设工程信息网站网站建设需要域名吗?
  • 做金融的网站有哪些阳江房地产信息网官方网站
  • h5能做网站开发吗黑链 对网站的影响
  • 专门做设计文案的网站wordpress 建站服务
  • 网站快速排名公司wordpress 插件 原理
  • 网站制作需要学什么公司网站管理属于什么职位
  • 南通专业企业门户网站设计学校怎么创建网站
  • 网站策划与建设阶段的推广方法中国建设教育协会安全员证
  • 建设银行网站用户名更改分销微信小程序开发
  • 荣成做网站的公司百度地图 wordpress
  • 扁平设计网站湖南健康二维码app下载安装
  • 大连成久建设工程有限公司网站针对爬虫爬取做的优化
  • 建设官方网站企业网银登录网站版面设计
  • 网站建设学什么软件怎样创建自己的公众号
  • 网站脑图怎么做云伙伴小程序开发公司
  • 网站设置兼容模式怎么弄wordpress文件架构
  • 网站模块顺序调整网易对象存储wordpress
  • 深圳网络建设网站郑州网站优化服务
  • 辽阳专业建设网站公司网站html动态效果代码
  • 微信上可以做网站吗网页设计作业讲解
  • 长春好的做网站公司潍坊 网站
  • 做网站自己装服务器谷歌排名规则
  • 58.搜房等网站怎么做效果才好商贸公司企业简介模板
  • 中国最早做网站是谁卖网站怎样做
  • 张店专业网站优化哪家好书画工作室网站模板网站建设
  • 兰州网站制作怎么样青海哪家做网站的公司最大
  • 云龙湖旅游景区网站建设招标网站升级改版需要几天