【案例】恒丰银行——大数据实时流处理平台

数据猿导读

恒丰银行针对商业银行在风险、营销、科技运维、内控管理方面对实时数据处理能力的需求,基于实时流处理相关技术,构建全行统一的实时流处理平台,有力支撑了相关应用的建设,取得了良好的经济效益和社会效益。

本篇案例为数据猿推出的大型“金融大数据主题策划”活动(查看详情)第一部分的系列案例/征文;感谢 恒丰银行 的投递

作为整体活动的第二部分,2017年6月29日,由数据猿主办,上海金融行业信息协会、互联网普惠金融研究院联合主办,中国信息通信研究院、大数据发展促进委员会、上海大数据联盟、首席数据官联盟、中国大数据技术与应用联盟协办的《「数据猿·超声波」之金融科技·商业价值探索高峰论坛》还将在上海隆重举办【论坛详情】【上届回顾(点击阅读原文查看)】

在论坛现场,也将颁发“技术创新奖”、“应用创新奖”、“最佳实践奖”、“优秀案例奖”四大类案例奖

来源:数据猿丨投递:恒丰银行

本文长度为7800字,建议阅读15分钟

恒丰银行于2016年1月完成了传统数据仓库向大数据平台数据仓库的迁移,以新的数据仓库平台为基础,结合行内的通用文件传输平台、统一调度平台,规范了源数据系统的数据报送,梳理构建了新的数据模型,大数据平台解决了传统数仓在批量数据处理能力的不足,在相关任务上体验到了从数小时到十几分钟的提升。

大数据平台解决了大数据特征中四个V的大数据量(Volume)的处理,我们还需要引入实时处理技术能覆盖数据多样性(Variety),高速处理数据(Velocity),从而挖掘更大的价值(Value)。

数据的价值随着时间的流逝而降低,如何在技术上提供支撑,发挥以日志为代表的行内实时数据和付费购买或者免费爬取的海量互联网数据在商业银行业务中的价值是亟待解决的问题。变现,是硬道理!换句话说,我们需要将ETL、业务建模、机器学习、可视化扩展到实时数据,将与风险管理、客户营销相关的数据和计算规则从银行关键业务系统里面解耦,对相关业务应用提供完整的支撑。

周期/节奏

2015年9月至11月,大数据实时流处理平台可行性分析,技术组件选型。

2015年11月,项目启动。

2015年12月,完成总体需求分析,确定平台的主要业务目标是在运营监控、反欺诈、客户行为分析、风险预警方面提供实时数据支持。

2015年12月-2016年8月,完成平台设计和基础组件的实施、投产。

2016年8月-今,对基础组件进行优化和补充,对业务应用开发提供支持,配合IT运营实时监控、客户点击流、交易反欺诈、贷后预警等与实时数据相关的应用建设。

客户名称/所属分类

恒丰银行/大数据技术服务

任务/目标

同互联网公司相比,传统商业银行在业务种类、交易模式、监管要求方面都大大不同,我们针对行内业务需求设计了以下功能架构:流处理平台提供基础的数据采集、接收、过滤解析、实时规则计算、存储和分析挖掘功能,以此为基础构建实时营销平台、实时风险预警平台进行业务逻辑加工,行内的各个渠道系统、信贷系统、IT运营监控系统、运营风险监测通过订阅方式获得实时处理后的数据,满足IT运营实时监控、客户行为分析、交易反欺诈、授信评审与贷后预警、运营风险监测等方面的业务需求。

当前的实时数据源主要包括业务系统的应用日志,企业消息总线关联交易日志,第三方数据公司实时推送数据,网络设备、操作系统、中间件日志,数据库日志,外部网站爬虫信息,流处理平台要负责实现以下目标:

  • 各类基础数据的实时采集,过滤解析;
  • 根据业务应用需要提供基础数据实时加工功能;
  • 同时支持简单和复杂业务逻辑规则模型,支持基于流数据的实时分析;
  • 便于与异构系统集成,实现数据共享,要包含与主流的流计算框架、各类数据库、前端框架、消息中间件设施、主流接口协议;
  • 海量数据的持久化存储和快速检索;
  • 提供平台级别的数据管理功能,包括数据脱敏、用户权限、数据时效管理和分级存储等方面功能。

挑战

大数据实时流处理平台在实际实施过程中主要面临以下技术难点:

1.如何实现流处理系统在可伸缩性、系统容错、高可用性、弹性部署、差异服务管理、吞吐性能方面的要求。

  • 平台资源方面:使用物理机服务器和传统的虚拟机技术无法根据数据流量和计算任务量实现资源层面快速扩容;对计算、存储、网络等资源管理不够精细,资源申请周期长,资源的可用性低。
  • 应用架构方面:如果采用传统的单体应用架构,由于Socket连接方式、线程服务模型、锁冲突、同步IO阻塞等原因,在并发处理能力上先天不足;大数据微服务架构又会面临编程学习和开发成本高,并且框架对异步并行调度、服务质量管理方面支持不足的问题。
  • 开发体系和工具方面:流处理平台组件繁多,迭代频率高,服务质量管理更精细,现有的开发体系和工具无法在实施的各个阶段实现有力支撑。

2.如何构建高性能、高可用性,覆盖所有业务需求数据源的实时采集、传输组件。

商业银行内部价值最大的流数据就是应用系统及各类设备每天产生的日志数据,同互联网公司比,银行的系统种类多,来源广,架构平台杂,主要交易系统的产品化程度高,改造风险大,日志规范性差,不同应用的日志路径、文件个数、内容、回滚规则各不相同,如某重要系统应用,同时打印的交易日志文件达几百个;除了应用日志文件外,用于运维监控的系统实时资源信息、需要从外部获得的舆情、资讯信息都需要数据采集组件提供高性能、高可用性、高安全可靠性的实时采集、传输功能。

3.如何提供易于异构系统集成的软件服务能力。

流数据及其计算处理后的数据最终是要提供给其他应用使用的,这就要求流处理平台提供统一的消息服务能力,满足异构系统各种集成方式的需求,这些需求可能通过前端直接访问、RPC远程调用,也可能通过主流的消息中间件、内存数据库,传统数据库,也可能通过与其他流处理框架集成。

4.如何应对灵活的业务逻辑变化,降低开发工作量。

基于流数据的业务应用要求流处理平台在数据处理和计算上具有较高的灵活性,在数据解析结构化方面,如日志或者资讯信息中的某些字段在当前的监控业务模型中没有具体用处,不做预处理,突然有一天,业务人员发现可以用于实时交易欺诈模型;在计算规则方面,如银行新开通了信用卡业务,对于客户全渠道行为的分析就要把信用卡的数据加入,业务人员都希望能够基于提出的规则即时实施,并且能够处理复杂规则逻辑,平台要在这方面进行支撑,减少上层应用开发工作量。

5.如何对庞大的平台各组件及客户端提供统一的配置和管理。

云平台下对应用的计算资源、存储资源进行精细化管理,应用的节点数增多,可用性提高,随之大大提高了日志采集客户端的数量,应用日志相对于中间件、数据库、syslog日志相比在采集任务配置也复杂得多,如何高效管理几千个日志采集客户端和爬虫客户端,对其运行状态、采集任务进行实时配置和更新,大规模性的集中部署和升级,如何对其他流计算组件集群的状态一致性进行配置管理,提供方便的流数据处理流程配置功能,也是流处理平台需要解决的问题。

6.如何满足海量数据的高速存储、检索和分析挖掘的需求。

流处理平台要满足原始数据和解析计算后的数据高速存储和查询检索需求,并在使用时满足银行对客户数据脱敏、用户权限管理、数据分级存储的要求,提供集成的数据分析和机器学习工具以便更好地挖掘的数据价值。

实施过程/解决方案

在实际实施过程中,行内针对发布应用日志和应用监控输出的规范,将日志输出的要求纳入了从招标到验收的项目管理整个流程,对新建系统提出了明确的要求,这大大方便了日志采集,提高了流处理的效率,下面主要描述如何从技术上解决上一章提到的六个难点。

平台架构

通过分析传统单体应用在并发服务能力、服务质量、运行部署方面的不足,并最终选取技术成熟的akka微服务架构+docker容器云技术作为平台流计算和数据服务组件的基础技术架构。

响应式微服务架构通过消息机制避免共享资源的锁冲突,降低线程资源需求。同时,将失败也作为一种消息,实现服务自治,可以实现各个级别的失败快速恢复,能够实现功能及服务的灵活打包部署,构建位置透明的集群服务体系,实现弹性扩容和差异化的硬件资源配置;

akka除了具备以上优点外还内嵌了基于netty技术的NIO框架,不需要额外配置Weblogic或者WebSphere等中间件服务器,降低使用成本,支持更多客户端连接,单节点每秒5000万消息处理;1GB内存250万Actor,消息传递机制实现分布式微服务协同、数据共享,消除资源锁需求;Actor模型实现多层级自治监管机制,构建安全运行的防火墙和沙箱,微秒级的故障恢复,支持弹性部署多种集群部署模式,远程服务透明访问,多种可配置的负载均衡策略。

我们将akka微服务架构的集群负载,服务监控、故障恢复与弹性部署能力结合恒丰银行PAAS云平台采用的docker容器技术对应用级负载、监控、弹性资源分配以及快速部署能力相结合,满足了本节开头对流计算组件的要求。除了流计算组件,平台使用的flume、kafka、zookeeper、redis等开源组件也实现docker容器化并借助DevOps工具服务,从开发、构建、测试到版本发布的全流程自动化,中间提供包括计划、任务分配跟踪、问题跟踪、文档管理、版本发布全过程的项目协作支持。

我们使用自研微服务架构平台Skyline进行相关组件开发,Skyline以akka为基础,通过提供zebra脚本语言降低并行编程开发难度,能够对异步并行任务进行监控和调度,实现了对集群的分布式一致性和分布式事务的支持。

数据采集

在比较了目前主流的开源日志采集组件flume、scribe、logstash之后,我们选取采用Java语言开发,在高可用、资源隔离、二次开发方面具有优势的flume作为我们的日志采集组件。

在日志收集流程方面,针对不同云环境设计了不同的采集流程,对于部署在openstack云环境和部分物理机上的应用,通过在应用服务器直接部署flume agent实时采集每个节点配置的日志文件、syslog、进程状态信息,实时发送后端的flume 服务端,服务端完成原始数据入库和初步的过滤解析并发送到kafka消息中间件;对于部署在docker容器环境下应用,因为已经做了日志规范化,宿主机上的flume直接利用宿主机提供的接口读取对应镜像所属路径下的日志文件,直接发送到kafka消息中间件。

此外,根据实际需要,对flume的客户端进行开发,增加了source种类,覆盖目前所有应用系统的日志打印类型,修改了客户端软件的一些缺陷,设计并实现了不同策略,控制异常情况下对系统资源的占用,修改了agent与zookeeper之间更新配置的方式,利用心跳机制实现对flume agent状态的监控,利用Jenkins、puppet等工具支持进行大规模客户端推送、部署。

为了解决flume服务端收集数据的性能问题,我们对flume服务端进行微服务化拆分,将原来集中在服务端的接收、解析、入库工作拆分出来,原有的flume服务端用其对loadbalance、failover以及与客户端之间发送接收事务的支持进行数据接收,构建skyline微服务组件集群实现解析和入库的功能,并根据不同级别、不同类型的解析、入库需求分配不同的组件。

除此之外,为了补充采集一些既有系统交易数据和爬取外部网站一些数据,平台提供探针组件和爬虫组件,并基于zookeeper实现了上述客户端程序组件的注册、注销、实时任务分配,实现了高可用和水平扩展。

异构系统集成

流处理平台通过建立自己的分布式实时消息总线与周边系统集成,该消息总线以Akka的消息处理框架为核心枢纽。

如上,一方面,通过SockJs、WebSocket、HTTP协议将流数据包装为各种服务,构建与移动端应用和其他外部系统前后端的消息通道,对应用开发程序员屏蔽各种消息编码解码算法细节;另一方面,通过代理组件的编写和统一的元消息语义,可以将异构系统的kafka、MQ等消息中间件设施和主流的spark streaming流处理框架,当成流处理平台消息总线设施一部分,实现与上述设施和流计算框架的无缝集成;此外,用户也可以针对特定的数据,定制自己的持久化方案,支持将数据实时写入主流的数据库。

规则计算

为了应对各方面业务对流处理规则的变动,减少使用硬编码实现流计算组件的工作量,我们引入了开源的drools规则引擎。Drools规则引擎速度快、效率高,且具有强大的规则冲突处理能力,并且完全开源,使用Java编写,方便基于其进行开发。

在实际使用时,我们将drools集成为skyline平台的一个计算组件,与我们的kafka消息中间件和redis内存数据库完成适配,将drools的监测数据源改为实时数据,并利用其处理由事件触发的复杂业务逻辑。为了方便业务人员使用,编辑规则逻辑的方式由开发Java语言风格.drl文件改为提供可视化话编辑页面,用户可以通过在页面上编写简单逻辑组合条件和标准sql的方式配置复杂业务逻辑,并从各方面完善了规则引擎的功能,便于应用使用。

对于时间触发类型的流计算规则,如日常的实时交易量统计,并发访问量,客户当日消费金额,我们使用spark streaming sql功能代替原本需要针对绝大多数数据源和规则逻辑开发的流计算组件,并将查询结果实时导入内存数据库,提供给规则引擎进行复杂逻辑处理。目前,大部分实时规则的计算时间从数据触发到计算结果输出的时间都控制在100ms以内。

流计算过程中需要的其他组件,如数据分发组件、持久化组件、告警推送组件,我们使用skyline平台构建对应流处理集群,使用zebra脚本语言编写业务逻辑,满足相关业务需求。

服务和任务配置、管理

流处理集群的服务和任务配置管理主要有三部分:

第一部分是日志采集、交易探针、爬虫这些客户端程序。恒丰银行目前绝大多数应用采用同城双中心双活,应用在每个中心的部署单元也是集群多活形式,应用从传统物理机环境迁移到云环境后,节点数增多,与之对应的是日志采集客户端的增多。

目前,恒丰银行的生产环境已经上线运行了三千多个虚拟机节点,各类测试环境和准生产环境共有六千个节点,对每个虚拟机上的采集客户端的服务状态、资源占用情况进行监控,对采集任务的一些参数进行批量或者单独的更新,如增加/减少路径,增加文件黑白名单。对于不能通过日志获得流数据的既有系统和外部咨询数据,我们分别开发了探针和爬虫客户端程序。这些客户端程序的服务和任务管理都是利用zookeeper实现的。

第二部分是基于Skyline平台开发的流计算组件,这一部分我们利用skyline平台的一致性管理器进行管理,每个组件自带基于raft协议一致性管理的接口,管理集群和各组件集群间通过消息广播机制进行通信。

第三部分是流处理流程的配置,除了之前提到的Streaming Sql和规则引擎组件,我们使用skyline平台开发了一些基础组件,如分类,数据补全,持久化,脱敏、数据转换组件,用户可以使用拖拽方式可视化配置一个流处理过程。

数据存储、分析和挖掘

在有些业务场景下,流处理平台需要将原始的非结构化和半结构化数据存储起来并提供查询检索,如运维业务需要提供事件发生时的各类资源和日志快照信息;针对解析后的结构化数据,也需要集中存储,用于统计分析和报表。在这方面,我们使用继续使用在数仓迁移时引入的企业级大数据平台,引入企业级的大数据平台免去了对大数据平台的运维压力。

流处理组件可以通过jdbc驱动直接使用标准sql在Hyperbase表上进行数据库表的相关操作,并且支持上建立全局索引、局部索引,以满足多种复杂场景的实时写入、检索需求,Hyperbase支持全文索引,方便用户快速检索自己关心的信息。流处理平台使用平台提供的Scala语言接口,开发数据挖掘和深度学习的相关模型,进行分布式挖掘和模型训练。

结果/效果总结

目前,市面上的商业流处理产品大多基于单一应用目的开发,使用商业化产品在采集规模和功能覆盖性、数据开发灵活性上受制约,同时,大部分产品的收费模式都基于节点数或者原始数据流量,而大多数流数据是低价值密度数据,在这类收费模式下很难全面挖掘数据价值。

从技术指标方面来看,恒丰银行大数据实时流处理平台具有以下优势:

数据采集:节点多,部署超过1500个服务器节点;网络结构复杂,横跨多中心所有网段;采集功能覆盖性强,能够满足日志、进程资源信息、接口服务信息、库表信息、外部爬虫数据实时采集,在日志采集方面覆盖所有日志打印方式,最大支持同时维护三百个日志文件;任务调度和监控方便,所有任务统一配置,实时更新,支持客户端自动批量发版,客户端运行状态监控完善。

数据接收和预处理:基于规则引擎和Streaming SQL实现,提供可视化规则配置页面和拖拽式流程配置,业务人员可以直接配置,不需要编程开发,支持复杂规则逻辑,支持弹性扩容,绝大多数基于流数据的逻辑处理时间小于100ms。

流计算:基于规则引擎和Streaming SQL实现,提供可视化规则配置页面和拖拽式流程配置,业务人员可以直接配置,不需要编程开发,支持复杂规则逻辑,支持弹性扩容,绝大多数基于流数据的逻辑处理时间小于100ms。

数据存储和检索:接收和存储采取异步处理,在八个存储节点条件下支持接近100M/S写入速度,通过自动分表,当月日志元数据结合全文检索检索皆在3秒以内。

以上技术指标完全满足上层监控、反欺诈、贷后预警、客户行为分析、运营风险监控类业务需求对实时数据处理的要求。

从实际应用效果看,恒丰银行大数据实时流处理平台针对一些典型业务的支撑已经验证了当初“将实时数据集中采集、集中计算处理、集中发布订阅”决策的优势和正确性,同一份渠道系统交易数据可以用于运维监控,可以用于用户行为分析,可以用于交易反欺诈核验,可以放在此用户的贷后预警模型里,将数据同源系统解耦,不同的业务只需要响应增加逻辑规则配置即可,而不是像原有模式分别在源系统里面增加业务,增加开发和投产任务。

家庭金融是恒丰银行新开展的一项以家庭为单位财富管理业务,业务人员设计了较为复杂成员之间各类交易动账提醒规则,按照以往的模式需要核心增加提醒业务,各渠道交易接口可能需要改造,相关系统要协同上线,如果新增渠道系统后原有模型还得重新开发、上线;基于流处理平台的处理方案,在流处理组件或者规则引擎中配置规则,关联各个渠道数据源,新增数据源和规则更新可以立即配置,即时生效,大大提高了业务灵活性,降低了开发成本。

企业介绍:

恒丰银行股份有限公司是12家全国性股份制商业银行之一,注册地烟台。

近年来,恒丰银行稳健快速发展。截至2016年末,恒丰银行资产规模已突破1.2万亿元,是2013年末的1.6倍;各项存款余额7682亿元,各项贷款余额4252亿元,均比2013年末翻了一番。2014年至2016年累计利润总额312.17亿元,这三年的累计利润总额为以往26年的累计利润总额;服务组织架构不断完善,分支机构数306家,是2013年末的两倍。

近年来,恒丰银行屡获荣誉。在英国《银行家》杂志发布的“2016全球银行1000强”榜单中排名第143位;在香港中文大学发布的《亚洲银行竞争力研究报告》中位列亚洲银行业第5位;在中国银行业协会发布的“商业银行稳健发展能力‘陀螺(GYROSCOPE)评价体系’”中,综合能力排名位列全国性商业银行第7位,全国性股份制商业银行前三;荣获“2016老百姓最喜欢的股份制商业银行”第二名、“2016年互联网金融创新银行奖”、“2016年最佳网上银行安全奖”、“2016年度创新中国特别奖”等多项荣誉。

作为一家肇始于孔孟之乡山东的全国性股份制商业银行,恒丰银行秉承“恒必成 德致丰”的核心价值观,践行“1112·5556”工程,即:一个愿景(打造“精品银行、全能银行、百年银行”)、一个文化(打造“开放、创新、竞争、协同、守规、执行”的“狼兔文化”)、一个目标(五年目标是以客户为中心,以创新为驱动,高效协同,弯道超车,五年内进入全国性股份制商业银行第二方阵;十年目标是要打造一个国际金融控股集团)、两个策略(“植根鲁苏,深耕成渝,拓展中部六省和海西,进军京沪广深”的区域策略和“四轮驱动、两翼齐飞”的经营策略)、“五化”强行战略(国际化、信息化、精细化、科技化、人才化)、“五力”工作方针(忠诚力、执行力、目标力、风险经营力、恒久发展力)、五个引领(人才引领、科技引领、创新引领、效率引领、效益引领)、六大综合能力(价值分析能力、风险鉴别能力、定价能力、创新能力、调研能力、学习能力);大力实施“12345”行动纲领,即:“1”是做金融综合解决方案的提供商,“2”是金融云平台和大数据平台,“3”是数字银行、交易银行、银行的银行,“4”是龙头金融、平台金融、家庭金融、O2O金融等四大金融创新业务模式,“5”是投行、资管、平台、人才盘点和以“One Bank”为核心的绩效评价体系等五大战略落地工具,致力于做“知识和科技的传播者、渠道和平台的建设者、金融综合解决方案的提供者”,力求打造令人瞩目、受人尊敬的商业银行,为客户和社会提供效率最高、体验最佳的综合金融服务。

原文发布于微信公众号 - 数据猿(datayuancn)

原文发表时间:2017-06-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算D1net

如何构建一个更好的云安全模型

公共云的自助服务提供模式带来了许多好处,但当然也破坏了传统的IT服务器配置模式。现在,开发人员可以通过信用卡自行分配资源,企业安全团队也为他们的工作做了切实的工...

3738
来自专栏云计算D1net

如何将业务迁移到云信息管理

管理组织最关键的数据从来就不是简单的事情。了解所有可用于不断增长的数据源列表的各种技术选项使得这项工作变得更加困难,并且在组织内涵盖了越来越多的功能。企业需要通...

3596
来自专栏技术翻译

10必须了解托管云服务对业务增长的好处

根据MarketsandMarkets™关于托管云服务的报告,“云托管服务市场规模预计将从2017年的271.5亿美元增长到2022年的537.8亿美元,预计复...

1483
来自专栏JAVA高级架构

京东架构专家分享京东架构之路

京东咚咚架构演进 咚咚是什么?咚咚之于京东相当于旺旺之于淘宝,它们都是服务于买家和卖家的沟通。 自从京东开始为第三方卖家提供入驻平台服务后,咚咚也就随之诞生了。...

4859
来自专栏程序你好

设计一个成功的API程序的10条法则

早在上世纪90年代中后期,互联网是一个奇怪的、但不断增长的生态系统。企业意识到了这种潜力,一些企业实际上知道如何利用这种潜力。然而,人人都知道的一件事是,上网是...

692
来自专栏数据库新发现

DBA2.0的时代 - DBA将向何处去?

最近接触和参与了很多关于DBA职业生涯发展的讨论,也有很多朋友问过我,DBA将向何处去? 思考了很多,在这里和大家分享一下关于DBA的我的看法。

1161
来自专栏最新活动整理

腾讯云双11优惠活动整理,助力全民优惠上云

双十一期间的云服务器促销活动肯定不能少的了腾讯云商家。在昨天阿里云发布活动之后依旧只能新用户才可以购买便宜产品,老用户没有资格还是有些失望的。不过腾讯云商家并没...

3690
来自专栏WeTest质量开放平台团队的专栏

百万并发量苹果官网准备好了吗?——一分钟学会服务器压力测试

企业需要良好的网站性能。网站的访问速度和顺利的体验是企业必须要做好的事情。本文从苹果官网两年来每次预购都出现的服务器宕机情况,揭示服务器性能测试的重要性,手把手...

1883
来自专栏Java架构

高效程序员如何优雅落地需求总体介绍大数据系统的架构图第三代系统架构第四代系统架构

7128
来自专栏云计算D1net

云备份与云存储你该了解的6个方面

2010年之前,绝大多数公司都认为公共云尚未完全成熟,还 不放心将其作为企业数据的主要存储、备份地,但2010年之后,随着巨头们的加速布局,以及大数据的大热,“...

3487

扫码关注云+社区

领取腾讯云代金券