Acl 是一个跨平台网络通信库与服务器开发框架,支持 LINUX, WIN32, Solaris, FreeBSD, MacOS, AndroidOS, iOS,实现了常见的网络通信协议:HTTP/Websocket/SMTP/ICMP/MQTT/Redis/Memcached/Beanstalk/Handler Socket,实现了常见的编解码:XML/JSON/MIME/BASE64/UUCODE/QPCODE/RFC2047/RFC1035,另外,还封装了常见的数据库客户端 API,支持:Mysql, Postgresql, Sqlite。Acl 库不仅可以用在服务端开发高性能、高并发的服务器应用,而且还可以用在客户端(支持Win32, Android, iOS)开发网络通信模块。本次升级为年度大版本更新,主要包括如下重大更新:
1、feature:协程模块(lib_fiber)支持 Linux 中新增的 io_uring 引擎,在协程模式下统一了网络 IO 与文件 IO 过程,磁盘IO过程不会再阻塞协程调度器;
2、feature:协程模块(lib_fiber)中设计了新的可以用在协程之间、协程与线程之间同步的协程锁(fiber_mutex),相较于之前的 fiber_event 占用少量的文件句柄,同时具有更好的性能;
3、optimize:协程模块(lib_fiber)优化定时器模块,大幅降低调用gettimdofday API的次数,从而进一步提升协程调度器的性能;
4、optimize:协程模块(lib_fiber)优化网络IO超时模块,大幅提升大并发下网络模块的性能;
5、optimize:协程模块(lib_fiber)重新设计并实现了 DNS 协程模块,去掉对第三方 DNS 库的依赖;
6、feature:SSL 模块(lib_acl_cpp中)增加了针对 OpenSSL 的支持,从而使服务端开发 SSL 类服务应用的性能较之前(使用 MbedTLS)大幅提升;
7、optimize:Redis 模块(lib_acl_cpp中)中的 pipeline 接口进行优化,方便子类重载其中的消息管理模块,从而方便协程模式下使用 Redis pipeline 模式;
8、featue:acl_master 服务管理器与服务子进程之间更好地支持 SO_REUSEPORT 功能;
9、bugs fixed:包括一些已知问题的修复。
Acl 库下载:
gitee:https://gitee.com/acl-dev/acl
github: https://github.com/acl-dev/acl