ithewei

Results 131 comments of ithewei

Welcome to promote libhv in the openEuler community and migrate the mirror repository on Gitee to the openEuler community repository.

Thanks, I have implement signal event, just refer to https://github.com/ithewei/libhv/commit/6ad0d72530ae5c2b8d24c5823169954b8f82993c

欢迎提PR,可以提到master分支

你是指`mqtt broker`吧,有很多开源的`mqtt broker`可以使用的,比如`Mosquitto`、`emqtt`,libhv就没必要再造轮子了,`mqtt broker`还涉及持久化存储等比较复杂的功能。

我也直接使用中文回复了,首先表扬你看源码看的很仔细,思考的很深入。 (1)这里确实没有考虑http pipeline场景或者恶意攻击的情况,假设的是常规的一应一答的请求-响应场景,在你描述的场景里使用http异步回调确实有线程安全问题,可能导致coredump。 (2)上面问题主要是因为一个HTTP连接里只使用了一个HttpRequest、HttpResponse请求上下文导致的,如果要优化的话,就得每接收一个新的请求就是New一个HttpRequest、HttpResponse请求上下文,不要去复用之前的来避免竞争,缺点就是多个请求上下文的生命周期管理有点麻烦,连接断开后,才能释放掉这条连接上所有的请求上下文。 如果不考虑支持http pipeline场景,作为服务端确实也应该考虑这种情况可能导致的coredump,后续我想下怎么规避下,加锁可能会影响效率。

libhv里集成了nghttp2实现http2协议,而grpc是基于http2的,所以理论上是可以实现grpc的,但是因为grpc绑定了protobuf,通过IDL文件自动生成序列化/反序列化代码,这步libhv还没有很好的集成。 目前可访问grpc服务的步骤为: 1、编译时带上nghttp2 ``` ./configure --with-nghttp2 make ``` 2、请求协议采用http2,content-type设置为application/grpc ``` HttpRequest req; req.http_major = 2; req.http_minor = 0; req.content_type = APPLICATION_GRPC; ``` 3、请求body使用protobuf序列化 ``` req.body = SerializeAsString(xxx); ```

Do you need an upgraded version to support the new feature?

非常感谢你的贡献! 我需要点时间认真review和测试下。 另外你做过分别使用epoll和iouring的性能对比数据吗?

这个不加const会有什么影响吗?