网关/代理程序

wangchuanjin a68abba769 feat:xiugai il y a 9 mois
.idea 49bde1d7f1 tj il y a 3 ans
common 1d1f2d2090 数据源添加 il y a 1 an
core a68abba769 feat:xiugai il y a 9 mois
etc 3e56211015 wip:加密优化 il y a 1 an
resources f9384ca618 wip:前置代理增加反爬虫 il y a 2 ans
.gitignore 56e56f06bc 修改权限校验方式 il y a 3 ans
README.md 1037b89991 xiugai il y a 2 ans
gateway.exe b0b27463b4 feat:bi设置cookie il y a 1 an
gaway.sql 8a6dbbf8a7 修改表结构 il y a 3 ans
go.mod 2bdcca8997 wip:前置代理js加密 il y a 1 an
go.sum 2bdcca8997 wip:前置代理js加密 il y a 1 an
main.go 3e56211015 wip:加密优化 il y a 1 an

README.md

BaseService/gateway

BaseService/gateway 剑鱼网关服务。为剑鱼网站商品标准化,提供统一权限校验,资源扣减。

网关配置

##

服务注册与服务发现

服务注册与发现依赖go.etcd.io/etcd/client/v3库。

服务注册

注册时向etcd中put scheme/serverCode@serverAddr key并设置租期

  • scheme 默认为 etcd:///com.gateway
  • serverCode 为服务code,在系统中需要唯一
  • serverAddr 为服务ip+端口

服务注册例子 。服务已注册,但服务不可用可能有以下操作*造成。但服务有重试机制,并常识可用节点,不会造成影响。

server := g.Server()

// 向网关注册表注册服务。*此步骤应在服务启动后注册
// NewNode可传入etcd节点,默认http://127.0.0.1:2379
closeNotify, err := node.NewNode(etcdNode1,etcdNode2...).Register(serverCode, serverPort)
if err != nil { 
    panic(err)
}

go func() {
    server.Run()
}()

// 阻塞主进程,接受退出消息。关闭服务,从注册表中删除。
// kill -9 信号接受不到,*会有2~3秒延迟。
quit := make(chan os.Signal, 1)
signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
<-quit
closeNotify()

服务发现

服务发现是网关程序依赖etcdwatch监听系统scheme中所有的服务节点。当有服务启动或关闭时,网关程序能够实时进行服务节点的增加与删除。

    //创建节点发现,并持续监听
    watchNode := node.NewNode(etcdNode1,etcdNodes2,..)
    go watchNode.NewWatcher(ctx, resolver)

反爬虫策略配置

          checkIdBlock      是否开启用户session校验
          idThreshold       用户请求阈值 [[a,b],[c,d],[m,n]] a秒b次、c秒d次请求出验证码,并清空次阈值内容;m秒n次出验证码,不清除阈值内容,每超出idFreq次,出现一次验证码
          idTimeRange       阈值有效时长
          idFreq            超出最大阈值后,每超出idFreq次,出现一次验证码
          idMax             超出此阈值后直接进入临时黑名单
          idMaxBlockTimes   临时黑名单超出此阈值后直接进入永久黑名单
          
          checkIpBlock      是否开启用户ip校验
          ipThreshold       用户请求阈值 [[a,b],[c,d],[m,n]] a秒b次、c秒d次请求出验证码,并清空次阈值内容;m秒n次出验证码,不清除阈值内容,每超出idFreq次,出现一次验证码
          ipTimeRange       阈值有效时长
          ipFreq            超出最大阈值后,每超出idFreq次,出现一次验证码
          ipMax             超出此阈值后直接进入临时黑名单
          ipMaxBlockTimes   临时黑名单超出此阈值后直接进入永久黑名单
          
          vcodeErrorTimes   [a,b] a秒验证码出错b次,进入临时黑名单
          tempBlockTime     临时黑名单时长