网络代理大纲

    • 什么是网络代理
    • http代理,重点讲解
    • https代理
    • websocket代理
    • tcp代理

    什么是网络代理

    • 用户通过代理请求信息
    • 请求通过网络代理完成转发到达目标服务器
    • 目标服务器相应后再通过网络代理回传给用户

    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png

    ReverseProxy 功能点

    • 更改内容支持
    • 错误信息回调
    • 支持自定义负载均衡
    • url重写功能
    • 连接池功能
    • 支持websocket服务,独立章节介绍
    • 支持https代理:独立章节介绍

    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    拓展ReverseProxy 功能

    • 负载均衡
    • 中间件支持
    • 限流、熔断
    • 权限认证
    • 数据统计

    四大负载均衡策略

    • 随机负载
      • 随机挑选目标服务器IP
    • 轮询负载
      • ABC三台服务器,ABCABC依次轮询
    • 加权负载
      • 给目标设置访问权重,按照权重轮询
    • 一致性hash负载
      • 请求固定URL访问指定IP

    image.png
    image.png
    image.png
    代码实现一个加权负载均衡

    1. type WeightNode struct {
    2. addr string
    3. weight int //权重值
    4. currentWeight int //节点当前权重
    5. effectiveWeight int //有效权重
    6. }

    image.png
    image.png
    一致性hash指标

    • 单调性
    • 平衡性
    • 分散性

    image.png
    image.png
    image.png
    image.png
    为反向代理增加负载均衡功能

    • 使用工厂方法扩展
    • 使用接口统一封装

    image.png

    1. type LoadBalance interface {
    2. Add(...string) error
    3. Get(string) (string, error)
    4. //后期服务发现补充
    5. Update()
    6. }

    image.png