У меня есть клиент grpc, написанный с использованием go-micro, который выполняет вызов grpc microservice, который далее подключается к эластичному поиску для получения результата поиска.
Мой веб-сервис, в котором я создаю свой grpcклиент и служба grpc, подключающиеся кasticsearch, регистрируются в одном и том же консуле реестра (включено для настройки TLS).
Но когда клиент пытается вызвать службу grpc, иногда запрос выполняется успешно, но иногда превышается время ожидания контекста.
Я не уверен, тратит ли консул время для возврата служебной информации, или это проблема соединения с эластичным поиском, или проблема с клиентом grpc.
Пожалуйста, помогите Я застрялпо этому вопросу так долго. Заранее спасибо.
Я попытался изменить размер пула соединений для моего клиента grpc. Я попытался увеличить ttl реестра, время ожидания реестра, но ничего не работает.
consul "github.com/micro/go-plugins/registry/consul"
// my registry options
func registryOptions(ops *registry.Options) {
//ops.Timeout = time.Second * 30
ops.Secure = true
ops.TLSConfig = &tls.Config{InsecureSkipVerify: true}
ops.Addrs = []string{consulReg}
log.Println("registry options : ", ops)
}
Если я раскомментирую время ожидания, я получуошибка наблюдения консула, которая при проверке работоспособности службы (тайм-аут запроса) (возможно, из-за блокировки запроса).
// this is my web service
reg = consul.NewRegistry(registryOptions)
// reg := consul.NewRegistry(registryOptions)
//reg.Watch()
service := web.NewService(
web.Name("lena"),
web.Address(serverPort),
web.Advertise(advertize),
//web.RegisterTTL(time.Second*30),
//web.RegisterInterval(time.Second*10),
web.Registry(reg),
)
Я также использую --registry = consul
Это мой клиент grpc, которыйвызывает сервис упругого поиска
import(
grpcCl "github.com/micro/go-micro/client/grpc"
"github.com/micro/go-micro/client/selector"
cache "github.com/micro/go-micro/client/selector/registry"
)
Client: grpcCl.NewClient(mclient.PoolSize(100),mclient.RequestTimeout(60*time.Second),mclient.Retries(3),mclient.Selector(cache.NewSelector(selector.Registry(reg))),mclient.Registry(reg)
Это мой клиент упругого поиска -
import "github.com/olivere/elastic"
elastic.NewClient(
elastic.SetURL(es.Host1, es.Host2, es.Host3))
Клиент Grpc должен получить своевременный ответ от службы grpc, но у меня истек срок выполнения контекста