我在系统中使用grpc作为消息总线,这意味着客户端可以将消息发送到服务器,服务器保存消息,然后将其转发给其他合适的客户端。
当前在服务器端(用C ++编写),我使用单向流向客户端发送消息。但是在性能测试中我发现性能不好。客户端A以50k / sec的速度向服务器发送消息,但是服务器每秒只能向客户端B转发约3k消息。
我启用了:: grpc :: WriteOptions()。set_buffer_hint(),并尝试调整一些参数,例如GRPC_ARG_MAX_CONCURRENT_STREAMS和GRPC_ARG_HTTP2_WRITE_BUFFER_SIZE,但看起来它们没有帮助。
我想这个问题是由“流”引起的,因为它必须确保顺序。因为在我的情况下我根本不在乎消息顺序,所以我想知道是否有任何方法可以改善流性能?
我不确定'stream'是否适合这种要求,如果客户端继续从服务器轮询而不是服务器通过stream推送数据,这是更好的方法吗?