选自《交易技术前沿》第46期 数字化转型专刊
郭翔/ 兴业证券股份有限公司
邮箱:guoxiang82@xyzq.com.cn
姚渔衡/ 兴业证券股份有限公司
邮箱:yaoyuheng@xyzq.com.cn
付益明/ 兴业证券股份有限公司
邮箱:fuyiming@xyzq.com.cn
随着云计算、大数据、人工智能、区块链等为代表的金融科技的发展,金融机构也纷纷通过引入开源软件来重塑自身信息系统的服务能力。兴业证券致力于发展金融科技,提速“数字基建”,推进基础设施的“数智化”转型,Redis作为一种主流的开源缓存中间件,在我司的“数智化”的过程中得到了广泛认可,发挥着巨大作用。但在Redis软件的规范管理、运维管理、全生命周期中,还存在着许多空白和不足。针对Redis在我司的应用场景,数据库团队提出相应的管理和使用规范,云化资源,引入开源项目CacheCloud,建设一套覆盖Redis全生命周期管理运维平台,实现集约化,精细化,专业化管理,从而降本增效,提升服务质量。
Redis作为一款使用ANSI C编写的开源、包含多种数据结构、支持网络、基于内存、可选持久性的键值对存储数据库,具有高性能、高可用、高扩展等特性,长年位居DB-engines 排行榜前十。Redis在业界得到如此推崇,在于它解决了业务环节的真正痛点:理解并支持业务所需的数据结构,提升软件开发效率。 近些年,在金融科技的发展浪潮中,开源技术其承担的重要性已不言而喻。Redis作为一款主流的开源缓存中间件,已成为“数字基建”不可或缺的夯石。在兴业证券,金融科技的各项目团队使用Redis非常普遍,用它来实现缓存热点数据,发布订阅、排行榜等通用场景。与此同时,Redis的运维管理也分布在各项目团队中,而项目组人员大多擅长应用Redis,而缺少对Redis的专业化运维能力。本着集约化、精细化、专业化的管理目标,数据库团队对整个公司的Redis使用进行了收敛管理。同时面对Redis规模不断扩大,运维成本日益增高,我们也亟需建设配套的云管平台来解放人力,提高效率。通过前期调研选型,我们选择了开源产品CacheCloud作为我司的一站式全生命周期Redis云管理平台。CacheCloud支持Redis多种架构(Standalone、Sentinel、Cluster)高效管理,能够有效降低大规模Redis运维成本,提升资源管控能力和利用率。
在业务发展早期,Redis使用和管理都集中在各项目团队中,这种方式能够满足项目组简单灵活的需要。但随着Redis自身的功能加强,使用的规模数量越来越大、使用的业务场景越来越重要,这种松散管理存在的人工误操作,问题故障定位难和重复采坑的问题开始显现,直接会影响到系统的稳定性,制约业务的高速发展。同时,伴随着我司“数字基建”的进程以及基础设施的“数智化”逐步转型,Redis作为基础设施软件,被提上统一管理的服务目录。基于此,数据库团队对我司的Redis使用进行收敛管理,在这个过程中也遇到了很多问题和挑战。具体如下:2. 服务规范不统一,接入成本高(沟通,资源,运维等);6. 虚拟机部署性能不足,物理服务器硬件型号多样 ;7. Redis共用混乱,key接入无管控,找不到负责人。为解决上述问题,实现Redis全生命周期管理。数据库团队通过以下步骤逐步实现Redis集约化、精细化和专业化的管理目标:首先,制定内部基线并统一Redis交付;其次,结合业务场景和行业实践,制定并发布开发设计规范,便于项目组规范使用Redis;再者,制定流程进行统一管控,贯通Redis申请、交付、运维、下线等环节,达成管理闭环;最后,调研选型Redis云管理平台,引入开源项目CacheCloud,经过二次开发,建设成为我司自主可控的缓存云管平台,为Redis私有云管理提供落地保障。下面将逐一介绍我们的管理实践过程。数据库团队参照SRE运维模式,明确Redis管理的工作职责:以Redis稳定运行为核心目标,负责基线、可用性、时延、性能、变更、监控、备份、应急响应和容量管理等相关的工作。1、评审:在项目建设阶段,参与技术架构方案评审,从专业角度提出Redis架构、版本、key设计、容量等方面意见。2、资源交付:根据确定好的技术架构,完成Redis资源交付。3、运行管理:在应用系统运行生命周期内,负责对Redis存活和各项性能指标进行监控,及时了解Redis的运行状态;负责Redis层面的各类应用变更管理;负责Redis的二线运维,提供专家排障服务。4、容量规划:掌握所负责服务Redis的容量上限,清楚地了解瓶颈点,当服务将触及容量阈值时,及时优化、分拆或者扩容等。5、备份恢复:根据业务系统服务质量指标,制定Redis持久化策略方案,定期对aof,rdb进行恢复性测试,保证快照备份的有效性、可用性和完整性。6、监控:对Redis存活和各项性能指标监控比如QPS、碎片率、命中率等,及时了解Redis的运行状态。7、安全:统一开启Redis auth模式,密码设置符合强密码要求,有效降低误操作和数据泄露的风险。8、性能优化:对Redis性能进行优化,包括存储方案改进、硬件资源优化、big key优化、容量倾斜优化等。9、自动化:建设Redis云管平台,包括Redis私有云搭建/迁移,统计监控、弹性伸缩、运维管理等。从稳定和效率上着眼,以管理和技术为抓手,我们开始建设Redis私有云的工作体系。在管理体系上,贴合公司已有的运维管理制度,变更、事件处置等规则,完善Redis相关的管理规范和标准;在技术体系上,嵌入公司的现有信息技术体系,建设Redis云管平台,以支持和实现上述的标准和规范。下面将从规范治理和平台建设两方面介绍我们的工作。(一)规范治理
数据库团队为实现上述管理目标,推进Redis标准化,实现云化服务能力。首先内控运维基线,再外管服务需求,最后通过流程串联Redis各生命周期环节,达到管理闭环。1、《Redis安全配置基线》包括OS安全策略,组件目录权限,准入版本、鉴权设置,密码策略等内容;2、《Redis安装配置基线》包括硬件资源(主机,网络,IO)配置标准,OS基线,Redis版本,部署架构,参数配置等内容;3、《Redis监控配置基线》除通用的OS监控,还包括Redis QPS、CPU、内存使用率,客户端连接数,集群状态等;4、《Redis使用紧急预案》是在哨兵、集群服务异常时对应的处理措施,包括CPU、内存升高、连接数打满,主从复制异常,集群故障等处置内容;5、《Redis开发使用规范》包括key名设计,value设计,命令使用,客户端使用等内容;6、《数据库运维管理规范》将Redis作为数据库一类,纳入数据库运维管理,内容包括兴业证券业务系统数据库种类、版本、架构;数据库申请、账号申请;数据库上线、下线等规范。(二)平台建设
通过平台承载规范、标准、基线、流程,不仅有助于减少人为、繁复的工作,更有助于降低误操作风险,同时以此推进平台的自助化,对外提供服务化的能力。数据库团队在接管Redis初期,同步开展平台的选型调研。基于自主可控,技术扩展和生命周期等考虑,我们遴选了两个开源项目CacheCloud和redis-manager并着重对其进行方案验证,通过各维度的对比(如表1),我们发现CacheCloud不仅提供更优秀的集中运维能力,还具备工单流程管理以及更丰富的功能模块,且生产案例应用广泛,因此选型为CacheCloud开源方案。
完成选型后,开展服务对接。为集成到我司现有基础设施服务和环境,我们对CacheCloud进行二次开发,第一期我们完成登录模块和告警模块的集成客户化:通过ITSM完成OA账户单点登录;通过微信公众号发送应用告警(如图1)。
(三)平台实践
在平台建设初期,我们开发测试环境部署了一套原型CacheCloud进行试用,并通过公司内部传播渠道如IT讲坛、运行例会、星播客、邮件等进行Redis流程规范的宣介,同时也培训平台的使用。实践表明,前期的宣介和培训工作非常重要,既能够迅速推行Redis开发设计规范、运维标准规范和CacheCloud服务接入规范,又能够快速提升大家Redis服务应用水平。在完成OA对接和告警接入后,平台已具备对外推广的条件,数据库团队会同业务团队和其他基础设施团队一起讨论确定了平台的开发、测试、生产环境的部署方案。最后,我们逐步经历非重要业务系统的小范围试点,再向重要业务系统推广的过程。现在数据库团队凭借此平台,可以做到少量人高效率高质量规范化地支撑我司的Redis缓存服务。下面,笔者将以Redis全生命周期行为顺序介绍平台的管理功能。1、用户和工单申请
Cachecloud具有用户管理模块,内容包括用户注册申请,用户请求审批,用户后台管理。平台用户类型有两种:普通用户和管理员,普通用户的访问权限仅限应用前台,管理员则可以访问应用前台和管理后台。应用前台主要是工单申请,监控统计,应用拓扑等前台客户端功能;管理后台主要是工单审批,应用运维,机器管理、配置管理等后台运维端功能(如图2)。在使用实践中,平台用户可以和我司组织架构人员一一对应,普通用户对应Redis使用需求者,比如开发,运维人员;管理员对应Redis服务管理者,比如DBA。普通用户在应用前台申请工单,管理员在管理后台审批工单,完成Redis服务环节的管理流程。此外,还有一个特殊的角色,CacheCloud平台二次开发人员,对应我司运维开发团队人员。

