亿级流量系统多级缓存架构11 网关

亿级流量系统多级缓存架构11 流量网关

流量网关和业务网关

流量网关

  • 全局性流控
  • 日志统计
  • 防止 SQL 注入
  • 防止 Web 攻击
  • 屏蔽工具扫描
  • 黑白名单控制

业务网关

  • 请求接入:作为所有 API 接口服务请求的接入点,管理所有的接入请求;
  • 业务聚合:作为所有后端业务服务的聚合点,所有的业务服务都可以在这里被调用;
  • 中介策略:实现安全、验证、路由、过滤、流控,缓存等策略,进行一些必要的中介处理;
  • 统一管理:提供配置管理工具,对所有 API 服务的调用生命周期和相应的中介策略进行统一管理。

开源网关

目前常见的开源网关大致上按照语言分类有如下几类:

  • Nginx+lua:Open Resty、Kong、Orange、Abtesting gateway 等
  • Java:Zuul/Zuul2、Spring Cloud Gateway、Kaazing KWG、gravitee、Dromara soul 等
  • Go:Janus、fagongzi、Grpc-gateway
  • Dotnet:Ocelot
  • NodeJS:Express Gateway、Micro Gateway

按照使用数量、成熟度等来划分,主流的有 4 个:

  • OpenResty
  • Kong
  • Zuul/Zuul2
  • Spring Cloud Gateway

ABTesingGateway

项目地址:

https://github.com/CNSRE/ABTestingGateway

Zuul/Zuul2

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8Gywgm4e-1596615771751)(images/68747470733a2f2f692e696d6775722e636f6d2f6d52536f7345702e706e67.png)]

https://github.com/Netflix/zuul

Zuul 1.x

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LzQgfZRe-1596615771754)(images/4ab5dd60-caee-11e8-b235-ab9d56e6ad7c)]

Zuul 2.x

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UX2V1WDZ-1596615771756)(images/62ea7580-caee-11e8-8854-ffb1d914e591)]

Spring Cloud Gateway

https://github.com/spring-cloud/spring-cloud-gateway/

OpenResty/Kong/Zuul2/SpringCloudGateway 重要特性对比

网关限流鉴权监控易用性可维护性成熟度
Spring Cloud Gateway可以通过IP,用户,集群限流,提供了相应的接口进行扩展普通鉴权、auth2.0Gateway Metrics Filter简单易用spring系列可扩展强,易配置 可维护性好spring社区成熟,但gateway资源较少
Zuul2可以通过配置文件配置集群限流和单服务器限流亦可通过filter实现限流扩展filter中实现filter中实现参考资料较少可维护性较差开源不久,资料少
OpenResty需要lua开发需要lua开发需要开发简单易用,但是需要进行的lua开发很多可维护性较差,将来需要维护大量lua脚本很成熟资料很多
Kong根据秒,分,时,天,月,年,根据用户进行限流。可在原码的基础上进行开发普通鉴权,Key Auth鉴权,HMAC,auth2.0可上报datadog,记录请求数量,请求数据量,应答数据量,接收于发送的时间间隔,状态码数量,kong内运行时间简单易用,api转发通过管理员接口配置,开发需要lua脚本"可维护性较差,将来需要维护大量lua库相对成熟,用户问题汇总,社区,插件开源

Kong

https://konghq.com/

https://github.com/kong/kong

主要有三个组件

  • Kong Server :基于nginx的服务器,用来接收API请求。
  • Apache Cassandra/PostgreSQL :用来存储操作数据。
  • Kong dashboard:官方推荐UI管理工具,当然,也可以使用 restfull 方式 管理admin api。

Kong采用插件机制进行功能定制,插件集(可以是0或N个)在API请求响应循环的生命周期中被执行。插件使用Lua编写,目前已有几个基础功能:HTTP基本认证、密钥认证、CORS(Cross-Origin Resource Sharing,跨域资源共享)、TCP、UDP、文件日志、API请求限流、请求转发以及Nginx监控。

安装

安装环境:centOS6.5

#获取下载的rpm
yum install https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-7-x86_64/pgdg-centos95-9.5-3.noarch.rpm
#执行安装
yum install postgresql95-server

初始化数据库

service postgresql-9.5 initdb

启动服务

service postgresql-9.5 start

远程连接

修改

vi /var/lib/pgsql/9.5/data/pg_hba.conf

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer


# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 ident
host    all             all             0.0.0.0/0               trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     postgres                                peer
#host    replication     postgres        127.0.0.1/32            ident
#host    replication     postgres        ::1/128                 ident

vi /var/lib/pgsql/9.5/data/postgresql.conf

listen_addresses = '*'          # what IP address(es) to listen on;
                                        # comma-separated list of addresses;
                                        # defaults to 'localhost'; use '*' for all
                                        # (change requires restart)
port = 5432                             # (change requires restart)

创建数据库

su - postgres//进入数据库
-bash-4.2$ psql
CREATE USER kong WITH PASSWORD 'kong';
create database kong owner kong;
grant all on database kong to kong;

1.3下载地址

https://kong.bintray.com/kong-community-edition-rpm/centos/6/

安装

rpm -ivh kong-community-edition-0.13.1.el6.noarch.rpm

拷贝配置文件

/etc/kong/kong.conf.default
/etc/kong/kong.conf

初始化数据库

1.4 kong migrations bootstrap
1.3 kong migrations up

启动服务

kong start

安装dashboard

https://github.com/PGBI/kong-dashboard

最新的Kong是0.14.x,而Kong-Dashboard暂时支持最高版本0.13.x

安装npm

curl --silent --location https://rpm.nodesource.com/setup_7.x | bash -
sudo yum install -y nodejs

安装dashboard

npm install -g kong-dashboard

启动

kong-dashboard start --kong-url http://localhost:8001

RPM常用命令

1、安装

rpm -i 需要安装的包文件名

举例如下:

rpm -i example.rpm 安装 example.rpm 包;

rpm -iv example.rpm 安装 example.rpm 包并在安装过程中显示正在安装的文件信息;

rpm -ivh example.rpm 安装 example.rpm 包并在安装过程中显示正在安装的文件信息及安装进度;

2、查看安装完成的软件

[root@jacky zookeeper]# rpm -qa | grep jdk
java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.i686
java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.i686

3、卸载软件

rpm -e --nodeps 要卸载的软件包

pm 安装 example.rpm 包并在安装过程中显示正在安装的文件信息及安装进度;

2、查看安装完成的软件

[root@jacky zookeeper]# rpm -qa | grep jdk
java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.i686
java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.i686

3、卸载软件

rpm -e --nodeps 要卸载的软件包

root@jacky zookeeper]# rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.i686

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值