【问题标题】:Dynamic binding of services in Thrift or gRPC / passing service as argumentThrift 或 gRPC 中服务的动态绑定/将服务作为参数传递
【发布时间】:2020-10-26 09:53:08
【问题描述】:

我使用使用大量动态服务注册的现有系统,使用 Andorid HIDL/AIDL,例如:

多个对象实现:

IHandler { Response handleRequet(Id subset, Request r)}

一个对象实现:

class IHandlerCoordinator {
   Response handleRequet(Id subset, Request r);
   void RegisterHandler(std::vector<Id> subsets, IHandler handler_for_subset_ids);
}

多个对象在启动/动态注册到 IHandlerCoordinator(传递他们可以处理的预期子集),然后 IHandlerCoordinator 将传入请求分派给客户端。

在 xIDL 中它需要将服务作为参数传递,如何在 Thrift / gRPC 中进行模拟?

【问题讨论】:

    标签: callback grpc thrift


    【解决方案1】:

    关于 Thrift:目前还没有回调这样的东西。围绕该主题进行了一些讨论(请参阅邮件列表存档和/或 JIRA),但没有实施。最大的挑战是以与传输无关的方式来实现,因此目前的共识是,如果需要,您必须手动实现它。

    从技术上讲,有两种通用方法:

    • 在接收回调的客户端也实现一个服务器实例
    • 集成长时间运行的调用或轮询机制,以通过客户端调用从服务器主动检索“回调”数据

    使用 gRPC 会更容易,因为 gRPC 专注于 HTTP。 Thrift 从一开始就为any kind of transport you can imagine 开放。

    【讨论】:

    • 在客户端也实现服务器 - 听起来不错,那么在“注册调用”中传递 unix 路径或 URL 而不是句柄的做法是吗?
    • 无论你需要什么 :-) URL、管道句柄、套接字端口......你的名字。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-01
    • 2013-02-23
    • 2014-02-01
    • 2011-10-10
    • 1970-01-01
    相关资源
    最近更新 更多