2、Redis交付
Redis交付是精细化管理的重要一环,一方面需要保障交付的Redis符合规范、服务器配置与Redis配置达到上线标准,另一方面又需要根据不同的业务场景与Redis类型架构定制特化的交付方式。我司的产品众多且变化频繁,几乎每天都有新Redis部署或者应用变更的需求,CacheCloud支持Redis官方三种架构(单例、哨兵、集群)高效管理,且可选多种版本,可配多参数模板。即保障效率、简化重复劳动又可以根据特定的交付需求输出交付品。
Redis交付流程:应用申请-应用审批-应用部署-应用交付

CacheCloud初期集中纳管一批服务器作为Redis资源池。为满足Redis高QPS、高性能的要求,建议资源池统一配置大内存,万兆网,固态硬盘的中高配服务器。新机器利用脚本进行初始化Redis标准环境后,在管理后台加入到机器管理。
(1)查看应用申请详情,如存储种类,是否测试、客户端机房信息、内存申请详情、Redis版本等,按照申请要求开通应用,可做适当调整;(2)填写应用基础信息,应用级别:S/A/B(默认)/c,重要性依次降低;(5)类型选型:RedisStandalone(单例模式,不建议生产使用),Sentinel+Redis(哨兵模式,建议生产使用),RedisCluster(集群模式,建议生产使用);(6)maxMemory:单个实例的内存,单位MB;(7)选择部署Redis机器及每台机器部署的实例数。机器信息分为四个部分:机器ip(代表所属机房),使用/总核数(使用率),使用/总内存(使用率)以及特殊说明。

4)确认应用部署成功后,回到后台-流程审批页面,点击“通过”,就此整个应用开通完成。交付给申请者对应ip/port/password,即完成Redis一键交付。
3、Redis运维
CacheCloud通过白屏化提高线上运维的规范性和自动化水平。除去性能监控、统计分析等查询功能,针对开发和DBA不同的运维需求,还存在应用变更和应用运维这两类运维场景。
2)应用变更:快速交付、数据清理,键值分析、扩容/缩容、修改应用配置、修改报警、应用下线等;CacheCloud平台提供完善的工单申请-审批流程。用户可以提交自己名下相关应用的工单申请,由管理员驳回/处理、通过后,一次完整的应用变更执行完毕。
3)应用运维:实例管理、高可用管理、应用拓扑诊断,统计分析等CacheCloud管理后台在应用运维中可查看应用列表,了解各应用的使用情况,如版本、类型、内存详细、碎片率等,并对应用进行一系列的管理操作。进入应用运维操作页面,可管理应用实例、查看应用机器列表,应用详情和审批列表,修改应用密码等一系列应用运维操作。
4、Redis下线
Redis下线可以认为是Redis运维中一个特殊应用变更,CacheCloud平台通过审批后,完成下线实施,销毁对应的Redis实例。下线变更申请的前提是已经符合《数据库运维管理规范》中关于数据库下线的要求,通过了线下评审。这里不再赘述。
此外,为稳定生产环境,结合自身运维实践,数据库团队同项目团队做如下规约:(1)CacheCloud平台集成了redis-cli,支持前台在线查询Redis数据,但是在生产环境使用的话,会存在查询权限、数据泄露、性能阻塞等风险。综合考虑,已在应用前台屏蔽此功能。(2)较之哨兵,集群架构具有更高的性能和更小的failover影响。项目组使用Redis时优先考虑集群架构并控制单个集群容量不要超过72G(9分片,每片8G)。小集群具有管理成本低,运维风险小的优势。(3)CacheCloud利用资源池化,可以支持Redis批量部署,高效运维。为了更好地支撑微服务架构,结合规约(2)建议独立服务模块使用独立的Redis存储,不建议多应用共用一个Redis存储资源。(4)基于内存做容量规划,综合考虑弹性buffer,COW(写时复制)和告警阈值,每台服务器可支撑的服务实例为0.5*mem/8G。后续可以完善此换算规则,形成Redis云服务计费方案,满足项目组精细预算的需求。(5)CacheCloud支持垂直伸缩和水平伸缩,功能说明如下:垂直伸缩:通过统一调整每个实例可用内存量做到垂直拓展,受限于机器物理内存资源。适用于所有redis类型应用。
水平伸缩:通过动态加减实例并在线迁移数据实现伸缩性。适用于redis-cluster应用,伸缩性最灵活但是速度最慢,操作风险较高且回退困难。
建议项目组前期做好业务容量评估,选择合适规模的拓扑分片并预留容量buffer。涉及必要的容量扩容时,推荐垂直扩容。综上,通过CacheCloud缓存云平台不仅落地我司数据库和Redis的相关规范而且完成Redis全生命周期管理。至此,Redis管理路程和缓存云实践已给大家介绍完毕。再回到文章开头列出的问题和挑战,不觉已一一攻破。通过统一建设资源池,解决了服务器硬件型号多样、应用和Redis混部的问题;发布运维管理规范,不同业务场景的分级管理得到明确,Redis服务接入流程得到统一;内控运维部署基线,统一部署版本,约束架构选型;最后,结合公司自身技术体系,通过一期二次开发建设Redis缓存云平台,提升自主可控,夯实规范落地,解决大规模运维管理效率问题,为公司各业务条线提供统一标准的缓存云服务。CacheCloud的二期开发计划将对接CMDB、ITSM和统一监控系统,完善基础资源管理、应用资源管理并实现流程整合。作为PaaS,让开发依赖平台的能力自助完成对基础组件的需求。三期计划基于公司的AIOPS实践,探索Redis智能运维,比如故障根因分析与自愈,告警服务自理,智能客服等。从运维管理水平的提升来看,此云平台的应用实践也可以做如下方向探索:1. 客户端融合方向:CacheCloud有针对jedis,lettuce等定制驱动(CacheCloud客户端)。若经过引入评估测试,项目组能规范使用这些客户端,平台管理即可覆盖APP至Redis的完整请求链,实现请求统计分析,链路跟踪甚至利用hystrix实现跨机房容灾高可用。2. IaaS与容器技术(k8s)结合方向:近年来容器技术的成熟和普及为弹性扩展提供了可行的解决方案,容器的使用会带来很多优势,比如更小的资源消耗、更高的资源利用率、更好的资源隔离性等,但性能层面需要更进一步测试。后续我们将继续深耕CacheCloud,提升公司Redis技术把控能力。未来,兴业证券将以“数智兴证”为愿景,通过科技与业务的超融合,推动集团管理手段、业务模式、发展理念的创新,促进全集团内的数智化转型,助力公司成为“金融+科技”型的一流证券金融集团。本公众号内容仅供参考。对任何因直接或间接使用本公众号内容而造成的损失,包括但不限于因有关内容不准确、不完整而导致的损失,本公众号不承担任何法律责任。如有问题请反馈至tech_support@sse.com.cn。
--------------------------
上海证券交易所为证券公司、基金管理公司等市场参与者及相关行业机构提供交易技术支持与服务,包括日常交易技术支持、技术交流研讨、市场调查反馈、证券信息技术知识库、测试等服务。