基于 libuv C++11 风格的网络库 采用 Reactor 模式封装

2021-01-28 19:30:13 +08:00
 intlinfo
基于 libuv 开发的 C++ 纯异步高性能的网络服务器,目前拥有 Tcp Queue WorkQueue Signal 4 大组件,完全继承 libuv 的优点 不同的是采用 Reactor 模式封装。

目前可商用基于 libuv 开源的网络库不多,甚至是没有。所以我基于 uv 开发了这么一套近完善的库。

预期实现: http-server rpc-protocol multiple-thread-curl-client

特性如下

1.CPU 全核利用不会浪费系统资源,并持有 Client index 复用机制。

2.优秀的跨平台能力,一套代码封装 libuv 的 2 套代码,不用担心底层机制。

3.服务器全过程采用纯异步非阻塞模式。

4. 异步的信号处理,多种关闭实例的例子。

4.接口强大简单易用非继承,采用仿函数的回调形式。

5.除此之外,如需更新底层无需更改业务层的代码,直接替换 libuv 既可。

6.完全继承 libuv 原生优点 windows iocp linux epoll 。

项目地址: https://github.com/X-Crack/libuv-evpp

欢迎各路大神 pr 一起完善,它不是一个人的,它是属于开源世界的。
2301 次点击
所在节点    C++
9 条回复
maty
2021-01-28 20:00:07 +08:00
跨平台的话,期望能有个 cmake
jdz
2021-01-28 20:13:41 +08:00
用 brpc 不香吗
intlinfo
2021-01-28 20:29:53 +08:00
@jdz
使用场景不一样,根据需求决定吧,每个人喜欢的库也都不同。
intlinfo
2021-01-28 20:30:53 +08:00
@maty
目前还不稳定,cmake 后面在搞。
本地开发手动搭建的跨平台环境 已经可以跨平台,但最新提交的 master 未经测试。

开发环境是 win vs2019 c++20
YouLMAO
2021-02-01 01:59:36 +08:00
@intlinfo 看了,基本对于需求方不可用,现实需要一个 client 连多个 service,比如 redis,es,都配连接池,比如 redis 开 2,es 开 20,你根本不支持嘛,单点对单点异步基本没有意义
wlgq2
2021-02-04 17:31:54 +08:00
https://github.com/wlgq2/uv-cpp
我自己用了好几年了,个人觉得挺好用的。再过几年网络就要进去 C 艹标准库鸟🐦。
intlinfo
2021-02-07 13:07:28 +08:00
@YouLMAO 是的,目前还在各种测试状态,并没有那么完善,后面会根据不用场景的需求完成不同的场景模块代码。

目前是不可用的状态,未来几个月内会推出稳定版。 嘿嘿!感谢大佬的支持。
intlinfo
2021-02-07 13:08:04 +08:00
@wlgq2 这是大佬您写的嘛。 挺不错的!
intlinfo
2021-02-08 15:39:42 +08:00
@YouLMAO
仔细回想了一下您说的问题,server 对外是预留了 一个 map 的 context 可以保存各种不同的类或指针,因为是一个 any 类型,通过 loop 可以很方便的对每个线程对应的每个会话进行调用(连接各种数据库,它是一个 size_t 类型的大小)。它是绝对的线程安全的。

如果是 client 的话,没有认真写,能用就好了。后面会一点点完善的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/749327

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX