Zhangyi Chen
Zhangyi Chen
我在两年前尝试加过,但是并没有找到特别详细的dubbo协议spec,另外java可以用http或者grpc去访问brpc server.
检查下你的环境里面是不是有多个不同版本的gflags
grpc stream最大的问题就是没有异步接口。 另外上面这个demo中,好像看不到错误处理的部分? stream不能保证是可靠的。
接口好像有点多。 WritesDone和Finish是什么关系?可不可以合为一个。 writer->Finish()和stream->Finisher()又是什么关系? 没发送完毕,业务要中途退出是要如何处理(writer/reader端都可能发生)? 本身rpc接口中的done这里要如何处理? 这个case并没有看到。 能已echo为例子写一个实际的包含错误处理的例子么。
> > 接口好像有点多。 WritesDone和Finish是什么关系?可不可以合为一个。 writer->Finish()和stream->Finisher()又是什么关系? 没发送完毕,业务要中途退出是要如何处理(writer/reader端都可能发生)? 本身rpc接口中的done这里要如何处理? 这个case并没有看到。 能已echo为例子写一个实际的包含错误处理的例子么。 > > 已更新case 1、2 最好不要合一个,WritesDone用来保证发送端数据完整性,Finish来关闭整个流; 3、done还未考虑 调用done->Run()也可以关闭整个流? 看起来一件事情似乎N个接口都可以做,这个可能已经不是很好的迹象了。 参考tcp的接口,只有close, 没有reset. 甚至连half close都没提供。因为对于调用者来说,这几个接口一般都是同时调用的。 这可能已经意味着只需要保留一个。除非能找到常见的case这两个需要分别调用。否则最好是只保留一个。有遇到特殊情况再提供能分开调用的函数。比如默认就是Close(). 有特殊case再提供CloseRead(), CloseWrite(). 另外一个问题, 这个stream接口双工/单工的是如何设置的?
是通过so加载的吗?
这个是因为已经链接了glibc里面的pthread_mutex_lock实现,导致brpc里面的hook没有生效
Nice job! Only one question: Will the changes break the compilation of users with old versions of bazel, e.g. 0.25
协议里面是有一个[字段](https://github.com/apache/incubator-brpc/blob/c09ae0ef9b9cc6e67d6c70500c7ba30e5878e136/src/brpc/streaming_rpc_meta.proto#L42) 处理这个的,实现一下就好了
@kishorenc Which kind of error did you get?