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 网关
搭建 ZuulFilter 过滤器
搭建动态 Zuul 网关路由转发
传统方式将路由规则配置在配置文件中,如果路由地址发生了改变,需要重启服务器
在微服务中应该将路由规则配置在 SpringCloud Config 分布式配置中心,实现动态路由规则.
配置 SpringCloud Config 分布式配置中心的实时刷新
搭建 Nginx+Zuul 网关集群
如何实现集群: 保证每台服务数据一致,使用 Nginx 实现反向代理和负载均衡
Zuul 搭建网关:
使用 Nginx+Zuul
遵循一主一备或者轮询的原则
网关是多个
网关集群原理: 客户端发送请求,所有请求统一到 Nginx 上,在 Nginx 中实现反向代理和负载均衡,再使用轮询机制转发到网关上
Nginx 和 Zuul 区别:
微服务网关是针对整个微服务实现统一请求拦截,因此网关都采用相关语言(Java)开发
版权声明: 本文为 InfoQ 作者【攻城狮Chova】的原创文章。
原文链接:【http://xie.infoq.cn/article/d72bdeb3efe1a10a3cd6cdd9a】。文章转载请联系作者。
评论