微服务中的负载均衡讲解

什么是负载均衡,负载均衡策略有哪些?

  1. 什么是负载均衡
  2. 负载均衡的策略
  • 集中式load balance

  • 进程内load balance

    优缺点:

  • 独立进程负载均衡

总结:用的最多的是第二种,进程内负载均衡

常用的负载均衡算法



grpc的负载均衡策略

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

}
posted @ 2022-03-13 11:57  专职  阅读(206)  评论(0编辑  收藏  举报