You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
loveckiy.ivan db2331a573 up version 11 months ago
.idea up version 11 months ago
multiresolver up version 11 months ago
vendor up version 11 months ago
README.md up version 11 months ago
go.mod up version 11 months ago
go.sum up version 11 months ago
grpcbalancer.go up version 11 months ago
options.go up version 11 months ago
policy.go up version 11 months ago
workers.go up version 11 months ago
wrapper.go up version 11 months ago

README.md

GrpcBalancer

Пакет для подключения к сервисам по GRPC.

Функционал пакета

В сравнении со стандартным подключением grpc.ClientConn пакет grpcbalancer предоставляет следующие дополнительные возможности:

  1. балансировка между несколькими DNS-адресами сервиса.

С версии v1.3.2:

  1. автоматические фоновые health check’и с переподключением в случае недоступности сервиса;
  2. периодический мягкий реконнект, позволяющий задействовать весь текущий пул подов сервиса и перебалансировать соединения при начальном неравномерном распределении при деплое;
  3. принудительный health check (опционально) перед вызовом метода сервиса.

С версии v1.3.3:

  1. корректная работа созданного ранее подключения после переустановки соединения без необходимости заново запрашивать подключение методом balancer.Conn(ctx).

Опции инициализации

Опция Назначение
WithUrls(target ...string) URL(ы) сервиса, к которому подключаемся
WithInsecure() разрешает небезопасные подключения
WithTimeout(timeout time.Duration) таймаут установки соединения, 0 = значение по умолчанию
WithBalancingMode(bp BalancingPolicy) режим балансировки (пока поддерживается только round-robin)
WithForceHeathCheck(timeout time.Duration) проводить health check перед каждым запросом, 0 = таймаут по умолчанию

При вызове методов сервиса в случае, если в контексте не задан таймаут, устанавливается таймаут по умолчанию.

Использование

Инициализация

import gitlab-private.wildberries.ru/wbpay-go/packages/grpcbalancer

balancer, err := grpcbalancer.New(
	grpcbalancer.WithUrls(url_to_svc),
	grpcbalancer.WithInsecure(),
)

Вызов метода

conn, err := balancer.Conn(ctx)
res, err := conn.SomeMethod(ctx, request)

Рекомендуемым является вариант, при котором перед каждым вызовом метода сервиса сначала получаем подключение методом balancer.Conn(ctx).