网络代理大纲
- 什么是网络代理
- http代理,重点讲解
- https代理
- websocket代理
- tcp代理
什么是网络代理
- 用户通过代理请求信息
- 请求通过网络代理完成转发到达目标服务器
- 目标服务器相应后再通过网络代理回传给用户
ReverseProxy 功能点
- 更改内容支持
- 错误信息回调
- 支持自定义负载均衡
- url重写功能
- 连接池功能
- 支持websocket服务,独立章节介绍
- 支持https代理:独立章节介绍
拓展ReverseProxy 功能
- 负载均衡
- 中间件支持
- 限流、熔断
- 权限认证
- 数据统计
四大负载均衡策略
- 随机负载
- 随机挑选目标服务器IP
- 轮询负载
- ABC三台服务器,ABCABC依次轮询
- 加权负载
- 给目标设置访问权重,按照权重轮询
- 一致性hash负载
- 请求固定URL访问指定IP
代码实现一个加权负载均衡
type WeightNode struct {
addr string
weight int //权重值
currentWeight int //节点当前权重
effectiveWeight int //有效权重
}
一致性hash指标
- 单调性
- 平衡性
- 分散性
为反向代理增加负载均衡功能
- 使用工厂方法扩展
- 使用接口统一封装
type LoadBalance interface {
Add(...string) error
Get(string) (string, error)
//后期服务发现补充
Update()
}