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

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

[复制链接]

尚未签到

发表于 2016-6-4 11:23:06 | 显示全部楼层 |阅读模式
欢迎加入运维网交流群:263444886>>> »   DSC0000.png
  acl 3.1.5 版本发布了,acl 是 one advanced C/C++ library 的简称,主要包括网络通信库以及服务器框架库等功能,支持 Linux/Windows/Solaris/FreeBsd/MacOS 平台;整个 acl 项目主要包含三个函数库:lib_acl(纯C开发的基础库,主要包含网络通信及服务器编程框架以及其它丰富的功能)、lib_protocol(包含 HTTP/PING/SMTP 通信协议的C语言实现)、lib_acl_cpp(基于 lib_acl 及 lib_protocol 两个C库,提供了更为强大的编程接口及丰富的功能类)。
  本次 acl 升级的主要内容有:线程池服务器模板在独立运行模式及框架运行模式保持一致,redis_builder 集群管理工具功能更为强大,邮件解析库性能提升;修改一些 BUG 问题,同时增加了一些功能点。
  
  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 解析库采用有限状态机方式解析数据,处理方式更为灵活
  
  示例:
  1、lib_acl/samples: 该目录下有大量的基于 lib_acl C 库的示例
  2、lib_protocol/samples: 该目录下有大量的基于 lib_protocol C 库的示例
  3、lib_acl_cpp/samples: 该目录下有大量的基于 lib_acl_cpp C++ 库的示例
  
  应用:
  1、app/redis_tools: 该目录下为 redis 集群管理、监控及智能创建工具
  2、app/wizard:用来自动生成 acl 服务器框架的向导程序
  3、app/master_dispatch:用于管理和分发客户端连接的服务程序

  4、app/gid:用来产生全局唯一整型>  5、app/wizard_demo:为一些服务器测试程序
  
  一、基础 C 库:lib_acl
  .新特性:增加函数 acl_check_socket 用来检查所给套接字是否为监听套接字
  .新特性:events_select.c/events_poll.c/events_kernel.c,内部自动判断是否为监听描述符,从而降低了事件模块与流模块之间以及其它模块之间的耦合度
  .新特性:acl_vstream.c,函数 acl_vstream_fdopen 会自动判断所给描述符是否为监听描述符,避免了用户输入的参数 fdtype 的非法性
  .新特性:acl_default_malloc.c,函数 acl_default_realloc 当输入的地址为 NULL,则自动切换至 acl_default_malloc 过程
  .新特性:acl_vstring.c 真正支持限定最大使用空间功能
  .新特性:acl_vstring.c 增加了 acl_vstring_mmap_alloc,用于支持以内存文件映射方式管理内存
  .新特性:acl_vstring.c 以内存映射文件方式管理内存同时支持 UNIX/WINDOWS
  .新特性:acl_xml/acl_xml2 增加函数接口,允许以文件流为创建 xml 节点的文本
  .新特性:acl_inet_listen.c 在创建监听描述符时支持使用 SO_REUSEPORT, TCP_FASTOPEN 以提升 TCP 的处理性能(此两个特性均需要内核支持,同时 TCP_FASTOPEN 还需要在编译 lib_acl.a 时定义预编译条件:USE_FASTOPEN)
  .新特性:acl_threads_server.c 服务器模板增加了几个接口
  .新特性:acl_threads_server.c 支持 WINDOWS 平台,同时支持 daemon 模式及独立运行模式
  
  .问题修复:acl_xml_parse.c/acl_xml2_parse.c/acl_xml_util.c/acl_xml2_util.c, 修复了当数据节点为 META, COMMENT, CDATA 时解析与创建 xml 对象时的 BUG
  .问题修复:acl_multi_server.c/acl_single_server.c/acl_trigger_server.c,在将监控监听套接口的读事件时,应该调用 acl_event_enable_listen,而不是调用
  .问题修复:acl_vstream.c 加强了 fp->read_cnt < 0 时的安全处理
  .问题修复:acl_threads_server.c 在 daemon 模式下当只监听一个端口时,控制服务器 acl_master 不会传递 -s 参数,应该 socket_count 值初始化为 1
  .问题修复:acl_vstream_net.c 中的函数 udp_read 应该设置 read_ready = 0, 否则当该 UDP 对象置入 event 事件循环时,会造成无用的事件触发
  .问题修复:acl_threads_server.c 中的函数 dispatch_receive 是通过调用 acl_read_fd 直接从套接字中读取数据的,此时应该将 conn->read_ready 标志位清0, 否则会再次引发读操作,同时将该套接字设为非阻塞模式,以免阻塞主线程
  .问题修复:acl_vstring.c 中没有针对 fd 进行初始化,这样当释放 ACL_VSTRING 对象时,会误判该对象创建在 mmap 上,从而会导致内存泄露
  .问题修复:acl_vstream.c 中针对 stdin, stdout, stderr 需要做特殊处理
  
  .性能:优化 acl_vstream.c 中 acl_vstream_read 函数的读性能, 同时兼顾大数据读取与小数据读取的性能问题
  
  二、lib_protocol 库
  .问题修复: http_hdr_req.c 中分析 url_part 有误
  
  三、lib_acl_cpp 库
  .新特性:mime.cpp, mime_head.cpp 支持更多的 Content-Type 类型
  .新特性:db_handle/db_mysql 类在进行查询前优先释放上次的查询结果,以免使用者忘记释放而造成内存泄露
  .新特性:增加类 db_guard 用于自动释放从数据库连接池中获取的连接对象
  .新特性:fstream 类中增加了方法 remove 用于删除文件
  .新特性:redis 库增加了出错日志输出,便于运行时进行信息调试
  .新特性:HttpServlet 类增加了请求/响应成员函数(req_/res_),以便于将读取 HTTP 请求数据体分离
  .新特性:xml/xml1/xml2 支持使用 dbuf_guard 会话内存池来创建临时对象, 从而提升了内存使用效率
  .新特性:string 类支持内存映射文件方式管理内存,从而可以支持更多的内存空间
  .新特性:session/redis_session/HttpSession 会话类增加功能接口
  .新特性:xml/xml1/xml2 增加方法,允许将输入流中的内容作为 xml 节点的文本内容, 这对于当文本内容非常大时比较有用
  .新特性:db/query 类增加了创建 sql 的接口 create
  .新特性:HttpServletRequest::getParameter 在查找参数时允许不区分大小写

  .新特性:queue_file::create 在产生唯一 >  .新特性:redis_command 类支持直接组装 redis 协议方式
  .新特性:redis_server 类增加接口 info 方便提取服务器配置信息
  .新特性:redis_command::run 中当发现 used_ > 0 时会强制调用 clear 来释放上次操作时临时创建的内存,以免用户反复使用该命令时忘记调用 clear
  
  .问题修复:db_mysql.cpp 中调用  __mysql_open 时如果出错记日志时应判断每个参数是否为 NULL
  .问题修复:connect_manager 类少两个设置函数 set_check_inter/set_idle_ttl
  .问题修复:charset_conv 类中的方法 update,当 m_addInvalid 为 false,应该过滤掉无效的字符
  .问题修复:zlib_stream 类判断剩余空间的方法应与 string 类匹配
  .问题修复:json_node::is_array 判断方式有问题
  .问题修复:redis_client_cluster 类中的 set_password 方法在设置集群中节点密码时,该方法的调用与添加集群节点的方法(set)与顺序相关,容易造成误操作导致密码设计无效
  .问题修复:json 类中的 reset 方法在重置 json 对象时,因为 json 的 C 库内部会重建 root 节点,所以需要以 json 类中重新指定 root 节点
  .问题修复:session::set_ttl 针对 redis 缓存时有问题,去掉了针对 sid_saved_ 的判断
  
  .性能:mime_state_parse.cpp 中的 mime_bound_body 函数优化了处理大邮件的性能
  .编译:使用预编译,优化 g++ 编译速度
  
  四、参考链接:
  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-226151-1-1.html 上篇帖子: Red Hat 修复 Samba 服务中的 Badlock 缺陷 下篇帖子: Ubuntu 16.04 将支持 Snap 包格式
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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