设为首页 收藏本站
查看: 912|回复: 0

[软件发布] 跨平台网络通信与服务器框架 acl 3.2.0 发布

[复制链接]

尚未签到

发表于 2016-10-27 09:03:33 | 显示全部楼层 |阅读模式
欢迎加入运维网交流群:263444886  
  acl 3.2.0 版本发布了,acl 是 one advanced C/C++ library 的简称,主要包括网络通信库以及服务器框架库等功能,支持 Linux/Windows/Solaris/FreeBsd/MacOS 平台;整个 acl 项目主要包含三个函数库:lib_acl(纯C开发的基础库,主要包含网络通信及服务器编程框架以及其它丰富的功能)、lib_protocol(包含 HTTP/PING/SMTP 通信协议的C语言实现)、lib_fiber(网络协程库)、lib_acl_cpp(基于 lib_acl 及 lib_protocol 两个C库,提供了更为强大的编程接口及丰富的功能类)。
  本次 acl 升级的最主要内容为:增加了类似于 golang 中的网络协程库,该库使 C/C++ 程序员可以以顺序编程的思维方式快速地编写出高并发、高性能的网络服务器程序,该网络协程库参考了 golang 作者 Russ Cox 早年发布的 libtask 设计原型,同时还参考了 libmill/seatar/coroutines/libgo/libco/st 等大量有关协程的库,在此一并表示感谢,同时还需感谢 niukey@qq.com 对于协程的贡献; 此外,lib_acl/lib_acl_cpp 也进行了功能改进和问题修复。
  
  acl 包括以下丰富的常用函数库:
  1、服务器框架:包括进程池模式、线程池模式、非阻塞模式、UDP通信模式、触发器模式以及协程模式
  2、网络通信库:阻塞/非阻塞网络 IO 库(其中 lib_acl_cpp 库通过嵌入 polarssl 而具备了 SSL 通信能力)
  3、HTTP 网络库:HTTP 客户端/服务端库,HTTP 服务端支持 HttpServlet 接口访问方式;支持 HTTP cookies/session;HTTP 客户端支持连接池及连接池集群
  4、redis 客户端库:实现了 redis 客户端命令中 12 个大类中的总共 150 多个命令,支持连接池及集群连接池方式
  5、常见网络应用库: SMTP 客户端库/PING 库/DNS 解析库/memcache 客户端库/handler socket 客户端库/beanstalk 客户端库/disque 客户端库
  6、邮件解析库:mime解析库/RFC2047/RFC2048/mime base64/mime qp/mime uucode 等
  7、事件引擎:支持 select、poll(for unix)、epoll(for linux)、kqueue(for bsd)、devpoll(for solaris)、iocp(for win32)、win32 窗口消息(for win32)事件引擎
  8、通用连接池库:高效的连接池基础类库,支持丰富的功能
  9、数据库客户端库:对原生的数据库客户端库进行了二次封装,使编程更为简易,功能更为丰富,支持连接池及连接池集群管理功能
  10、xml/json 流式解析库:区别于网上其它已有的 xml/json 解析库,acl 中的 xml/json 解析库采用有限状态机方式解析数据,处理方式更为灵活
  11、网络协程库:该库将阻塞 IO 模式在底层通过上下文切换和事件触发方式转变为非阻塞模式,从而方便程序员快速编写高并发、高性能的网络服务
  
  示例:
  1、lib_acl/samples: 该目录下有大量的基于 lib_acl C 库的示例
  2、lib_protocol/samples: 该目录下有大量的基于 lib_protocol C 库的示例
  3、lib_acl_cpp/samples: 该目录下有大量的基于 lib_acl_cpp C++ 库的示例
  4、lib_fiber/samples:该目录下有大量的基于协程的网络客户端/服务端示例
  
  应用:
  1、app/redis_tools: 该目录下为 redis 集群管理、监控及智能创建工具
  2、app/wizard:用来自动生成 acl 服务器框架的向导程序
  3、app/master_dispatch:用于管理和分发客户端连接的服务程序

  4、app/gid:用来产生全局唯一整型>  5、app/wizard_demo:为一些服务器测试程序
  
  一、基础 C 库:lib_acl
  .新特性:acl_threads_server.c 在 alone 模式下运行时,释放全局分配的动态对象,以便于用户使用 valgrind 查找内存问题
  .新特性:acl_read_wait.c 中的读超时重新使用 epoll 来判断,为防止 epoll 句柄被异外关闭,内部增加了重新打开 epoll 句柄的功能
  .新特性:acl_xml_parse.c/acl_xml2_parse.c 当输入为 NULL 时返回 ""
  .新特性:在 acl_vstream.c 的 acl_vstream_fdopen 时针对带有读写超时的 socket 的设置为非阻塞模式,这样代码逻辑更为清晰
  .新特性:acl_sys_socket.c 中的 SOCKET IO 过程允许被 HOOK,这样 acl_vstream.c 中的 acl_vstream_fdopen 在创建 SOCKET 流对象时允许使用被 HOOK 的函数
  .新特性:增加原子操作 acl_atomic.c, 无锁队列 acl_yqueue.c, acl_ypipe.c
  .新特性:增加 acl_mbox.c 用于线程之间的单向通信,内部使用了无锁队列方式效率更高
  .新特性:json 解析器支持 double 数据元素
  
  .问题修复:acl_sys_socket.c 中函数 acl_socket_write 修改了写超时的问题
  .问题修复:acl_sys_file.c 中的函数 acl_file_open 当以 O_APPEND 方式打开文件时, 文件指针没有指向文件尾部
  .问题修复:events_kernel.c 中的 stream_on_close 当 fdp == NULL 时直接返回
  .问题修复:events_epoll_thr.c 中的 event_enable_read 函数里,解锁调用过程 THREAD_UNLOCK 需要 epoll_ctl 调用之后,以免主线程和子线程同时操作同一对象
  .问题修复:acl_vstream.c 中的 acl_vstream_writevn 函数数据指针偏移有问题,导致写入的数据量计数错误
  .问题修复:events.c 中的函数 event_thr_prepare/event_prepare 中,如果当 ACL_VSTREAM_BFRD_CNT 及 read_ready 两个条件同时满足时,ACL_VSTREAM_BFRD_CNT 满足条件如果放置在 read_ready 前面,会造成 read_ready 被提醒清除,因此,需要把 read_ready 条件放置在前面
  .问题修复:acl_json_parse.c 中,在解析 JSON 过程中需要设置叶节点标志
  
  .性能:events_epoll_thr.c 的 event_enable_read 函数中,通过设置/清除标志位 EVENT_FDTABLE_FLAG_FIRE 来达到减少 epoll_ctl 的调用次数,从而提高事件处理性能
  
  二、lib_protocol 库
  .特性:http_hdr_res.c 中的函数 http_hdr_res_parse 取消了对 http_status 的检查,以便于应用使用自定义状态码
  
  三、lib_acl_cpp 库
  .新特性:xml/xml1/xml2 在进行对象构造时允许初始化 dbuf 的参数
  .新特性:http_header 类中的方法 set_url 增加参数 encoding,该参数决定是否对出现于 url 中的参数进行 url 编码
  .新特性:dbuf_guard 类将容纳 dbuf_obj 的数组封装在链表中,以免该数组过大
  .新特性:xml/xml1/xml2 类中的方法 update 允许返回剩余的 xml 数据
  .新特性:json 增加对 double 类型的支持
  .新特性:mime 类增加两个方法 get_plain_body/get_html_body 便于提取不同类型的
  .新特性:Makefile 添加条件编译选项:允许在编译时以 make polarssl=on 方式将 POLARSSL 编译进去
  
  .问题修复:thread 类中,在创建线程后对 thread_id_ 赋值时,可能会因为线程创建足够快且用户提前释放了线程对象而造成内存非法访问
  .问题修复:http 模块设置的读超时与 stream 的读超时冲突
  .问题修复:http_request 类的get_body方法中,对象 ps 为局部变量,出作用域后依然被使用而导致崩溃
  .问题修复:string 类应该只检查空指针,而不应检查空串
  .问题修复:mime::body_node 取正文有误
  .问题修复:json_node::set_text 判断节点是否为叶节点的方法有误
  
  四、参考链接:
  oschina-git:https://git.oschina.net/zsxxsz/acl
  github: https://github.com/zhengshuxin/acl.git
  sourceforge:http://sourceforge.net/projects/acl/

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-291824-1-1.html 上篇帖子: Jackson 2.7.7 发布,高性能 JSON 处理 下篇帖子: LinuxConsole 2.5 发布,采用Linux内核4.1版本
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表