vlambda博客
学习文章列表

【营领·智】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技术实现同城双活架构下的流量管控和切分

二、系统设计思路

【营领·智】GAP-Nginx技术实现同城双活架构下的流量管控和切分

请求来源:由外联通道到支付引擎的交易请求,规定在请求头中添加城市代码键值对;

负载均衡:搭建相同配置的多台GAP-Nginx服务器,实现系统的高可用;

分流策略:可通过修改配置文件实现服务设置的热更新替换。

【营领·智】GAP-Nginx技术实现同城双活架构下的流量管控和切分

三、探索与实践



要实现支付系统两地三中心的负载均衡和业务分发,需要搭建高可用的Nginx软负载服务,实现动静分离、负载均衡、反向代理等功能。本人在编写Nginx的配置文件时,发现默认的配置文件不能完整的支持判断相关的简单逻辑,不支持判断类型的表达式,动态配置缺乏灵活性。本人通过查阅相关资料,运用Lua脚本语言结合Nginx,使得Nginx开发更加灵活完善。

1.实现负载均衡

通过配置upstream定义一组服务器,可以通过参数配置各个后端服务器的权重、请求最大失败次数、失效时间以及设置备用机服务。实践配置如下:

【营领·智】GAP-Nginx技术实现同城双活架构下的流量管控和切分

1.设置虚拟主机

通过配置项http以及server块,设置路径匹配规则和转发过滤,实现根据请求头城市代码的请求分流。

2.日志记录

GAP-Nginx配置文件中可设置日志文件格式和日志记录内容,通过将请求转发的日志记录利用logrotate工具进行切割和压缩并存储在制定的路径下,便于今后的日志查询。


【营领·智】GAP-Nginx技术实现同城双活架构下的流量管控和切分

五、总结



基于GAP-Nginx技术可实现支付引擎中请求区域分流的业务需求,并能够实现流量控制、服务高可用、灾备服务等功能。在支付清算等诸多业务场景中都有可用的空间,今后在系统实际应用中发挥重要的作用。

作者简介





【营领·智】GAP-Nginx技术实现同城双活架构下的流量管控和切分

崔文旭,应用开发三部支付清算组,热爱生活,喜欢读书看剧和打乒乓球。


END

顾问:孙志斌  冉丁

总编:周璇  张吉  丁娜

 主编:王祎霂

 轮值主编:贾琳琳

审稿:武年华

编辑:苏思凡 杨赟




 

开心

运营说


■本文为开心运营说·第129期

转载 本号文章请联系我们。