一、单节点场景
网关的作用:
- 统一入口
- 安全:黑名单、权限身份认证
- 限流:实现微服务访问流量计算,基于流量计算分析进行限流,可以定义多种限流规则
- 缓存:数据缓存
- 日志:日志记录
- 监控:记录请求响应数据,api耗时分析,性能监控
- 重试:异常重试
- 熔断:降级
现有网关框架:
二、网关技术选型
微服务:dubbo,spring cloud
反向代理框架:nginx
kong、orange(nginx + lua)技术
lua脚本开发,游戏开发--lua脚本,
nginx, openresty升级版本的nginx,lua类库
---------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------
nginx + lua:黑/白名单、限流
zuul: 重试、熔断
nginx的安装:
三、正向代理和反向代理
正向代理:
用户知道网站C的地址,但是因为网络原因访问不了;但服务器A可以访问服务器C, 这样用户可以把服务器A设置为正向代理服务器。由服务器A去请求服务器C,然后服务器A把数据返回给用户;
反向代理:
用户需要访问一些服务器应用,但对方不想把服务器地址暴露给用户,这样可以确保安全。
那用户怎么访问呢?可以通过反向代理服务器,用户只需要知道反向代理服务器地址就可以 ,最后反向代理服务器去访问服务器的应用;
总结:
正向代理服务器和反向代理服务器的区别:
- 1. 正向代理:是需要在用户的电脑上,配置正向代理服务器的;而反向代理不需要,因为用户是直接访问的反向代理服务器
- 2. 应用场景:
正向代理的应用场景: 用户是知道目标服务器的地址,如:www.google.com,但是不能直接访问,那么就需要在用户电脑配置一个正向代理服务器,用户再次访问的地址:www.google.com;
反向代理的应用场景:用户本来就不知道目标服务器的地址;而是由平台方提供一个反向代理服务器的地址,用户直接访问反向代理服务器的地址就行;不管目标服务器有多少,用户不需要关心,只要访问反向代理服务器就ok;由反向代理服务器去解析访问目标服务器;
- 3. 反向代理:极大的保护了应用的安全性,而且此结构可以很好的搭建负载均衡;
四、nginx命令和信号控制:
4.1、nginx命令:
4.2、nginx检查配置文件
检查配置文件是否正确:
第一种: 进入nginx可执行程序的目录
# cd /usr/local/nginx/sbin/
# ./nginx -t
第二种:
# /usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
4.3、nginx的信号控制
Nginx支持2种进程模型:Single和Master-Worker
Single是单进程,一般不适用
Master-Worker是主进程和工作进程模型运行,主进程对工作进程管理。
Nginx允许我们通过信号来控制主进程,用信号的方式可以达到不影响现有连接的目的。
信号类型:
4.3.1、nginx平滑升级
1.平滑升级
2. 执行信号平滑升级
3.kill -WINCH 旧的主进程号
4. #kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin` 优雅的关闭
给旧的主进程发送QUIT信号后,旧的主进程退出,并移除logs/nginx.pid.oldbin文件,nginx的升级完成;
查看一下升级后的版本:
./nginx -V
4.3.2 中途停止升级,回滚到旧的nginx
在步骤(3)时,如果想回到旧的nginx不再升级:
1. 给旧的主进程号发送HUP命令,此时nginx不重新读取配置文件的情况下,重新启动旧主进