爱奇艺高可用高性能服务器编程架构实践

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