【发布时间】:2018-09-12 15:09:14
【问题描述】:
我在这里寻找一些建议。用例是一个网络设备(如路由器),通过 gRPC 执行网络操作。
假设有“n”个模型对象,例如路由器、接口、路由配置对象(例如 OSPF 等)。每个网络操作,例如最终对一个或多个模型对象进行 CRUD。
现在,当通过 gRPC 服务定义它时,似乎有 2 个选项:
定义通用 gRPC RPC,如“SET”和“GET”。该参数将是对象和操作的列表。像 SET((router, update), (interface, update)..
定义非常具体的 RPC。像“setInterfaceProperty_x”、“createOSPFInstance”.. 这样的 RPC 可能有很多很多。
使用 #2,我们正在 RPC 本身中构建应用程序智能。每个新功能都可能需要来自该服务的新 RPC。
对于#1,RPC 是手段,但智能存在于在上下文中使用 RPC 的应用程序中。 RPC 列表只是极少数,不会随时间而改变。
首选方法是什么?通用 RPC(并保持很少)还是有数十个(或更多)操作驱动的 RPC?我看到一些像 P4Runtime 这样的开源项目采用方法 #1。
感谢您的宝贵时间。如果需要,我可以提供更多信息。
【问题讨论】: