91
·桂广网技专栏·《有线电视技术》  2019年第6期  总第354期
CA 系统中的应用
刘巧艳  陆嘉程  冯燕强  广西广播电视信息网络股份有限公司
摘要:本文将OpenResty(Nginx+Lua)架构引入到双向CA 系统设计中,有效提高了CA 系统高并发处理能力,解决了目前CA 系统面临的授权效率低的问题。实验结果表明,基于OpenResty 架构的双向CA 系统平均响应时间低于秒级,系统平均QPS 值可达到10万量级,系统具有良好的并发处理能力,能满足数字电视用户对于授权速度的要求。
关键词:OpenResty  Nginx  高并发  双向CA
1  引言
1.1  CA 系统
传统数字电视条件接收系统(CAS)都是基于单向网络设计,CA 前端无法感知机顶盒的开机状态和授权情况,只能采用重复轮播的方式来发送授权。因此授权信息会占用单向网络中每个节目流的带宽,同时授权效率较低。广西广电网络公司基于公司的双向网络已经基本普及的现状,充分利用双向网络优势,自主研发了最新一代CA 系统 ——桂创双向CA 系统(以下简称为CA 系统)。
nginx和网关怎么配合使用
在CA 系统中,机顶盒从CA 前端获取授权的过程遵循HTTP 协议,可简单理解为机顶盒向CA 前端发送HTTP POST 请求包,CA 前端解析POST 请求包并从CA 数据库取出相应的请求数据,将请求数据构造成HTTP 响应包发送回机顶盒,机顶盒解析响应包数据并更新机顶盒授权记录的过程。
当大量机顶盒同时向CA 前端发起更新授权信息的HTTP 请求时,CA 前端可能要面临高达10k 以上的高并
发处理问题。因此,如何解决CA 前端要面临的高并发处理问题以提高系统性能,成为CA 系统设计的关键。
1.2  Nginx
最初的Web 服务器如Apache,采用的是fork and run 的模式,对每个到来的连接,创建一个进程去处理,处理完成后进程退出。此模式的优点是编程实现简单,缺点是并发处理能力不足。为应对高并发处理,以Nginx 为代表的异步处理方式应运而生。Nginx
是一款高性能、高稳定性和高扩展性的轻量级TCP、UDP、HTTP、反向代理和邮件代理服务器。Nginx 运行效率高,系统资源消耗低,使用操作系统提供的异步I/O 调用可以无阻塞地处理成千上万个并发请求。
Nginx 基于模块化架构设计,模块化架构决定了Nginx 的高度扩展性,可以使用C/C++语言编写任意的功能模块来增强它的功能。但使用C/C++实现Nginx 模块对开发者的要求比较高,且开发者必须要遵循Nginx 的开发规范,了解工作原理和内部处理流
程,熟悉各种数据结构和函数,掌握Nginx 进程、事件等运行机制才能开发出一个较为完善的模块。由于C/C++静态编译语言特性,开发周期长、成本高,很难快速迭代。
1.3  OpenResty
OpenResty 在其上的定义是:OpenResty 是一个基于Nginx 与Lua 的高性能Web 平台,其内部集成了大量精良的Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态Web 应用、Web 服务和动态网关。
OpenResty 通过汇聚各种设计精良的Nginx 模块,从而将Nginx 有效地变成一个强大的通用Web 应用平台。这样,Web 开发人员和系统工程师可以使用Lua 脚本语言调动Nginx 支持的各种C 以及Lua 模块,直接实现复杂的HTTP/TCP/UDP 业务逻辑,快速构造出足以胜任10k 乃至1000k 以上单机并发连接的高性能Web 应用系统。最新的OpenResty 基于Lua5.1/LuaJIT,充分利用了Lua 内建的协程特性,可以
92
《有线电视技术》  2019年第6期  总第354期
·桂广网技专栏·
无阻塞地处理并发连接,而且代码不需要编译,可以就地修改脚本并运行,简化了开发流程,加快了开发和调试的速度,同时也缩短了开发周期。
2  系统架构和流程
2.1  系统架构
CA 系统组成主要包括机顶盒CA 库和CA 前端两部分。其中CA 前端包括反向代理模块、应用处理模块、数据库模块。根据CA 系统设计要求及各种技术特点,选择Nginx 技术实现系统的反向代理和负载均衡,选择Redis 内存数据库实现对数据库数据的高速读写。基于OpenResty 可以无阻塞地处理高并发连接,对HTTP 客户端请求,甚至于对远程后端诸如MySQL、PostgreSQL、Memcached、Redis 等都进行一致的高性能响应,且代码不需要编译,具有可以就地修改脚本并运行的特性,将OpenResty 架构引入到CA 系统设计中,以解决CA 系统目前面临的高并发连接问题。双向CA 系统架
构如图1所示。
2.2  系统流程
为提高CA 系统授权效率,CA 前端与机顶盒通过以下三种方式实现信息交互:当CA 前端有新授权时,在线机顶盒能立即从CA 前端获取新授权信息;每次机顶盒重启可从CA 前端同步一次授权信息;可通过按下遥控器上获取授权的功能键从CA 前端同步一次授权信息。
机顶盒从CA 前端获取授权的过程遵循HTTP 协议,其过程可理解为机顶盒CA 模块通过双向网络向CA 前端Nginx 反向代理模块发送HTTP POST 请求包,Nginx 反向代理模块将请求包转发至后端Nginx+Lua 模块,Nginx+Lua 模块解析POST 请求包并在Redis 数据库中检索并取出相应的数据返回给机顶盒,机顶盒CA 模块解析数据并更新机顶盒授权记录。
3  高并发处理模块设计
3.1  开发环境
系统开发环境如表1所示。
3.2  实现
开发OpenResty 应用主要包括两方面的工作,分别是编写Nginx 配置文件和编写Lua 代码,前者决定了Lua 代码运行的位置和时机,后者决定了具体的功能实现。使用OpenResty 开发应用基本步骤如下。
确定对外服务的端口,也就是定义Nginx 的server;确定对外服务的URI,也就是定义Nginx 的location;确定执行业务逻辑的一个或多个具体阶段,如rewrite/access/content 等;在location 里使用ngx_lua 指令,配置基本参数和要执行的脚本;根据需求编写一个或多个Lua 脚本,实现业务;调试、测试,最后部署上线运行。
(1)Nginx 配置文件
Nginx 配置文件是Nginx 的核心,其确定了Nginx 的基本运行环境和功能模块。Nginx 近80%的功能都是提供HTTP 服务,所以HTTP 的配置最复杂。图2给出了系统Nginx HTTP 部分配置文件。
(2)Lua 代码
Lua 语言是一种轻量小巧的动态脚本语言,其设计的目标是为了能够嵌入到其他应用程序里,为应用程序提供脚本化的扩展和定制功能。Lua 代码的执行效率非常高,速度只比C 语言的实现低大约10%到20%。Lua 与C/C++有非常好的互操作性,可以很容易地嵌入C/C++程序并调用宿主函数,从而轻松地扩展功能。getauth.lua 脚本文件实现了从CA 系统获取授权的功能。
4  系统性能测试
4.1  测试环境
使用WRK 作为压力测试工具,以模拟大量机顶盒向CA 前端发起更
图1  双向CA 系统架构图
表1  系统开发环境
操作系统CentOS Linux release 7.2.1511 (Core)应用程序
OpenResty(Nginx+Lua)、Redis
93
·桂广网技专栏·《有线电视技术》  2019年第6期  总第354期
图3  测试环境系统连接图
图2  Nginx HTTP 配置文件
新授权信息的HTTP 请求,对CA 系统进行HTTP 压力测试。测试环境系统连接如图3所示,其中CA 前端由一台Nginx 反向代理服务器、3台应用处理服务器(使用Nginx+Lua 方式)、一台Redis 数据库服务器组成。
4.2  测试系统配置
测试系统硬件配置如表2所示。
4.3  测试结果
使用WRK 作为压力测试工具对CA 系统进行HTTP 压力测试。测试的目标是估算出系统每秒处理完成请求数(QPS),以评估系统的性能。
在保证系统连接错误数相对较少的前提下,对系统开启线程数量、系统建立并保持TCP 连接数量分别以逐步递增方式测试确定其数值。经
过多次反复测试,在确定压测参数后对系统分别进行3次压测,测试时间均为3s。CA 系统平均响应时间为355.33ms,平均每秒处理完成请求数(QPS)为109731.71个/s。
压测结果显示:CA 系统平均响应时间低于秒级,系统平均QPS 值可达到10万量级。基于OpenResty 架构的CA 系统具有良好的并发处理能力,能满足当前规模的双向用户对于授权速度的要求。
5  结语
将OpenResty(Nginx+Lua)架构引入到广西桂创双向CA 系统设计中,可有效提高CA 系统高并发处理能力,解决了目前CA 系统面临的授权效率低的问题。
参考文献
[1]罗剑锋. Nginx 完全开发指南:使用C、C++和OpenResty[M].北京:电子工业出版社,2017:584-585.CATV
表2  测试系统硬件配置表
名称
型号技术参数
Nginx+Lua 服务器DELL R430CPU:Intel Xeon E5-2630 v3 2.4GHz,20M,双核内存:4×16GB RDIMM,2133MT/s,双列,x4带宽Nginx 服务器DELL R430CPU:Intel Xeon E5-2630 v3 2.4GHz,20M,双核内存:4×16GB RDIMM,2133MT/s,双列,x4带宽Redis 服务器DELL R430CPU:Intel Xeon E5-2630 v3 2.4GHz,20M,双核内存:4×32GB RDIMM,2133MT/s,双列,x4带宽WRK 服务器
DELL R430
CPU:Intel Xeon E5-2630 v3 2.4GHz,20M,双核内存:4×32GB RDIMM,2133MT/s,双列,x4带宽

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。