1. 程式人生 > 其它 >微服務中的負載均衡講解

微服務中的負載均衡講解

什麼是負載均衡,負載均衡策略有哪些?

  1. 什麼是負載均衡
  2. 負載均衡的策略
  • 集中式load balance

  • 程序內load balance

    優缺點:

  • 獨立程序負載均衡

總結:用的最多的是第二種,程序內負載均衡

常用的負載均衡演算法



grpc的負載均衡策略

  1. grpc從consul中同步服務資訊,並進行負載均衡

案例:

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)
		}
	}

}