directory
Version:
v0.0.0-...-6cf1638
Opens a new window with list of versions in this module.
Published: Oct 24, 2024
License: MulanPSL-2.0
Opens a new window with license information.
README
¶
Gateway 模块
功能
功能:鉴权、路由、负载均衡、限流、熔断、转协议等
已支持http,https,websocket协议
技术栈
基于 gin中间件 reverse_proxy
1.检验请求是否合法,验证租户(AKSK)是否有权限
oauth2四种模式,使用基于JWT凭证模式
https://blog.csdn.net/qq_22321199/article/details/137503676
2.自动路由,动态配置
etcd
* 注册中心-监听服务地址
注册Gateway地址,admin发现后提供可视化地址(k8s的pod地址会漂移,网关如何实现自动注册发现?)
注册各业务地址,Gateway发现后结合负载均衡器调用
* 监听服务配置
admin写入配置后,gateway使用watch机制重新加载代理规则
服务地址上线,下线改变后重新加载负载均衡器
3.统计请求量和QPS
redis
按业务,每日每小时往redis写入请求量 ???redis数据结构选择 ???如何按业务区分 ???redis大key问题
* token string
* qps统计 string
* 每日每时统计 hash
* 访问排行榜 zset
4.计算QPS
* 网关当前qps ???如何计算QPS(Queries Per Second,每秒查询率)
** 总体QPS计算: 总请求数量 / 所用时间(秒)
** 基于并发量和响应时间的QPS计算: 并发量 / 平均响应时间(秒)
** 基于PV的峰值时间QPS计算: 总PV数×80% / 每天秒数×20%
https://blog.csdn.net/qq_22321199/article/details/138747282
5.QPS限流
* 令牌桶限流 ???原理
https://blog.csdn.net/qq_22321199/article/details/138655637
6.反向代理
* httputil.ReverseProxy ???实现原理
https://blog.csdn.net/qq_22321199/article/details/141634483
7.负载均衡器
随机,轮询,权重,iphash ???实现原理
8.熔断 sony/gobreaker
当某个服务报错,达到阈值时,熔断。
监听熔断状态并告警
* ???平台网关做接口级熔断降级的弊端(推荐单点业务做熔断降级)
平台网关一般是轻量级的,做鉴权,路由和软负载均衡。尽量不涉及业务
举例. 一个服务可能有100个接口,且这个业务的部署了多个实例,做熔断的困难点如下:
例如:某个服务的某一个接口报错(报错还可能是版本导致的),导致整个服务熔断不合适;但是做接口熔断,需要细粒度的维护所有业务接口,非常困难
9.截取path,url重写,header重写等,插件可插拔
* gin ???中间件原理
10. 转协议
前端http,后端websocket或grpc
测试网关小demo
Grpc_todoList
jmeter压测
4C 8G 并发数100 QPS 6500
ab压测
yum -y install httpd-tools
ab -n 10000 -c 10 http://192.168.11.10:8200/demo-todo-list/api/v1/ping
参考:https://mp.csdn.net/mp_blog/creation/editor/141598448
Directories
¶
|
|
|
|
internal
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Click to show internal directories.
Click to hide internal directories.