From 653ab059a06484ec66cb4b1383b718b19eba0b27 Mon Sep 17 00:00:00 2001 From: hujiebin Date: Mon, 23 Oct 2023 15:01:03 +0800 Subject: [PATCH] Feature/consul redis --- common/config/config.go | 470 +--------------------------------------- debug.ini | 2 + go.mod | 10 +- go.sum | 36 +++ local.ini | 2 + main.go | 82 ++++--- release.ini | 2 + 7 files changed, 107 insertions(+), 497 deletions(-) diff --git a/common/config/config.go b/common/config/config.go index 4113955..a12cc47 100644 --- a/common/config/config.go +++ b/common/config/config.go @@ -34,276 +34,10 @@ type MysqlCodeConfig struct { //redis配置 type RedisConfig struct { - REDIS_HOST string - REDIS_PASSWORD string -} - -//jwt -type JwtConfig struct { - SECRET string - ISSUER_API string - ISSUER_MGR string - EXPIRE string -} - -//oss -type OssConfig struct { - OSS_ACCESS_KEY_ID string - OSS_ACCESS_KEY_SECRET string - OSS_ROLE_ARN string - OSS_END_POINT string - OSS_BUCKET string - OSS_CDN string - OSS_EXPIRED_TIME uint - OSS_STS_POINT string - OSS_STS string - OSS_STS_AES string -} - -// aws -type AwsConfig struct { - AWS_BUCKET string - AWS_CDN string - AWS_DIR string - CONFIDENCE float32 -} - -//APP -type AppConfig struct { - BIZ_SECRET string - WEB_SECRET string - OPERATION_SECRET string - SUPERUSER string - OFFICIAL_GROUP string - MINIMAL_VERSION_ANDROID int - MINIMAL_VERSION_IOS int - MODERATE string -} - -//googlePay 配置信息 -type GooglePayConfig struct { - JsonKey []byte -} - -//融云 -type RongyunConfig struct { - RONG_CLOUD_APP_KEY string - RONG_CLOUD_APP_SECRET string - RONG_CLOUD_URL string -} - -//腾讯云 -type TencentyunConfig struct { - TENCENTYUN_APP_ID int - TENCENTYUN_KEY string - TX_OVERSEA_APP_ID int - TX_OVERSEA_KEY string -} - -//emas -type EmasConfig struct { - ANDROID_APP_KEY string - ANDROID_APP_SECRET string - REGION_ID string - ACCESS_KEY_ID string - ACCESS_KEY_SECRET string - IOS_APP_KEY string - IOS_APP_SECRET string - APNS string -} - -//声网 -type AgoraConfig struct { - APP_ID string - APP_CERTIFICATE string - CUSTOMER_KEY string - CUSTOMER_SECRET string -} - -//匹配的配置 -type MatchConfig struct { - //一开始匹配的默认时长(单位:秒) - MATCH_FREE_TIME int - //一开始匹配的默认时长(单位:秒)VIP - MATCH_FREE_TIME_VIP int - //免费加时的时长 (单位:秒) - MATCH_ADD_TIME_FREE int - //匹配的声网的延迟加时(单位:秒) - MATCH_AGORA_TIME int - //匹配周期(单位:秒) - MATCH_CYCLE int - //过期时间(单位:秒),用户redisCache时间 - MATCH_USER_EXPIRES int - //pb match_success中, wait_duration 开始/下一个时间(单位:秒) - MATCH_SUCCESS_WAIT_DURATION uint32 - //pb match_success中, single_wait_time_in_sec 单方等待连接最长时间(单位:秒) - MATCH_SUCCESS_SINGLE_WAIT_TIME_IN_SEC uint32 - //pb match_success中, dual_wait_time_in_sec 双方连接中最长时间(单位:秒) - MATCH_SUCCESS_DUAL_WAIT_TIME_IN_SEC uint32 -} - -//在线 -type OnlineConfig struct { - //在线周期 - ONLINE_CYCLE int - //在线过期时间 - ONLINE_USER_EXPIRES int -} - -//1对1视频 -type VideoConfig struct { - VIDEO_DAILY_FREE_NUM int - //一开始匹配的默认时长(单位:秒) - VIDEO_FREE_TIME int - //一开始匹配的默认时长(单位:秒),vip - VIDEO_FREE_TIME_VIP int - //免费加时的时长 (单位:秒) - VIDEO_ADD_TIME_FREE int - //声网的延迟加时(单位:秒) - VIDEO_AGORA_TIME int - //1分钟视频,普通用户价格 - VIDEO_MINUTE_NORMAL int - //1分钟视频,公会用户价格 - VIDEO_MINUTE_UNION int -} - -//会话 -type SessionConfig struct { - SESSION_DAILY_FREE_NUM int - GUILD_USER_HELLO_DAY int -} - -type BeanConfig struct { - DIAMOND_BEAN_RATE int -} - -type H5Config struct { - USER_LEVEL string - GROUP_SUPPORT string - LUCKY_WHEEL string - WEEKLY_STAR string - WEEKLY_CP string - COUNTRY_STAR string - NOBLE_BUY_IOS string - NOBLE_BUY_IOS_AUDIT string - GUILD_DATA_URL string - MGR_GUILD_DATA_URL string - RANKING_PINK_DIAMOND_URL string - GROUP_POWER_GRADE_URL string - GROUP_POWER_ACT_URL string - SHEEP_H5_URL string -} - -type GroupImConfig struct { - MSG_SORT_EXPIRE int - MSG_SORT_SNAP int - MSG_PARALLEL_SIZE int -} - -type GradeConfig struct { - //魅力速度 - CHARM_SPEED_VIP int - //活跃 - ACTITY_SPEED_VIP int - //财富 - WEALTH_SPEED_VIP int -} - -type LikeConfig struct { - //喜欢人数 - I_LIKE_NUM int - //喜欢人数VIP - I_LIKE_NUM_VIP int - //喜欢人数贵族 - I_LIKE_NUM_NOBLE int -} - -type ApplePayConfig struct { - PASSWORD string -} - -type RegisterConfig struct { - IMEI_TOTAL int - IMEI_OAUTH int - ACCOUNT_IP int - ACCOUNT_IP_DURATION int -} - -type BannerConfig struct { - GIFT_BANNER_LEVEL1 int - GIFT_BANNER_LEVEL2 int - GIFT_BANNER_LEVEL3 int -} - -type DiamondConfig struct { - DAILY_LOGIN_IMEI_LIMIT int - DAILY_LOGIN_IP_LIMIT int - PRIVATE_GIFT_RETURN int - NEW_USER_INVITE_AWARD uint32 -} - -type LuckWheelConfig struct { - MINIMAL_PARTICIPANT int // 轮盘开始最少需要的参与人数 - WAIT_TIMELONG int // 等待轮盘开始的时长(分钟) - WINNER_DIAMOND_BANNER int //全服广播钻石门槛 -} - -//自定义主题 -type GroupCustomThemeConfig struct { - PIC_LIMIT int //图片数量 - DAY int //有效天数 -} - -type GiftConfig struct { - WALL_DIAMOND int //上礼物墙,礼物钻石金额 -} - -type DailyConfig struct { - LOGIN_COMMON int - LOGIN_VIP int -} - -type FruitTycoonConfig struct { - BIG_WINNER_THRESDHOLD uint - BIG_WINNER_LOW uint - BIG_WINNER_HIGH uint - POOL_RATIO uint32 - WATERMELON_RATIO uint32 -} - -type ActivityConfig struct { - COUNTRY_STAR_POOL_RATIO uint32 - COUNTRY_STAR_ORDINARY_RATIO uint32 -} - -type CheckoutConfig struct { - URL string - AUTHORIZATION string - H5 string - HILO_SECRET_KEY string -} - -type RiskControlConfig struct { - USER_QPS_LIMIT int64 - USER_URL_QPS_LIMIT int64 -} - -type PayerMaxConfig struct { - URL string - KEY string - MERCHANT_ID string - BIZ_TYPE string - VERSION string - FRONT_CALLBACK_URL string - SHOW_RESULT string - EXPIRE_TIME string - LANGUAGE string -} - -type PaypalConfig struct { - PAYPAL_CLIENT_ID string - PAYPAL_SECRET_ID string - RETURN_URL string + REDIS_HOST string + REDIS_PASSWORD string + REDIS_CLUSTER_HOST string + REDIS_CLUSTER_PASSWORD string } const ( @@ -315,41 +49,13 @@ const ( var mysqlConfigData MysqlConfig var mysqlCodeConfigData MysqlCodeConfig var redisConfigData RedisConfig -var jwtConfigData JwtConfig -var appConfigData AppConfig -var ossConfigData OssConfig -var awsConfigData AwsConfig -var googlePayData GooglePayConfig -var rongyunData RongyunConfig -var tencentyunData TencentyunConfig -var emasData EmasConfig -var agora AgoraConfig -var matchData MatchConfig -var onlineData OnlineConfig -var sessionData SessionConfig -var videoData VideoConfig -var beanData BeanConfig -var h5Data H5Config -var groupImData GroupImConfig -var gradeData GradeConfig -var likeData LikeConfig -var applePayData ApplePayConfig -var registerData RegisterConfig -var bannerConfig BannerConfig -var diamondConfig DiamondConfig -var luckyWheelConfig LuckWheelConfig -var groupCustomThemeConfig GroupCustomThemeConfig -var giftConfig GiftConfig -var dailyConfig DailyConfig -var fruitTycoonConfig FruitTycoonConfig -var activityConfig ActivityConfig -var checkoutConfig CheckoutConfig -var riskControl RiskControlConfig -var payerMaxConfig PayerMaxConfig -var paypalConfig PaypalConfig var mode string var master bool +func GetConfigRedis() RedisConfig { + return redisConfigData +} + func init() { str, _ := os.Getwd() logrus.New().Info(str) @@ -390,164 +96,4 @@ func init() { if err := conf.Section("REDIS").MapTo(&redisConfigData); err != nil { logrus.New().Fatal(err) } - - if err := conf.Section("JWT").MapTo(&jwtConfigData); err != nil { - logrus.New().Fatal(err) - } - - if err := conf.Section("APP").MapTo(&appConfigData); err != nil { - logrus.New().Fatal(err) - } else { - logrus.New().Infof("APP: %+v", appConfigData) - } - - if err := conf.Section("OSS").MapTo(&ossConfigData); err != nil { - logrus.New().Fatal(err) - } - - if err := conf.Section("AWS").MapTo(&awsConfigData); err != nil { - logrus.New().Fatal(err) - } else { - if awsConfigData.CONFIDENCE <= 50 { - awsConfigData.CONFIDENCE = 80 - } - logrus.New().Infof("AWS: %+v", awsConfigData) - } - - if err := conf.Section("RONGYUN").MapTo(&rongyunData); err != nil { - logrus.New().Fatal(err) - } - - if err := conf.Section("TENCENTYUN").MapTo(&tencentyunData); err != nil { - logrus.New().Fatal(err) - } else { - logrus.New().Info("TENCENTYUN: ", tencentyunData) - } - - if err := conf.Section("EMAS").MapTo(&emasData); err != nil { - logrus.New().Fatal(err) - } - - if err := conf.Section("AGORA").MapTo(&agora); err != nil { - logrus.New().Fatal(err) - } - - if err := conf.Section("MATCH").MapTo(&matchData); err != nil { - logrus.New().Fatal(err) - } - - if err := conf.Section("ONLINE").MapTo(&onlineData); err != nil { - logrus.New().Fatal(err) - } - - if err := conf.Section("SESSION").MapTo(&sessionData); err != nil { - logrus.New().Fatal(err) - } - - if err := conf.Section("VIDEO").MapTo(&videoData); err != nil { - logrus.New().Fatal(err) - } - - if err := conf.Section("BEAN").MapTo(&beanData); err != nil { - logrus.New().Fatal(err) - } - - if err := conf.Section("H5").MapTo(&h5Data); err != nil { - logrus.New().Fatal(err) - } - - if err := conf.Section("GROUPIM").MapTo(&groupImData); err != nil { - logrus.New().Fatal(err) - } - - if err := conf.Section("GRADE").MapTo(&gradeData); err != nil { - logrus.New().Fatal(err) - } - - if err := conf.Section("LIKE").MapTo(&likeData); err != nil { - logrus.New().Fatal(err) - } - - if err := conf.Section("APPLEPAY").MapTo(&applePayData); err != nil { - logrus.New().Fatal(err) - } - - if err := conf.Section("REGISTER").MapTo(®isterData); err != nil { - logrus.New().Fatal(err) - } - - if err := conf.Section("BANNER").MapTo(&bannerConfig); err != nil { - logrus.New().Fatal(err) - } - if err := conf.Section("DIAMOND").MapTo(&diamondConfig); err != nil { - logrus.New().Fatal(err) - } else { - if diamondConfig.NEW_USER_INVITE_AWARD <= 0 { - diamondConfig.NEW_USER_INVITE_AWARD = 5000 - } - } - if err := conf.Section("LUCKY_WHEEL").MapTo(&luckyWheelConfig); err != nil { - logrus.New().Fatal(err) - } - if err := conf.Section("GROUP_CUSTOM_THEME").MapTo(&groupCustomThemeConfig); err != nil { - logrus.New().Fatal(err) - } - if err := conf.Section("GIFT").MapTo(&giftConfig); err != nil { - logrus.New().Fatal(err) - } - if err := conf.Section("DAILY").MapTo(&dailyConfig); err != nil { - logrus.New().Fatal(err) - } - if err := conf.Section("CHECKOUT").MapTo(&checkoutConfig); err != nil { - logrus.New().Fatal(err) - } - if err := conf.Section("PAYER_MAX").MapTo(&payerMaxConfig); err != nil { - logrus.New().Fatal(err) - } - if err := conf.Section("PAYPAL").MapTo(&paypalConfig); err != nil { - logrus.New().Fatal(err) - } - if err := conf.Section("FRUIT_TYCOON").MapTo(&fruitTycoonConfig); err != nil { - logrus.New().Fatal(err) - } else { - // 防止未配置或配置错误 - if fruitTycoonConfig.BIG_WINNER_LOW <= 0 { - fruitTycoonConfig.BIG_WINNER_LOW = 10000 - } - if fruitTycoonConfig.BIG_WINNER_HIGH <= 0 { - fruitTycoonConfig.BIG_WINNER_HIGH = 20000 - } - if fruitTycoonConfig.POOL_RATIO <= 0 || fruitTycoonConfig.POOL_RATIO > 100 { - fruitTycoonConfig.POOL_RATIO = 20 - } - if fruitTycoonConfig.WATERMELON_RATIO <= 0 || fruitTycoonConfig.WATERMELON_RATIO > 100 { - fruitTycoonConfig.WATERMELON_RATIO = 70 - } - logrus.New().Infof("FRUIT_TYCOON: %+v", fruitTycoonConfig) - } - - if err := conf.Section("ACTIVITY").MapTo(&activityConfig); err != nil { - logrus.New().Fatal(err) - } else { - // 防止未配置或配置错误 - if activityConfig.COUNTRY_STAR_POOL_RATIO <= 0 { - activityConfig.COUNTRY_STAR_POOL_RATIO = 20 - } - if activityConfig.COUNTRY_STAR_ORDINARY_RATIO <= 0 { - activityConfig.COUNTRY_STAR_ORDINARY_RATIO = 20 - } - logrus.New().Infof("ACTIVITY: %+v", activityConfig) - } - - if err := conf.Section("RISK_CONTROL").MapTo(&riskControl); err != nil { - logrus.New().Fatal(err) - } else { - if riskControl.USER_QPS_LIMIT <= 0 { - riskControl.USER_QPS_LIMIT = 128 - } - if riskControl.USER_URL_QPS_LIMIT <= 0 { - riskControl.USER_URL_QPS_LIMIT = 64 - } - logrus.New().Infof("RISK_CONTROL: %+v", riskControl) - } } diff --git a/debug.ini b/debug.ini index e762842..2282ece 100644 --- a/debug.ini +++ b/debug.ini @@ -11,6 +11,8 @@ MYSQL_DB=hilo_code [REDIS] REDIS_HOST=47.244.34.27:6379 REDIS_PASSWORD=8QZ9JD1zLvPR3yHf +REDIS_CLUSTER_HOST=47.244.34.27:6379 +REDIS_CLUSTER_PASSWORD=8QZ9JD1zLvPR3yHf [JWT] SECRET=hilo1632 ISSUER_API=hiloApi diff --git a/go.mod b/go.mod index 223d541..ea7dcb7 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,10 @@ go 1.17 require ( github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da // indirect + github.com/cespare/xxhash/v2 v2.1.1 // indirect + github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect github.com/fatih/color v1.9.0 // indirect + github.com/go-redis/redis/v8 v8.3.3 // indirect github.com/golang/protobuf v1.4.3 // indirect github.com/gorilla/websocket v1.4.2 // indirect github.com/hashicorp/consul/api v1.7.0 // indirect @@ -25,9 +28,10 @@ require ( github.com/rifflock/lfshook v0.0.0-20180920164130-b9218ef580f5 // indirect github.com/satori/go.uuid v1.2.0 // indirect github.com/sirupsen/logrus v1.7.0 // indirect - golang.org/x/net v0.0.0-20200822124328-c89045814202 // indirect - golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd // indirect - golang.org/x/text v0.3.2 // indirect + go.opentelemetry.io/otel v0.13.0 // indirect + golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0 // indirect + golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f // indirect + golang.org/x/text v0.3.3 // indirect google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 // indirect google.golang.org/grpc v1.42.0 // indirect google.golang.org/protobuf v1.25.0 // indirect diff --git a/go.sum b/go.sum index 14aaf9a..b45efd7 100644 --- a/go.sum +++ b/go.sum @@ -9,6 +9,7 @@ github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= @@ -19,6 +20,8 @@ github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= +github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= @@ -28,7 +31,11 @@ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7 github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0 h1:8xPHl4/q1VyqGIPif1F+1V3Y3lSmrq01EabUW3CoW5s= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/go-redis/redis/v8 v8.3.3 h1:e0CL9fsFDK92pkIJH2XAeS/NwO2VuIOAoJvI6yktZFk= +github.com/go-redis/redis/v8 v8.3.3/go.mod h1:jszGxBCez8QA1HWSmQxJO9Y82kNibbUmeYhKWrBejTU= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -49,6 +56,7 @@ github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= @@ -79,6 +87,7 @@ github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= github.com/hashicorp/serf v0.9.3 h1:AVF6JDQQens6nMHT9OGERBvK0f8rPrAGILnsKLr6lzM= github.com/hashicorp/serf v0.9.3/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= @@ -108,6 +117,13 @@ github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eI github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.14.2/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDsH8xc= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -130,7 +146,10 @@ github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXf github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +go.opentelemetry.io/otel v0.13.0 h1:2isEnyzjjJZq6r2EKMsFj4TxiQiexsM04AVhwbR/oBA= +go.opentelemetry.io/otel v0.13.0/go.mod h1:dlSNewoRYikTkotEnxdmuBHgzT+k/idJSfDv/FxEnOY= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= @@ -142,6 +161,7 @@ golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvx golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -149,8 +169,11 @@ golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200822124328-c89045814202 h1:VvcQYSHwXgi7W+TpUR6A9g6Up98WAHf3f/ulnJ62IyA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0 h1:wBouT66WTYFXdxfVdz9sVWARVd/2vfGcmI45D2gj45M= +golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -159,23 +182,32 @@ golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae h1:/WDfKMnPU+m5M4xB+6x4kaepxRw6jWvR5iDRdvjHgy8= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd h1:xhmwyvizuTgC2qz7ZlMluP20uW+C3Rm0FD/WLDX8884= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f h1:+Nyd8tzPX9R7BWHguqsrbFdRx3WQ/1ib8I44HXV5yTA= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= @@ -212,11 +244,15 @@ google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4 google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/ini.v1 v1.63.2 h1:tGK/CyBg7SMzb60vP1M03vNZ3VDu3wGQJwn7Sxi9r3c= gopkg.in/ini.v1 v1.63.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/local.ini b/local.ini index 53809f1..145bd8d 100644 --- a/local.ini +++ b/local.ini @@ -11,6 +11,8 @@ MYSQL_DB=hilo_code [REDIS] REDIS_HOST=47.244.34.27:6379 REDIS_PASSWORD=8QZ9JD1zLvPR3yHf +REDIS_CLUSTER_HOST=47.244.34.27:6379 +REDIS_CLUSTER_PASSWORD=8QZ9JD1zLvPR3yHf [JWT] SECRET=hilo1632 ISSUER_API=hiloApi diff --git a/main.go b/main.go index ee1c7b7..bd1e7b9 100644 --- a/main.go +++ b/main.go @@ -4,8 +4,9 @@ import ( "context" "flag" "fmt" + "github.com/go-redis/redis/v8" "hilo-userProxy/common" - "hilo-userProxy/common/consul" + "hilo-userProxy/common/config" "net" "net/http" _ "net/http/pprof" @@ -22,7 +23,6 @@ import ( "github.com/golang/protobuf/proto" "github.com/gorilla/websocket" - consulapi "github.com/hashicorp/consul/api" uuid "github.com/satori/go.uuid" log "github.com/sirupsen/logrus" "google.golang.org/grpc" @@ -85,6 +85,7 @@ func getShortToken(token string) string { return s[len(s)-1] } } + func serverWebsocket(w http.ResponseWriter, r *http.Request) { ws, err := upgrader.Upgrade(w, r, nil) if err != nil { @@ -744,48 +745,65 @@ var listenPort = flag.String("port", "8081", "listen port") func main() { flag.Parse() - client, err := consulapi.NewClient(consulapi.DefaultConfig()) //非默认情况下需要设置实际的参数 - if client == nil { - mylogrus.MyLog.Fatalln("Fail to get consul client.") - } + // init redis cluster + rdbCluster := redis.NewClient(&redis.Options{ + Addr: config.GetConfigRedis().REDIS_CLUSTER_HOST, + Password: config.GetConfigRedis().REDIS_CLUSTER_PASSWORD, + }) - myIp, myNodeName := consul.GetAgentInfo(client) myLocalIp, err := common.GetClientIpV2() if err != nil { mylogrus.MyLog.Fatal(err) } - mylogrus.MyLog.Infof("myIp is %s, myNodeName: %s, localIp is %s", myIp, myNodeName, myLocalIp) - - cataLog := client.Catalog() - if cataLog == nil { - mylogrus.MyLog.Fatalln("No catalog.") - } - services, _, err := cataLog.Service(userCenterConsulName, "", nil) - if err != nil { - mylogrus.MyLog.Fatalln(err) - } - if len(services) == 0 { - mylogrus.MyLog.Fatalln("userCenter not found.") - } - var addrs []string bd := &Builder{addrs: map[string][]string{"/api": {userCenterAddr}}} - for _, s := range services { - addrs = append(addrs, fmt.Sprintf("%s:%d", s.ServiceAddress, s.ServicePort)) - } - if len(addrs) > 0 { - bd = &Builder{addrs: map[string][]string{"/api": addrs}} - userCenterAddr = "uc:///api" + if rdbCluster != nil { + redisKey := fmt.Sprintf("service:userCenter") + ipPorts, err := rdbCluster.ZRangeByScore(context.Background(), redisKey, &redis.ZRangeBy{ + Min: fmt.Sprintf("%d", time.Now().Add(-time.Second*15).Unix()), // 3倍心跳 + Max: "+inf", + }).Result() + if err != nil { + failMsg := fmt.Sprintf("get service fail,svc:%v,err:%v", "userCenter", err) + mylogrus.MyLog.Errorf(failMsg) + } else if len(ipPorts) > 0 { + bd = &Builder{addrs: map[string][]string{"/api": ipPorts}} + userCenterAddr = "uc:///api" + mylogrus.MyLog.Infof("userCenterAddr:%v,addr:%v", userCenterAddr, ipPorts) + } } - mylogrus.MyLog.Infof("userCenterAddr:%v,addr:%v", userCenterAddr, addrs) // 服务发现 resolver.Register(bd) go func() { - consul.RegisterWatcher(userCenterConsulName, func(addr []string) { - if len(addr) > 0 { - bd.UpdateState(addr) // 更新新的注册名 + //consul.RegisterWatcher(userCenterConsulName, func(addr []string) { + // if len(addr) > 0 { + // bd.UpdateState(addr) // 更新新的注册名 + // } + //}) + ticker := time.NewTicker(time.Minute) + defer ticker.Stop() + for { + select { + case <-ticker.C: + redisKey := fmt.Sprintf("service:userCenter") + ipPorts, err := rdbCluster.ZRangeByScore(context.Background(), redisKey, &redis.ZRangeBy{ + Min: fmt.Sprintf("%d", time.Now().Add(-time.Second*15).Unix()), // 3倍心跳 + Max: "+inf", + }).Result() + if err != nil { + failMsg := fmt.Sprintf("get service fail,svc:%v,err:%v", "userCenter", err) + mylogrus.MyLog.Errorf(failMsg) + break + } + if len(ipPorts) <= 0 { + failMsg := fmt.Sprintf("get service empty,svc:%v,err:%v", "userCenter", err) + mylogrus.MyLog.Errorf(failMsg) + break + } else { + bd.UpdateState(ipPorts) // 更新新的注册名 + } } - }) + } }() // Set up a connection to the userCenter. diff --git a/release.ini b/release.ini index bf23b9e..5f9fb51 100644 --- a/release.ini +++ b/release.ini @@ -11,6 +11,8 @@ MYSQL_DB=hilo_code [REDIS] REDIS_HOST=r-eb3btxn8vfdsuwdbuf.redis.dubai.rds.aliyuncs.com:6379 REDIS_PASSWORD= +REDIS_CLUSTER_HOST=r-eb3yt6k8zgxs62kjjs.redis.dubai.rds.aliyuncs.com:6379 +REDIS_CLUSTER_PASSWORD= [JWT] SECRET=hilo1504 ISSUER_API=hiloApi -- 2.22.0