【营领·智】GAP-Nginx技术实现同城双活架构下的流量管控和切分
文/支付清算组崔文旭
近年来,我国经济快速发展,交易活动日益频繁,行内系统不断升级,支付服务呈现多样化的发展趋势,这些变化也要求支付清算系统能够提供高效可靠的服务。负载均衡技术可以提高系统的可用性和可靠性,而负载均衡主要分为硬负载均衡和软负载均衡,其中硬负载均衡主要是指使用F5硬件设备作为负载均衡器,成本较高;软负载均衡主要包括LVS和Nginx。因此,运用Nginx技术实现支付清算系统的负载均衡可以极大的节省部署成本,提高系统的灵活性、可用性。智汇支付平台使用GAP-Nginx技术可以做到自定义控制双活架构系统下的流量管控和切分,达到负载均衡、主备切换以及系统高可用的服务能力。
一、技术介绍及项目背景
Nginx(engine X)是一个以高性能、高并发著称的HTTP服务器,它支持HTTP反向代理、TCP代理、负载均衡、HTTP缓存及Web开发等。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点开发的,其特点是占用内存小、并发能力强。该技术拥有最自由的2-clause BSD-like license许可证,在Web服务器领域得到了广泛的应用。
Nginx技术的特点主要包括:
(1)响应快
(2)扩展性高
(3)可靠性高
(4)内存占用低
(5)支持高并发,单机支持10万以上的并发连接
(6)支持热部署,可以在不间断服务的前提下,升级配置
(7)可扩展第三方模块多
二、系统设计思路
请求来源:由外联通道到支付引擎的交易请求,规定在请求头中添加城市代码键值对;
负载均衡:搭建相同配置的多台GAP-Nginx服务器,实现系统的高可用;
分流策略:可通过修改配置文件实现服务设置的热更新替换。
三、探索与实践
要实现支付系统两地三中心的负载均衡和业务分发,需要搭建高可用的Nginx软负载服务,实现动静分离、负载均衡、反向代理等功能。本人在编写Nginx的配置文件时,发现默认的配置文件不能完整的支持判断相关的简单逻辑,不支持判断类型的表达式,动态配置缺乏灵活性。本人通过查阅相关资料,运用Lua脚本语言结合Nginx,使得Nginx开发更加灵活完善。
1.实现负载均衡
通过配置upstream定义一组服务器,可以通过参数配置各个后端服务器的权重、请求最大失败次数、失效时间以及设置备用机服务。实践配置如下:
1.设置虚拟主机
通过配置项http以及server块,设置路径匹配规则和转发过滤,实现根据请求头城市代码的请求分流。
2.日志记录
在GAP-Nginx配置文件中可设置日志文件格式和日志记录内容,通过将请求转发的日志记录利用logrotate工具进行切割和压缩并存储在制定的路径下,便于今后的日志查询。
五、总结
基于GAP-Nginx技术可实现支付引擎中请求区域分流的业务需求,并能够实现流量控制、服务高可用、灾备服务等功能。在支付清算等诸多业务场景中都有可用的空间,今后在系统实际应用中发挥重要的作用。
作者简介
崔文旭,应用开发三部支付清算组,热爱生活,喜欢读书看剧和打乒乓球。
顾问:孙志斌 冉丁
总编:周璇 张吉 丁娜
主编:王祎霂
轮值主编:贾琳琳
审稿:武年华
编辑:苏思凡 杨赟
开心
运营说
■本文为开心运营说·第129期