SpringCloud之微服务网关技术
- 接口权限: 开放接口,内部接口
- 接口幂等性
- 接口安全性
- 为了防止篡改数据,要验证签名
- 使用网关拦截接口,实现黑名单和白名单
- 接口使用RESTful风格:http协议+json格式,目的是为了跨平台
- 考虑到高并发的情况,对接口服务实现保护功能:服务降级,服务熔断,服务保护
- 最后使用统一的API管理平台:api swagger
- 客户端请求先统一请求到网关服务器上,再由网关服务器进行转发到实际的服务地址
- 网关作用:
- 网关与过滤器的区别:
- 网关分为内网网关和外网网关
- Zuul和Nginx的异同:
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上,在Nginx中实现反向代理和负载均衡,再使用轮询机制转发到网关上
1.在host中配置域名 2.在Nginx配置文件中配置上游服务器(upstream),默认实现负载均衡 3.在过滤器中调用网关接口
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。