【问题标题】:Best practice (GRPC communication) architecture Microservice (List vs Loop)最佳实践(GRPC 通信)架构微服务(List vs Loop)
【发布时间】:2020-11-19 02:14:58
【问题描述】:

我想知道您对这两种获取用户的方式有何看法:

我有一个 Grpc 服务“GetUser”和“GetUsers”

用户模型

{
userName : string
email: string
firstName: string
LastName: string
}

我有 userIds 列表(介于 1 到 5000 个 Id 之间)。

什么更有效率:

Call Grpc => GetUsers(ids[]) 
Or loop Call Grpc => GetUser(id) 

注意:无论如何,我将有一个用户访问数据库

【问题讨论】:

    标签: architecture microservices grpc


    【解决方案1】:

    如果您在循环中执行一元 GetUser RPC,则每次调用都会有 additional framing,这意味着线路上的字节数更多。因此,从传输/接收字节的角度来看,GetUsers 更“高效”。

    但是,GetUsers RPC 要求您一次将整个数据集保存在内存中。由于您显然只需要 5000 个 ID,因此这对您来说可能不是问题。但对于更大的数据集,这可能会成为一个真正的问题。

    如果你无法接受内存和额外的框架,你可以查看streaming RPC like:

    rpc GetUser(stream GetUserRequest) returns (stream GetUserResponse);
    

    【讨论】:

      猜你喜欢
      • 2020-04-07
      • 1970-01-01
      • 2019-10-25
      • 2017-12-26
      • 2020-06-04
      • 1970-01-01
      • 2016-05-24
      • 2020-01-15
      相关资源
      最近更新 更多