acl 服务器框架的几种服务器模型(进程模型,多线程模型,非阻塞模型,协程模型,触发器模型,UDP通信模型)中,使用比较多的是多线程模型、协程模块及非阻塞模型,这三种模型可以配置成启动多个进程实例(即成为:多进程多线程、多进程多协程及多进程非阻塞),但在实际应用中因为系统 TCP 连接分配的不均匀性,会导致每个进程实例的 TCP 连接数极不均匀甚至相差很大的问题(便出现了有的进程“撑死”,有的进程“饿死“的现象),acl 服务器框架提供了一个 TCP 连接分配器,该分配器负责接收外来 TCP 连接,然后将该 TCP 连接的文件句柄通过 UNIX 域套接字”平均传递给“后端的每一个子进程,从而保证了应用服务器进程池中的每个进程实例都能获得相等数量的 TCP 连接,从而达到负载均衡的目的。
如上图所示,整个网络连接处理过程如下:
一、在 acl_master 服务器框架下启动两个服务:TCP连接分配器和应用服务进程
二、TCP 连接分配器监听两个地址:一个是网络地址(如:192.168.188.1:80)和一个本机的 UNIX 域套接字(如:/opt/acl/var/private/dispatch.sock)
注:acl 服务器框架支持同时监听多个网络地址或 UNIX 域套口地址,参见:使用 acl 服务器框架编写监听多个地址的服务器程序
三、应用服务的每个进程通过该 UNIX 域套接口连接 TCP 连接分配器:
1、通过该连接向TCP连接分配器报告自己当前的 TCP 连接数
2、在该UNIX套接口接收TCP连接分配器发送的客户端TCP连接的套接字句柄
四、客户端通过网络连接 TCP 连接分配器监听的网络地址
五、TCP 连接分配器从后端进程池中选取一个连接数最少的进程,并通过与该进程的 UNIX 套接字将客户端的 TCP 连接句柄传递给该进程
六、后端获得 TCP 连接分配器传递来的 TCP 连接句柄,从而与前端客户端建立联系,开始处理客户端的请求。
通过以上处理流程,就可以保证客户端连接可以均匀地分配给后端服务进程池中的每一个进程实例,这样,每个进程实例占用的系统资源(如:CPU、内存、IO 等)就相对比较均匀。
在 UNIX/LINUX 平台下,通过 UNIX 域套接字传递描述字过程是由内核完成的,应用层只需负责相关的系统 API 调用即可,如何使用系统 API 传递描述字可以参考 acl 库中的 lib_acl/src/stdlib/sys/unix/acl_transfer_fd.c 源文件。
另外,上面所提的 TCP 连接分配器是使用 acl 服务器框架中的非阻塞服务模型编写的一个服务器程序,具体实现在 app/master_dispatch/server 目录下;应用服务器程序可以使用 acl 服务器框架中的线程池模型或非阻塞模型编写。
在部署时,需要将 TCP 连接分配器(app/master_dispatch/server/master_dispatch) 及用户自己写的服务器程序拷贝到执行目录下,在应用自己的服务器程序中需要将配置文件中的域接口连接地址打开(对于线程池模型需要打开 ioctl_dispatch_addr 配置项,对于非阻塞模型需要打开 aio_dispatch_addr 配置项)
参考:
3、使用 acl 的生成向导快速创建一个C++ WEB 服务器
下载:
acl 库下载:https://sourceforge.net/projects/acl/
svn: svn://svn.code.sf.net/p/acl/code/
github:https://github.com/acl-dev/acl
QQ 群:242722074
国内镜像:http://git.oschina.net/acl-dev/acl
微博:http://weibo.com/zsxxsz/
相关推荐
ACL在IP网络中的应用
标准acl应用、 扩展acl应用、 命名acl 应用
acl 工程是一个跨平台(支持LINUX,WIN32,Solaris,MacOS,FreeBSD)的网络通信库及服务器编程框架,同时提供更多的实用功能库。通过该库,用户可以非常容易地编写支持多种模式(多线程、多进程、非阻塞、触发器、...
c语言基础 acl框架库是一个C语言网络框架库,主要包含:服务器开发框架、同步异步网络通讯、常用数据结构、进程池线程池、流式xmljson解析器、httpping应用协议等内容.zip
acl 工程是一个跨平台(支持LINUX,WIN32,Solaris,MacOS,FreeBSD)的网络通信库及服务器编程框架,同时提供更多的实用功能库。通过该库,用户可以非常容易地编写支持多种模式(多线程、多进程、非阻塞、触发器、...
02-负载均衡命令参考 03-虚拟化技术命令参考 04-接口管理命令参考 05-二层技术-以太网交换命令参考 06-三层技术-IP业务命令参考 07-三层技术-IP路由命令参考 08-ACL和QoS命令参考 09-安全命令参考 10-可靠性命令参考...
Oracle RAC提供两种方式实现负载均衡,第一种是纯技术手段,即在用户连接时,根据系统当前的负载情况决定由哪个节点处理用户请求;第二种是面向业务,人为的把应用切分成很多service,通过某个service过来的连接请求...
acl 工程是一个跨平台(支持LINUX,WIN32,Solaris,MacOS,FreeBSD)的网络通信库及服务器编程框架,同时提供更多的实用功能库。通过该库,用户可以非常容易地编写支持多种模式(多线程、多进程、非阻塞、触发器、...
使用动态端口固定化原则和动态管理IP固定化原则,并据此配置服务器接入交换机ACL (访问控制列表),并将针对于每个服务器的ACL应用于服务器连接的交换机端口,对服务器进行点防护.在服务器防火墙规则禁用的情况下,...
3、应用场景:使用基本ACL限制公司网络访问 4、特点:Word文档提供了实验的详细过程,包括每一步骤的操作命令和截图,并给出了实验的topo文件(包括配置信息) 5、适用人群:网络系统的建设与运维 6、使用说明:重点...
05-使用多进程完成http服务器.py
本实验使用基本ACL限制公司网络访问,三层交换机的访问策略主要是通过ACL访问控制列表对不同VLAN的IP地址段进行流量匹配控制。
常见的访问控制列表种类有:IP标准ACL、IP扩展ACL、IPX 标准ACL、IPX 扩展ACL、48 位MAC 地址ACL 和协议ACL 等等。IP相关的访问控制列表主要分为以下几类: ⑴ 标准IP访问控制列表 标准IP访问控制列表匹配IP包中的...
acl 框架库是一个 C 库,主要包含:服务器开发框架、同步/异步网络通讯、常用数据结构、进程池/线程池、流式 xml/json 解析器、http/ping 应用协议等内容。 acl 包括以下丰富的常用函数库: 1、常见网络应用库:SMTP...
acl 工程是一个跨平台(支持LINUX,WIN32,Solaris,MacOS,FreeBSD)的网络通信库及服务器编程框架,同时提供更多的实用功能库。通过该库,用户可以非常容易地编写支持多种模式(多线程、多进程、非阻塞、触发器、...
acl 工程是一个跨平台(支持LINUX,WIN32,Solaris,MacOS,FreeBSD)的网络通信库及服务器编程框架,同时提供更多的实用功能库。通过该库,用户可以非常容易地编写支持多种模式(多线程、多进程、非阻塞、触发器、...
华为路由器交换ACL的应用与经验总结.pdf华为路由器交换ACL的应用与经验总结.pdf华为路由器交换ACL的应用与经验总结.pdf华为路由器交换ACL的应用与经验总结.pdf华为路由器交换ACL的应用与经验总结.pdf华为路由器交换...
各类ACL应用的业务模块对命中/未命中ACL的处理机制是各不相同的。 例如,在流策略中应用ACL时,如果ACL中存在规则但报文未匹配上,该报文仍可以正常通过;但在Telnet中应用ACL,这种情况下,该报文就无法正常通过了...
——文章均为WORD文档,下载后可直接编辑使用亦可打印—— 摘要:ACL作为热门的网络技术之一,被广泛应用于网络管理领域中。文章结合企业对网络的常用访问控制需求,并利用思科PacketTracer仿真,模拟了ACL在网络...