70 lines
1.5 KiB
Go
70 lines
1.5 KiB
Go
package cloud
|
|
|
|
import (
|
|
"BlogAdmin/third_party/database"
|
|
"context"
|
|
"fmt"
|
|
"log"
|
|
"sync"
|
|
)
|
|
|
|
var (
|
|
serviceName string = "BlogAdminService"
|
|
host string = "192.168.0.50"
|
|
port string = "8081"
|
|
countMap sync.Map
|
|
)
|
|
|
|
type distributedService struct {
|
|
}
|
|
|
|
var DistributedService distributedService
|
|
|
|
func init() {
|
|
|
|
}
|
|
|
|
func addReqCount(service string) int64 {
|
|
val, _ := countMap.Load(service)
|
|
i := val.(int64)
|
|
countMap.Store(service, i+1)
|
|
return i
|
|
}
|
|
|
|
func (*distributedService) Req(service string, url string) {
|
|
ctx := context.Background()
|
|
key := fmt.Sprintf("distributed:%v", service)
|
|
total := database.RedisTemplate.SCard(ctx, key).Val()
|
|
if total == 0 {
|
|
log.Println(service, "服务不存在")
|
|
return
|
|
}
|
|
results := database.RedisTemplate.SMembers(ctx, key).Val()
|
|
current := addReqCount(service)
|
|
addr := results[total%current]
|
|
// r, err := http.NewRequest("", addr+url, nil)
|
|
log.Println(addr)
|
|
|
|
}
|
|
|
|
func (*distributedService) ServiceUp() {
|
|
|
|
ctx := context.Background()
|
|
key := fmt.Sprintf("distributed:%v", serviceName)
|
|
addr := fmt.Sprintf("%v:%v", host, port)
|
|
database.RedisTemplate.SAdd(ctx, key, addr)
|
|
|
|
// keys, _ := database.RedisTemplate.Scan(ctx, 0, keyPerfix, 0).Val()
|
|
// i := len(keys)
|
|
// key := keys[0/i]
|
|
// result := database.RedisTemplate.Get(ctx, key).Val()
|
|
// log.Println(result)
|
|
}
|
|
|
|
func (*distributedService) ServiceDown() {
|
|
ctx := context.Background()
|
|
key := fmt.Sprintf("distributed:%v", serviceName)
|
|
addr := fmt.Sprintf("%v:%v", host, port)
|
|
database.RedisTemplate.SRem(ctx, key, addr)
|
|
}
|