gateway/

directory
v0.0.0-...-6cf1638 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 24, 2024 License: MulanPSL-2.0

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

Path Synopsis
internal
dao
dto

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL