让餐厅放心的云服务-雅座CRM技术解密
【编者按】作为国内融资最为火爆的领域之一,企业级SaaS市场吸引了众多风投和创业者的关注。6月中旬,雅座正式对外宣布已获得数亿元人民币C 轮融资,由支付宝母公司蚂蚁金服领投,再次引爆了整个国内SaaS市场。目前,雅座累计为超过15000家餐饮门店提供精准营销服务,而基于用户交易和消 费行为的数据分析是精准营销的核心,如何快速处理海量数据,进行多维度、低延时的统计分析、数据挖掘,对系统性能和可伸缩性提出了更高的挑战。本文来自雅 座CTO对其CRM技术的解密分享。
以下为原文:
一. CRM云服务的系统瓶颈
雅座CRM历经9年的成长,累计为超过15000家餐饮门店提供精准营销服务,管理超过5000万会员数据,日交易流水超百万笔,年交易额达200亿以上。
雅座提供专业的企业级SaaS云服务,对系统的安全性、稳定性、可靠性要求极高,这是企业的基本诉求。同时,基于用户交易和消费行为的数据分析, 是精准营销的核心,如何快速处理海量数据,进行多维度、低延时的统计分析、数据挖掘,对系统性能和可伸缩性提出了更高的挑战。CRM的目标是数据营销,需 要提供各种纬度的灵活的查询分析。举例来说,餐厅一个简单的需求,希望根据消费时间、性别、消费金额筛选出目标客户,随着数据量增大,仅靠关系数据库分库 分表和索引优化已经难以满足企业的效率要求。高弹性、易扩展的大数据处理能力,在CRM云服务中日趋重要。
二. 雅座CRM系统架构
1. 目标客户金字塔模型
一个餐厅的辐射范围通常覆盖周围3公里,这个范围内的常客为餐厅贡献了80%以上的销售额。此外还有一些临时聚会,或手握超低价团购券的客人,这 些客人并不能为餐厅带来持续性消费,不断的打折、跳楼价甚至可能会损害餐厅的正常经营,餐厅表面看似人头攒动,但桌均消费大幅降低,服务员前厅后厨百米折 返跑,服务不断下降,最终导致把老顾客拒之门外。当餐厅经历表面的繁荣,发现营业额并无增长,试图提高价格时,图便宜的客人一呼而散,餐厅则难以为继。
因此,价格战永远不是一个好主意,管理好目标客户并带来持续性收入,才是一个健康的商业模式。雅座CRM通过用户消费行为分析,将目标客户锁定在 常客和忠诚客户,降低企业营销推广成本的同时,提高营销活动的响应率,为餐厅带来更高的利润空间。所有这些用户群体的标签分类,依赖离线分析 + 在线分析引擎完成,为餐厅提供更准确、更及时的营销决策支持。
2. 业务架构
业务上,用户通过POS消费的数据,上传到CRM云端,一系列的数据处理分析后,系统为不同的餐厅提供特定的营销活动,将微信、短信、APP做为营销出口,和消费者产生互动,增加消费粘性,为餐厅带来更多价值。
3. 技术架构
1)数据迁移
随着IaaS和PaaS技术成熟,国内涌现出一批质量较高的云主机提供商。雅座选择了其中的两家,将自有数据中心迁移到了云主机上。迁移前,雅座 的数据中心机柜紧张,原有机房扩容面临很大问题,一方面业务增长很快,数据中心扩容的需求日益急迫;另一方面,在线业务7x24小时不间断,无法停机维护 做系统迁移。运维部制定了在线增量数据迁移方案,把数据库、搜索引擎的数据挂到pgq上,启动pgq生产者,将变化的数据写入队列。同时将数据复制到云主 机上,复制完成后,启动pgq消费者,从队列读取变化的数据增量更新。
2)高可用性
一个数据中心内,消除数据库和应用服务的单点故障比较容易,但跨数据中心的高可用性,要考虑到网络拓扑、延时或中断、数据一致、处理效率等问题, 比较繁琐。我们建立双活数据中心,不同数据中心分担不同的业务。按照业务响应的优先级别划分为两类:交易相关的实时业务,不允许超过分钟级中断;CRM数 据分析相关的准实时业务,不允许超过小时级中断。主数据中心处理POS、微信、安卓终端等在线交易实时相关的业务,灾备数据中心处理CRM数据分析、定时 任务、日志分析、Storm等准实时业务,通过pgq 和流复制各数据中心保持两份完整的交易数据。当数据中心或网络出现异常时,每一个数据中心所需的业务数据基本完整,此时有两个选择:a) 由一个数据中心全面接管所有业务。 b) 数据不同步,但各数据中心均可正常使用,异常解决后,继续同步数据。按业务响应分级容灾,可以更合理的利用双活数据中心,根据不同的异常情况,自动或人工 做出响应。
3)数据同步秒级延时
雅座CRM的技术特点是数据处理手段多样化,为了满足灵活快速检索、统计分析、日常业务、读写分离等多种目的,交易数据会被同步到只读库、ES、 Storm、GreenPlum数据仓库,目前正在启动Hadoop离线处理。衡量交易系统性能的关键指标是TPS和吞吐量,当TPS不断提升时,每秒处 理的数据量也会大幅增加,数据同步的效率就尤为关键。通过压力测试和容量测试,可以计算出数据同步的效率是否符合要求。假设我们为10000家餐饮门店提 供服务,单店高峰时段每小时100单,那么系统高峰期的吞吐量指标设定在1000笔/秒。为了满足效率要求,并考虑容错机制和可扩展性,我们设计了基于 pgq的异步队列。Skytools是skype公司开发的一款基于Postgres的消息套件,在skype内部广泛使用,开发于2006年,2007 年开源Skytools Framework,至今一直在使用和维护,使用场景如下:
- 异步数据传输
- 数千队列和消费者
- 监控中心
Skytools包含三个组件:pgq、londiste、walmgr
pgq提供Python API,由异步处理机制去灵活调用。用于解决实时事务的异步批处理问题。
pgq由Producer、Ticker、Consumer组成,支持高可用部署。Producer将Events推送到Queue中,Ticker负责对批量Queue制定相应处理规则,Consumer从Queue中获取Events。
基于pgq,雅座CRM设计和实现了协同消费者模式,当系统超负荷时,一键式注册新的消费者,就可以实现多消费者协同处理,提升数据同步的效率。 同时,根据负载水平和批大小,数据延时可以由Ticker动态调整。通过压力测试,我们可以验证部署方案是否满足需要,调整线上消费者节点数量。目前,雅 座CRM可以做到多数据源同步秒级延时、水平扩展。
4)实时分析
目前雅座CRM核心数据量达到10亿级别,做为CRM云服务,灵活、高效的数据检索必不可少。一般来说,根据业务时间采用分库分表、历史数据迁移 的方案降低活跃数据量,提升查询效率。但CRM系统跨年、连锁跨门店查询的需求比较普遍,分库分表会在实现方案上增加较高的复杂度,同时无法满足多种纬度 的灵活查询,难以扩展。当分库分表后的数据量仍在一个较高的水平时,无法利用索引的全表扫描查询效率会大幅下降。
雅座CRM采用了Elasticsearch做为解决方案。Elasticsearch是一个基于Lucene的开源、分布式搜索框架,基本包含 所有所需的特性:分布式搜索、分布式索引、零配置、自动分片、索引自动负载、自动发现、多索引查询,restful风格接口。它支持插件机制,有丰富的插 件。比如和mongoDB、couchDB同步的river插件,分词插件,hadoop插件,脚本支持插件等。同时ES还是个准实时的搜索引擎,索引后 的数据可以实时搜索到。在ES的应用场景中,更多的是将其做为非结构化数据的存储,通过性能测试和实验,ES同样适用于结构化数据的存储和查询。结合ES 的分布式、分片、多索引联合查询的特性,雅座CRM将大数据量的随机查询效率提升了数十倍,达到秒级响应。
CRM的另一个技术特点是统计分析业务多,通过引入Storm流计算框架,将系统日志和pgq做为Storm数据源,结合业务特点,实现分级汇总的topology,我们将原有的T+1数据分析业务提升为实时计算,为企业提供更准确、及时的数据决策支持。
5)离线处理
离线处理主要是基于GreenPlum + 定时任务完成。Greenplum是基于postgresql的分布式数据库。其采用shared nothing架构(MPP),主机,操作系统,内存,存储都是自我控制的,不存在共享。主要由master host,segment host,interconnect三大部分组成。配合合理的分片策略和部署方案,GP的效率可以提升十倍以上。雅座CRM将复杂、难以拆分的SQL操作 移植到GP上,大数据量的统计分析效率得到了明显提升。
6)SOA服务化
系统越复杂,耦合越紧密,可维护性和水平扩展越困难。雅座CRM业务覆盖短信、微信、交易、数据分析、智能终端等多个子系统,对吞吐量、并发、稳 定性的要求很高。原有系统中,各业务系统紧密耦合是一个整体,已经很难满足水平扩展的要求。根据业务拆分系统,SOA服务化演变成系统升级的阶段性目标。 在SOA的实现上,雅座CRM选择了Dubbo,Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治 理方案。其核心部分包含:
远程通讯: 提供对基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式,比常规HTTP等短连接协议更快。
集群容错: 提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。
自动发现: 基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。
基础业务上,雅座CRM在Dubbo服务框架上做了分布式缓存同步机制,保证用户和权限及时刷新,为所有应用提供统一的用户服务;运维部署上,实现了跨机房就近调用、高可用、监控的目的,也为系统持续集成打下了更好的基础。
7)监控和预警
SaaS云服务对运维提出了更高的要求,因为雅座CRM系统服务的不仅是一个客户,而是成千上万的餐饮企业,系统每一次故障中断,都可能引起餐厅 的直接经济损失,进而损害雅座的品牌形象。在雅座,系统稳定性被定义为最高优先级,是公司业务的基石,要在问题潜伏期提早发现,尽早解决。在运维环节,雅 座自主开发和整合开源监控工具,7x24小时监控系统的各项性能指标,当性能指标超出伐值时,系统自动报警,通过短信、邮件及时通知运维中心,并做相应处 理。
三. SaaS云服务的感悟
SaaS的出现,改变的不仅是软件体系架构,更多是企业服务的思维方式。传统软件的商业模式中,我们提供的仅仅是应用程序,用户去做运维、使用和 学习,成本高、运维难、升级难、无服务、和用户无沟通是所有企业软件很难改变的现状。在传统软件模式下,软件开发商系统不断升级换代,但老用户却无法从中 受益。当用户出现系统问题或使用问题时,软件企业无法快速定位问题、解决问题。软件企业不敢面对客户,因为客户始终不满意,对系统不满意,对服务不满意, 用户在不断的抱怨中忍受软件系统带来的各种“灾难”。SaaS-软件即服务,为我们带来了新的思路,企业级市场中软件+服务缺一不可。软件的改变在云端, 随着快速迭代的开发模式,用户不断享受无感知的系统升级带来的红利,通过产品运营和服务体系,雅座将快速帮助餐饮企业解决各种问题,让企业用户用的放心、 满意。