爱奇艺高可用高性能服务器编程架构实践
2017.11
背景
• 对于高可靠、高可用框架的要求
• 1、应用服务的不间断性 :
• 1.1、服务程序可在线热升级
• 1.2、数据及配置可在线重新加载
• 2、应用服务可运维可监控 :
• 2.1、服务异常自动重启
• 2.2、服务异常自动报警
• 2.3、服务配置项一致性
• 2.4、服务进程统一管理
• 为什么需要高并发、高性能框架 ?
• 1、互联网尤其是移动互联网的快速蓬勃发展对服务端应用的压力与 日俱增
• 2、高性能、低延迟的业务需求对应用服务提出了更高的要求
• 3、内网中 RPC 通信、连接池的大量存在要求服务端支持大并发、高性能
Acl 服务器编程框架
内容分类 功能项
服务器模型 多进程服务模型、多线程服务模型、多线程服务模型、非阻塞服务模型、触发器服务模型、网络协程服务模型
安全运行机制 严格的用户权限限制,防止越权操作;IP 地址访问控制,防止非法地址访问
配置驱动方式 独立的服务配置文件,丰富的配置项:进程数、线程数、防问控制、监听地址、进程预启动等均由配置项决定
服务监听 支持绑定 TCP 套接口、UDP 套接口以及 UNIX 域套接口,支持同一进程同时绑定多个地址及端口
服务管理 支持应用服务在线热升级,升级过程不会中断服务;提供 WEB 管理接口及管理工具,方便远程管理
运维监控 提供应用服务进程管理模块,在线监控各个应用服务的存活状态,对异常崩溃的服务实时报警
acl_ master 服务管理进程控制管理;开发环境可以手工单独运行
运行方式 生产环境由
开发调试 用服务器生成向导直接生成服务器程序框架;用 valgrind 检查服务程序的内存问题
Acl 服务器框架模型
应用层 DNS WEB DB CDN GAME MAIL CHAT …
服务层 Processes Threads Fibers Triggers Aio Udp master
协议层 http smtp icmp memcache redis beanstalk mysql postgressql sqlite
通信层 net events(select/ poll/epoll/ kqueue/iocp/wmsg) stream aio ssl
json base64
基础层 memory data structure configure log thread fiber coder xml uucode
mime QP
T Poll TQueue
charset url
OS API …
适配层
Linux FreeBSD M