微服務中的負載均衡講解
阿新 • • 發佈:2022-03-13
什麼是負載均衡,負載均衡策略有哪些?
- 什麼是負載均衡
- 負載均衡的策略
-
集中式load balance
-
程序內load balance
優缺點: -
獨立程序負載均衡
總結:用的最多的是第二種,程序內負載均衡
常用的負載均衡演算法
grpc的負載均衡策略
- grpc從consul中同步服務資訊,並進行負載均衡
- 安裝
go get github.com/mbobakov/grpc-consul-resolver
github 原始碼
案例:
import ( "context" "fmt" "google.golang.org/grpc" "log" "mxshop-api/user-web/proto" _ "github.com/mbobakov/grpc-consul-resolver" // It's important ) func main() { conn, err := grpc.Dial( "consul://127.0.0.1:8500/user-srv?wait=14s&tag=srv", grpc.WithInsecure(), grpc.WithDefaultServiceConfig(`{"loadBalancingPolicy": "round_robin"}`), // 負載均衡策略:輪詢 ) if err != nil { log.Fatal(err) } defer conn.Close() for i := 0; i < 10; i++{ userClient := proto.NewUserClient(conn) rsp, err := userClient.GetUserList(context.Background(), &proto.PageInfo{Pn: 1, PSize: 2}) if err != nil { fmt.Println(err.Error()) return } fmt.Printf("%T\n", rsp.Data) for k, v := range rsp.Data{ fmt.Println(k, v) } } }