使用gRPC服务定义作为多个实例的接口

时间:2017-09-22 07:28:16

标签: grpc

我们假设我们有一个Search-Service

service Search {
  rpc Search (SearchRequest) returns (SearchReply) {}
}

message SearchRequest {
  string query = 1;
}

message SearchReply {
  repeated string message = 1;
}

现在,让我们考虑一下所有应该实现该接口以提供搜索的多个搜索引擎。

我遇到的问题是,gRPC只允许单个IP:PORT对后面的Search服务单例。因此,在一个环境中集成多个搜索引擎的唯一方法是将每个搜索引擎置于一个不同的IP:PORT,它们不可能在同一个端口上。

1 个答案:

答案 0 :(得分:1)

您不能在同一台服务器上拥有同一服务的多个实例。根据问题的风格,有三种主要方法可以解决问题:

  1. 合并结果
  2. 包含请求参数
  3. 使用不同的服务名称
  4. 如果“多个搜索引擎”在语义上等效,则不需要单独的方法,而是使用汇总结果进行响应。

    如果“多个搜索引擎”与数据相关,请在SearchRequest中添加其他参数,例如string dataset = 2;

    否则,请制作单独的服务:ImageSearchWebSearch