ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Zuul网关搭建实战教程

2021-05-09 13:01:16  阅读:109  来源: 互联网

标签:网关 服务 请求 教程 接口 Nginx Zuul


接口API技术

  • 接口是在面向服务架构(SOA)和微服务的背景下RPC远程调用产生的,目的是为了解耦
  • 接口分类:
    • 开放接口
    • 在外网进行访问
    • 通过appid+appsecret, 生成accessToken进行通讯
    • 目的是为了授权接口权限,OAuth2.0协议
    • 内部接口
    • 一般只能在局域网中进行访问
    • 服务与服务之间的调用关系都在同一个微服务系统中
    • 目的是为了保证安全

      如何设计一套API接口

  • 接口权限: 开放接口,内部接口
  • 接口幂等性
  • 接口安全性
  • 为了防止篡改数据,要验证签名
  • 使用网关拦截接口,实现黑名单和白名单
  • 接口使用RESTful风格:http协议+json格式,目的是为了跨平台
  • 考虑到高并发的情况,对接口服务实现保护功能:服务降级,服务熔断,服务保护
  • 最后使用统一的API管理平台:api swagger

    网关(API Gateway)

  • 客户端请求先统一请求到网关服务器上,再由网关服务器进行转发到实际的服务地址
  • 网关作用:
    • 拦截请求
    • 权限控制
    • 负载均衡
    • 日志管理
    • 监控接口
  • 网关与过滤器的区别:
    • 网关是拦截整个微服务的请求
    • 过滤器是对单个Tomcat服务器进行拦截请求
  • 网关分为内网网关外网网关
  • Zuul和Nginx的异同:
    • 相同点:
    • Zuul和Nginx都可以实现负载均衡,反向代理,过滤请求,实现网关效果
    • 不同点:
    • 开发语言不同: Zuul采用Java语言写的,Nginx采用C语言写的
    • 负载均衡实现不同: Zuul中采用Ribbon+Eureka实现客户端负载均衡,Nginx实现的服务器端负载均衡
    • Nginx比Zuul功能更强大,因为Nginx整合了脚本语言(Nginx+Lua),更适合服务器端负载均衡
    • Zuul更适合Java语言微服务中的网关的实现
    • 可以使用Nginx+Zuul作为网关实现:Nginx用于实现反向代理(隐藏服务真实IP地址),Zuul对微服务的实现网关拦截请求

      搭建Zuul网关

      1.引入Zuul依赖spring-cloud-starter-netflix-zuul
      2.配置文件:
      eureka.client.serviceUrl.defaultZoo=http://localhost:8100/eureka    #服务注册url地址
      server.port=80      # 网关端口号
      spring.application.name=service-zuul        # 网关名称
      zuul.routes.api-a.path=/api-ticket/**       #当客户端发送请求127.0.0.1:80/api-ticket/开头的,都会被发送到app-ticket服务中
      zuul.routes.api-a.serviceId=app-ticket      # ticket服务别名,zuul整合ribbon默认自动实现负载均衡效果
      zuul.routes.app-b.path=/api-user/**         # 当客户端发送请求127.0.0.1/api-user/开头的,都会被发送到app-user服务中  
      zuul.routes.app-b.serviceId=app-user        # app-b定义转发规则
      3.在类上标注@EnableZuulProxy注解开启网关代理

      搭建ZuulFilter过滤器

      1.创建过滤器类继承ZuulFilter
      2.获取上下文
      3.获取Request对象
      4.从请求头中获取token
      5.创建过滤器执行逻辑
      6.实现ZuulFilter中的方法:
              过滤类型:filterType()  pre-表示在请求之前执行.
              过滤器执行顺序:filterOrder()  当一个请求在同一阶段存在多个过滤器的时候,规定多个过滤器的执行顺序
              判断过滤器是否生效:shouldFilter()

      搭建动态Zuul网关路由转发

  • 传统方式将路由规则配置在配置文件中,如果路由地址发生了改变,需要重启服务器
  • 在微服务中应该将路由规则配置在SpringCloud Config分布式配置中心,实现动态路由规则.
  • 配置SpringCloud Config分布式配置中心的实时刷新
    1.引入actuator依赖spring-boot-starter-actuator
    2.在配置文件中开启监控端点
    management.endpoints.web.exposure.include="*"     # 开启所有端点
    3.启动运行configClient
    4.在需要刷新的controller类中的bean当标注@RefreshScope注解使actuator刷新生效

    搭建Nginx+Zuul网关集群

  • 如何实现集群: 保证每台服务数据一致,使用Nginx实现反向代理和负载均衡
  • Zuul搭建网关:
    • 使用Nginx+Zuul
    • 遵循一主一备或者轮询的原则
    • 网关是多个
  • 网关集群原理: 客户端发送请求,所有请求统一到Nginx上,在Nginx中实现反向代理和负载均衡,再使用轮询机制转发到网关上
    1.在host中配置域名
    2.在Nginx配置文件中配置上游服务器(upstream),默认实现负载均衡
    3.在过滤器中调用网关接口
  • Nginx和Zuul区别:
    • 微服务网关是针对整个微服务实现统一请求拦截,因此网关都采用相关语言(Java)开发

标签:网关,服务,请求,教程,接口,Nginx,Zuul
来源: https://blog.51cto.com/u_15185289/2763541

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有