Skip to content

toeydevelopment/bag

Repository files navigation

Bag a simple balance algorithm in golang

Bag is stand for Balance Algorithm in Generic

Example

generic style

type server struct {
	url        url.URL
	serverName string
}

func Server() {
	server1, _ := url.Parse("https://localhost:3000")
	server2, _ := url.Parse("https://localhost:3001")
	server3, _ := url.Parse("https://localhost:3002")

	servers := []server{
		{
			url:        *server1,
			serverName: "server1",
		},
		{
			url:        *server2,
			serverName: "server2",
		},
		{
			url:        *server3,
			serverName: "server3",
		},
	}

	var (
		lb bag.LoadBalancer[server]
	)

	// roundrobin
	lb, _ = bag.NewRoundRobin(servers...)

	lb.Next(context.TODO())

	lb, _ = bag.NewLeastConnection(servers...)

	lb.Next(context.TODO())
}


func Dynamic() {
	var (
		lb  bag.LoadBalancer[int]
		err error
	)

	lb, err = bag.NewLeastConnection(1, 2, 3)

	_ = lb
	_ = err

	lb, err = bag.NewRoundRobin(1, 2, 3)

	_ = lb
	_ = err

}

least connection inspired from https://github.com/hlts2/least-connections

About

a simple balance algorithm

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages