赞
踩
根据第三方机构预统计,自2016年-2019年,我国零售信贷规模维持20%以上的高复合增长率,2017年中国零售信贷规模达到27万亿,到2019年,总规模超过37万亿。近年来互联网金融蓬勃发展,在借贷、保险、股权等领域涌现出一大批互联网与金融场景相结合的创新产品。同时作为互联网金融的子领域消费金融领域,在国家消费升级战略下,各大平台推出了如花呗、借呗,微粒贷等众多服务。
互联网金融的架构有别于传统金融系统,互联网金融产品依托于互联网的众多技术特性,主要包括三大主要方面:
在互联网浪潮的背景下,传统银行、金融行业也有着转型的诉求,并在股权、借贷、保险等方面都需要创新。有些是业务从线下转线上,有些是金融零售化转型。随着互联网金融业务的爆发增长,建设一个高并发、高可用、高弹性的互金平台是每个金融从业的IT技术人员面临的挑战。
在传统金融的领域里,架构的特点往往是保守的,除了技术相对陈旧以外,更多是要求系统更高的稳定性,低风险,低维护等。
银行、金融机构在面对互联网化的高速业务发展,往往会陷入技术与基础建设的泥潭,一方面在软件平台建设时银行、金融传统系统的高可用、低风险、低风险特性与互联网产品的高并发、高性能、高扩展/高弹性存在一定的冲突,另一方面在基础设施建设方面,相比互联网的云计算平台,存在天然的先天不足。所以,我们的架构设计,需要结合两者的特性,综合考虑,既要兼顾传统金融行业的特性,又要承载互联网高并发高弹性等特性,这样使我们面临到巨大的挑战:
如何在构建一个高并发互联网架构的基础上,同时兼顾金融行业的特性,让金融IT技术从业者面临着巨大的挑战。而且金融行业的高安全、银保监会监管合规方面的要求,也让高并发的互联网架构在实施起来步履蹒跚。
金融行业的安全性要求,是架构设计时不可忽视的问题。总的来说,包括以下四个方面:
1)数据安全:
2)物理安全:
3)网络安全
4)业务安全
在互联网金融的高并发场景下,涉及到资金方面安全的问题尤为重要。服务端在做并发编程时,往往需要考虑到竞争条件的情况。在多个并发线程同时访问同一资源时,由于对请求的处理不是原子性的,无法预测调度的顺序,就可能由于时间序列上的冲突而造成对共享资源的操作混乱。
通过高并发操作触及程序处理临界区,绕过程序线性执行顺序,使原有的逻辑限制失效。经典场景有:
条件竞争安全漏洞解决方案
合规、监管要求在对互联网金融项目建设时,根据金融行业特性,必须在建设范围进行法律、法规的研讨和设计,确定要关注及合规部门银保监会的监控要求限制。
对于新的业务流程或不确定的业务规则,必须通过银行合规、法律部门等会签通过,确保系统遵循合规条件。
法律法规的参考相关地址:
中国银行保险监督管理委员会http://www.cbirc.gov.cn/cn/view/pages/index/index.html
在构建一个高并发金融架构时,我们往往会考虑很多因素,从系统平台建设的角度来讲,会优先关注以下重点指标的建设:
对于互联网金融架构系统来说,涉及到以资金交易为核心的业务领域,最重要的指标是高可用。高可用HA(High Availability)是分布式架构设计中必须考虑的因素之一,它通常的是指,通过设计减少系统不能提供服务的时间。
高可用的指标 我们通常会形容高可用如:
如何保证高可用
保障系统的高可用,有两大架构设计的原则:
避免单点问题,对各个系统特别是涉及到交易、账务的核心系统进行多副本设计,对数据库进行多库备份和读写分离。如果有了多副本,在某个单点出问题时,副本可以发挥作用。架构设计以“集群化”的方式,保障架构的高可用。
在有了多副本的建设的前提下,前面已经说到,互联网金融的架构体系相比传统系统复杂度高,所以在系统出问题时,我们必须引入故障自动转移机制,避免手工和人工的干预,能够高效率的自动化的切换至副本服务或数据库。
高可用服务网关建设 互联网金融的网关的建设,有以下好处:
高可用数据库设计 在金融行业,数据的重要性不言而喻,为保障数据库的高可用,我们一般有:
提到数据库的多副本设计,如读写分离和主备库设计,这就涉及到数据同步的问题了。同步的方式有很多,现在很多云服务厂商也提供了很多配套工具,进过封装之后的服务,可以傻瓜式的上手。 对于自建的服务来说,我们常常会考虑通过MQ(如RocketMQ)进行异步同步,或者解析MYSQL的binlog等方式进行数据同步。
互联网金融的场景下,在高可用的基础上,对于高并发的要求是必不可少的。为满足日益剧增的用户增长和交易量,往往需要在架构设计时,考虑高并发的特性。
高并发的指标
我们通常会通过很多方式来衡量说明一个高并发系统的架构设计,如:
如何提升系统的并发能力
提升系统的单机处理能力
垂直扩展的方式有两种:
增强单机硬件性能,例如:增加CPU的核数,由8核扩展到16核;升级更好的网卡,由千兆网卡升级到万兆网卡;升级更好的硬盘,如SSD;扩展硬盘的容量,如由500G升级到10T;扩展系统内存,如由16G升级到64G等。
提升单机的架构性能,例如:引入缓存机制Redis来减少IO次数;引入消息队列机制,来削峰填谷,用异步处理来增加单服务的吞吐量;用轻量级架构来减少服务的处理时间等。
提升系统的横向扩展能力
系统单机的处理能力总是有极限的,我们可以通过增加服务器数量的方式,来线性扩充系统的性能。
在互联网金融分布式架构中,高性能是一项涉及众多方面因素的系统工程,并不是单一高新技术和设备的简单应用或堆叠,应该进行合理的规划与优化设计,以适合用户在性能、成本等方面对系统建设的综合需求。
高性能的指标
高性能的指标通常有:
如何提升系统的性能 互联网金融系统,涉及到各方面的性能问题,如:系统软件平台服务的性能,网络和硬件的性能,数据库及存储的性能等。
将对庞大金融服务进行领域规划,将臃肿的系统进行拆分解耦,将每一个模块进行解耦,把每个服务都尽可能做成无状态化,每个独立模块均可以作为一个微服务,这样每个微服务的关联性都比较小,每一个微服务都可能做到最大化的性能。
互联网消费金融的产品,涉及到众多前端,使用CDN缓存技术,能大大提升用户的产品体验。CND加速将网站的内容缓存在网络边缘(离用户接入网络最近的地方),然后在用户访问网站内容的时候,通过调度系统将用户的请求路由或者引导到离用户接入网络最近或者访问效果最佳的缓存服务器上,由该缓存服务器为用户提供内容服务;相对于直接访问源站,这种方式缩短了用户和内容之间的网络距离,从而达到加速的效果。
带宽性能:足够的带宽应该满足在网站峰值的情况还能足够快速的使用,所以网络带宽应该大于峰值流量=峰值QPS * 平均请求大小。只有在保证带宽的情况才能实现高性能服务。
服务器性能:服务器性能主要从CPU、内存和磁盘三个方面来考虑,CPU核心数量尽量多点,内存大小最好大一点,利用到磁盘存储的话SSD会优于机械磁盘。
硬件负载均衡设备对于有条件的团队可以采购硬件负载均衡设备,加强后台服务负载均衡的能力,比如F5。
在互联网金融的高并发场景,引入缓存能够大大提升系统性能,减少数据库IO请求,从而降低核心数据库的并发压力。一般来说,在系统横向扩展能力足够强的情况下,高并发的压力会打到数据库,所以分布式缓存的建设对于互联网消费金融产品架构设计来说非常重要。
缓存的本质是通过Key-Value形式的Hash表提升读写速度,一般情况是O(1)的读写速度。读量比较高,变化量不大的数据比较适合使用缓存。目前比较常用的分布式缓存技术有Redis,Memcache等。缓存这块的中间件建设,后面的章节会在细化讲解。
目前在大型的互联网消费金融系统架构设计中,普遍会考虑用消息队列来讲调用异步化,不仅可以提升系统的性能,还可以提升系统的扩展性。
对于大量的数据库写请求,数据库的压力很大,同时也会造成数据库的响应不及时。可以引入使用消息队列机制,数据库的写请求可以直接写入到消息队列,然后通过多线程或者多进程从消息队列读取数据慢慢写入到数据库。消息队列服务器的处理速度会远远快于数据库,所以用户在写入操作时会感觉到很快写入速度。
对于IO操作的请求可以采用基于状态机的异步化编程。如:多线程模型 多进程模型 多协作模型 事件驱动模型
处理算法的模型优化(时间复杂度和空间复杂度),对于数据结构的设计可以采用高效的数据结构,比如典型的key-value缓存系统就是基于hash的基本原理来实现的,hash表的查询效率是O(1),效率极快。
提供更高的存储硬件,更高的吞吐量和IPOS,读写性能。合理的数据连接池和缓存。
在互联网消费金融领域,涉及到很多账务数据的处理,引入分片技术能大大提升数据处理的性能。比如:借贷业务涉及到的借据数据、财务数据的夜间批量处理时,利用分片技术进行处理,提供了更高的扩展性,提升了整体的性能。
高弹性架构设计原则 互联网消费金融行业的架构设计中,高弹性涉及到众多技术面。主要有:分布式高弹性架构 中间件平台高弹性支撑体系设计 分布式高弹性数据库建设 云计算基础设施架构
高弹性架构实践
互联网消费金融架构设计时,考虑到的拆分涉及到两方面:
一是系统拆分,根据业务领域设计,把系统拆分解耦,让系统的颗粒度细化,模块化,微服务化。
二是数据拆分,对数据分而治之,减少单点数据故障的同时,又可以让每个数据模块具备高弹性能力。
在互联网金融行业,数据和服务的重要程度都非常高,通常会通过建设同城双活、异地多活的架构,来提升系统的容错和伸缩能力。
互联网消费金融的软件架构的拆分与微服务建设,服务在我们的领域规划下变得有调理,服务越来越多,越来越细化,给测试也带来了巨大的挑战。进行高可测的架构设计时,我们对自动化测试的依赖越来越强,因为自动化测试能我们带来很大便利:
常用的自动化建设,一般分为前端页面的自动化测试,和接口的自动化测试。比较流行的工具有:appium,selenium,httprunner,loadrunner等。有能力的企业会自主研发自动化框架,加入更多定制化的功能,以满足实际的业务需要。
互联网消费金融业务复杂度高,面对性能测试往往会遇到诸多问题。
性能测试的场景多,业务复杂,比如支付功能可能涉及到从发起支服务的业务服务,到支付网关,在到银行内部系统等五六个服务。
解决方案:对关键业务路径进行性能回归,对单个服务接口进行压测和预估。
测试环境服务器和线上服务器的配置往往不一样,而且测试环境是单点的,而线上服务是集群的。
解决方案: a. 机房单台服务器配置尽量与线上保持一致,集群问题通过等比缩放预估; b. 技术力量比较强的公司如阿里,直接在线上环境进行压测。
测试数据准确性和一致性问题 解决方案:对生产数据进行全量脱敏导下来,用于性能测试
接口的性能测试调用链太长,对外部系统依赖 解决方案:接口的调用链尽量优化简短,部分接口和外部依赖进行mock后再测试。
性能测试方案制定,怎样定位性能瓶颈? 解决方案:需要对被压测的接口分析调用链,根据线上监控,进行分析可能存在的性能瓶颈。
QPS应该跑多少? 根据接入的接口监控,比如cat监控,可以根据监控数据QPS/集群数,再乘以80%(因为测试服务器和线上服务器的性能可能有一些差距)。
相应时间以多少为准? 接口理论上相应时间是100-800ms,最大不超过1s。这是基本要求,一些特殊重场景,需特殊处理。
压测结果应怎样预估? 根据测试环境压测结果(cpu<=50%)简单预估,测试QPS线上集群1.2 约等于线上QPS
互联网金融业务的快速发展,对架构设计在系统稳定性、交付能力、管理效率、技术栈规划方面提出了更高的要求。大规模线上化业务的挑战:
1. 系统稳定性 业务高速发展,流量和数据量大增; 在系统稳定性、可用性、扩展性、安全性和成本等面临挑战;
2. 交付能力 快速上线、快速交付能力(Time To Market),交付时间面临挑战; 管理结构BU化,千人研发人员并行开发,系统交付的质量面临挑战;
3. 管理效率 分布式的系统,复杂度高,调用链长,超出个人的处理能力,工具化势在必行; 多数据中心的部署,大量机器和应用服务面临治理的挑战;
4. 技术栈规划 编程语言: Java,NodeJs,Python,GO等 数据库:Oracle,MySQL,PostgreSQL,MongoDB等 中间件:Redis,RocketMQ,Apollo等
打造八大核心中间,支持未来在消费金融线上化交易业务未来10倍、100倍快速增长。
对于互联网消费金融架构来说,Dubbo适用于系统技术相对简单,业务调用链短,系统对并发量和吞吐量要求很高,对生态的要求不高,服务治理等外围系统不需要非常强大的业务场景。对迭代迅速、小短快,控制流程不需要很严格的互联网金融公司。
服务注册发现中心:Apache Zookeeper,Alibaba Nacos 服务调用方式: RPC:Netty、Mina、Grizzly、Hessian、RMI、Thrift等 REST:DubboX 服务调用序列化: FastJson、FST、Hessian2、Kryo、ProtoStuff、JDK 服务负载均衡: ConsistentHash、LeastActiveLoadBalance、RoundRobin、Random
对于中大型互联网消费金融公司来说,Spring Cloud是个不错的选择,但同时开发的预支也较大,适用于系统较为复杂,业务调用链较长,对生态的要求很高,微服务配套包括服务治理、监控、路由、网关、灰度发布等需要面面俱到的互联网金融公司。要求公司基础设施强大,架构团队、DevOps、运维等力量雄厚,自动化部署能力较强。同时具备,迭代周期较长,流程控制较为严格,较为正规化。
服务框架Spirng Cloud技术组件体系
对于互联网消费金融的架构来说,建设路由网关是一项很重要的工作。有了路由网关,能为我们的平台带来很多好处,除了常用的网关的路由功能外,我们还能在金融系统的升级、微服务线上化的过程中,根据需要把流量在新老系统之间切换,也为灰度发布、蓝绿发布、同城双活、异地多活的建设打下基础。
路由网关Gateway的主要特性
路由网关Gateway架构设计 互联网消费金融网关架构图:
基于OpenResty打造高性能网关
OpenResty是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。
OpenResty 通过汇聚各种设计精良的 Nginx 模块(主要由 OpenResty 团队自主开发),从而将 Nginx 有效地变成一个强大的通用 Web 应用平台。这样,Web 开发人员和系统工程师可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,快速构造出足以胜任 10K 乃至 1000K 以上单机并发连接的高性能 Web 应用系统。
OpenResty 的目标是让你的Web服务直接跑在 Nginx 服务内部,充分利用 Nginx 的非阻塞 I/O 模型,不仅仅对 HTTP 客户端请求,甚至于对远程后端诸如 MySQL、PostgreSQL、Memcached 以及 Redis 等都进行一致的高性能响应。
Apollo配置中心的主要特点:简单易用 多环境多集群配置 配置修改实时生效 版本发布管理 支持灰度发布 支持权限/审核/审计管理 开放API管理
在互联网消费金融领域,打造分布式的配置中心,不但能够为服务架构Dubbo或Spring Cloud提供统一的配置化管理,而且在业务服务的架构上也能提供很多便利,它让我们可以将一些配置项存储于配置中心,减少主要业务数据库的压力的同时,又能动态更新配置项。下面我总结了一些在业务方面的配置化实践:
数据访问层DAL的主要特性:支持多数据源:Oracle、MySQL等 统一的API封装 简单、安全 统一数据源 支持分库分表策略 Read/Write Mod N Range Hash 代码生成技术,比如统一加时间戳等等 统一的监控和统计
数据访问层DAL架构设计
互联网消费金融数据访问层DAL实践
在互联网消费金融领域,业务复杂,建设好DAL数据访问层,能为我们带来很多便利:
消息队列MQ的主要特性
互联网消费金融消息队列MQ架构实践
1)服务之间的解耦:消费金融的业务链路特别长的场景,可以用MQ来解耦,比如一笔进件,经历贷前校验,到风控平台风险规则,风险探测,准入,核额,再到贷中审批流程,调用链比较长,业务环节也比较多,可以通过消息队列MQ进行系统&模块间的解耦;
2)异步的处理提升系统性能:在一些耗时环节,设计成异步的交互方式,通过MQ进行异步的结果通知,可以大大减少系统的同步响应处理,提升系统的吞吐量。例如:用户进行还款时,在进行跨行转账支付时可能会耗时比较长,而且要等待他行的返回结果,与支付服务的交互时,可以通过异步MQ的方式进交互,异步的返回交易的结果,成功或者失败。
目前MQ中间件开源技术众多,比较流行的有Kafka,RocketMQ,RabbitMQ,ActiveMQ。
缓存服务Redis的主要特性:高性能,高吞吐,读的速度是110000次/s,写的速度是81000次/s ; 丰富的数据类型: Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作; 原子性:Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行;
缓存服务Redis的架构设计
举了一个贷款进度查询的例子,首先进行查询缓存,如缓存没有,再去查数据库,大大降低了数据库的压力。下面我将这个图扩展一下,重点示例Redis的集群结构:
Redis哨兵的作用:Redis sentinel 是一个分布式系统中监控 redis 主从服务器,并在主服务器下线时自动进行故障转移。其中三个特性:监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。 提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。 自动故障迁移(Automatic failover): 当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作。
特点: 1、保证高可用 2、监控各个节点 3、自动故障迁移
互联网消费金融缓存服务Redis实践 在互联网消费金融业务领域里,Redis有很多实践场景:
场景复杂:在互联网消费金融业务,涉及到很多跑批作业,而且作业间互相依赖,有分支,有汇总的场景特别多,比如:每日夜间批扣,财务分录,利率计算&减免等等;
数据量大:互联网消费金融业务的线上交易量的增长,无疑会大大增加作业Job的数据量。而且批量作业的数据跟交易量是10倍级别的增长,比如一笔贷款分12期还(一年12个月),这样就是1:12的关系。
监控的难度增加。
互联网消费金融作业调度Job的架构设计
作业调度Job分布式设计 支持集群部署,提升调度系统可用性,同时提升任务处理能力。构建作业注册中心,实现的全局作业注册控制中心。用于注册,控制和协调分布式作业执行。
作业调度Job分片设计 前面的章节也介绍过分片设计的好处,能够并行处理海量数据,支持动态横向扩展,提升系统的处理能力。将任务拆分为n个任务项后,各个服务器分别执行各自分配到的任务项。一旦有新的服务器加入集群,或现有服务器下线,将在保留本次任务执行不变的情况下,下次任务开始前触发任务重分片。
作业调度Job监控设计 互联网消费金融作业Job的监控,涉及到的方面:
互联网消费金融作业调度Job的架构选型
传统金融行业,在业务线下转线上、零售化互联网转型的过程中,面临诸多技术和架构的挑战。一方面,系统架构需具备金融高可用、高标准、低风险的技术基础,另一方面,需求必须兼具互联网规模化的服务能力、具备互联网架构高并发、高性能、高扩展的能力。对于传统金融系统,未经历大规模互联网线上化的考验,往往一次洪峰、一次线上促销活动就把系统压垮了。
特别是面向C端的消费金融的架构体系,面对这种情况我们需要进行微服务的改造和建设,引入服务治理框架(在上一章节介绍过Dubbo与Spring Cloud),随着微服务的拆分,服务集群的数量指数级的增加,架构的复杂也相继增加,那么怎样对微服务架构进行有效的治理成为了互联网金融服务治理面临的主要架构问题。
1)金融系统耦间合度高
2)金融系统服务间调用链混乱
3)金融系统性能差
4)缺乏有效的降级、熔断手段
5)快速交付的挑战
在介绍互联网消费金融的服务化架构设计之前,我们先介绍一下,服务化主要有如下特点:
常用的服务化架构方案有:
消费金融企业级SOA架构特点
消费金融互联网服务化架构特点
消费金融微服务架构特点
互联网消费金融服务治理领域最重要的问题之一就是服务发现与注册中心的建设。在服务治理框架中,如Dubbo和Spring Cloud中均引入了一个服务注册发现中心的概念,服务的注册与发现、服务的上线与下线主要就依赖这个服务中心。
注册中心服务注册发现的具体过程
注册中心的服务治理的特点:注册中心职责简单,只负责注册查找,不负责请求转发,压力小; 消费者本地缓存服务地址列表,注册中心宕机影响不影响服务调用; 注册中心可搭建集群,宕掉一台自动切换到另外一台; 服务提供者无状态,可动态部署,注册中心负责推送; 消费者调用服务者,自动软负载均衡;
服务注册发现中心Zookeeper介绍
社区活跃度:中 CAP模型:CP 控制台管理:不支持 适用规模(建议):十万级 健康检查:Keep Alive 易用性:易用性比较差,Zookeeper的客户端使用比较复杂,没有针对服务发现的模型设计以及相应的API封装,需要依赖方自己处理。对多语言的支持也不太好,同时没有比较好用的控制台进行运维管理。 综合建议:更新较慢,功能匮乏,使用部署较复杂,不易上手,维护成本较高。
服务注册发现中心Eureka介绍
社区活跃度:低,已停止开源维护 CAP模型:AP 控制台管理:支持 适用规模(建议):十万级 健康检查:Client Beat 易用性:较好,基于SpringCloud体系的starter,帮助用户以非常低的成本无感知的做到服务注册与发现。提供官方的控制台来查询服务注册情况。 综合建议:eureka当前停止开源不建议企业级使用
服务注册发现中心Consul介绍
社区活跃度:高 CAP模型:CP 控制台管理:支持 适用规模(建议):百万级 健康检查:TCP/HTTP/gRPC/Cmd 易用性:较好,能够帮助用户以非常低的成本无感知的做到服务注册与发现。提供官方的控制台来查询服务注册情况。 综合建议:集成简单,不依赖其他工具,推荐大中型企业使用。
服务注册发现中心Nacos介绍
社区活跃度:高 CAP模型:CP+AP 控制台管理:支持 适用规模(建议):百万级 健康检查:TCP/HTTP/MYSQL/Client Beat 易用性:较好,能够帮助用户以非常低的成本无感知的做到服务注册与发现。提供官方的控制台来查询服务注册情况。 综合建议:阿里巴巴背书,更新速度快,文档完善,社区活跃度高,推荐大中型企业使用。
互联网消费金融系统微服务流量控制设计
金融系统平时平稳,但遇到大促的时候,机器的load会爆发式增长,这时候对系统的负载保护就显得非常重要,以防止雪崩。流量控制提供了对应的保护机制,让系统的入口流量和系统的负载达到一个平衡,保证系统在能力范围之内处理最多的请求。通常,在消费金融系统我们进行流量治理时,架构设计会重点考虑以下场景和因素:
流量控制与调度
流量的控制从入口开始,对流量负载按权重进行调度调配,同时根据底层的压力进行动态调整。这里的流量分配主要涉及到两方面:
限流、熔断与降级设计
事先制定好保护预案
常用的限流算法选择策略
限流原则:
Spring Cloud官方默认的熔断组件Hystrix(已停止维护); 较轻量的熔断降级库resilience4j(轻量级); Google开源工具包Guava提供了限流工具类RateLimiter(功能较单一); 阿里巴巴的开源框架Sentinel(推荐)
互联网消费金融调用链治理 互联网消费金融业务复杂度高,对调用链的设计时应遵循以下设计原则:
常用的集群容错策略如下
Failover失败转移策略:当发生调用异常时,重新选路,查找下一个可用的服务提供者。通常可以配置失败切换的最大次数和间隔周期,以防止E2E服务调用时延过大。
Failback失效自动恢复策略:Fail-over之后的自动恢复,在集群架构系统(有两台或多台服务器互联的网络)中,由于要某台服务器进行维修,需要网络资源和服务暂时重定向到备用系统。在此之后将网络资源和服务器恢复为由原始主机提供的过程,称为自动恢复
Failcache策略:Failcache策略是失败自动恢复的一种,在实际项目中它的应用场景如下:
服务有状态路由,必须定点发送到指定的服务提供者。当发生链路中断、流控等服务暂时不可用时,服务框架将消息临时缓存起来,等待周期T,重新发送,直到服务提供者能够正常处理该消息。
对时延要求不敏感的服务。系统服务调用失败,通常是链路暂时不可用、服务流控、GC挂住服务提供者进程等,这种失败不是永久性的失败,它的恢复是可预期的。如果消费者对服务调用时延不敏感,可以考虑采用自动恢复模式,即先缓存,再等待,最后重试。
通知类服务。例如通知粉丝积分增长、记录接口日志等,对服务调用的实时性要求不高,可以容忍自动恢复带来的时延增加。
Failfast快速失败策略:在业务高峰期,对于一些非核心的服务,希望只调用一次,失败也不再重试,为重要的核心服务节约宝贵的运行资源。此时,快速失败是个不错的选择。
灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式。AB test就是一种灰度发布方式,让一部用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。 基于微服务的多版本管理机制 灰度路由策略,即可实现基于业务规则的灰度发布。
通常灰度策略
架构资源治理:服务器资源:服务器是否闲置,访问量,吞吐量等; 数据库DB资源:慢查询治理,高频调用性能问题治理; 缓存cache资源:缓存命中率过低,读写比例是否合理; 消息队列MQ资源:消息是否堆积等。
6.7.1 动态扩容、减容设计
基于PaaS弹性云化平台或者Docker容器服务,可以实现基于负载的微服务弹性伸缩。
测试治理
流程与协作能力治理
互联网消费信贷常见模式有:小额现金贷、常规信用贷、场景消费贷三大类:
高并发场景下互联网金融领域常见问题
由传统金融、银行项目演变而来的系统,往往存在众多历史债务和系统问题,如: 1)没有做过领域规划; 2)模块耦合性强; 3)领域界限模糊; 4)逻辑复杂处理流程长; 5)早期逻辑实现不易扩展; 6)领域模型抽象度不够等等。
DDD的概念:领域可以理解为项目或产品可用于确定业务边界,让产品(业务)架构与逻辑(部署)架构对应,做好互联网金融产品的领域规划,像搭积木一样构建互联网产品。
分为个人(自然人)贷款、企业(法人)贷款;
贷款风险是指贷款发放后因各种原因出现本金及收益损失的不确定性,风险不可能被消灭但可以被控制。 1.信用风险: 即借款人信用风险,贷款损失的最主要风险,产生原因为借款人还款能力或还款意愿下降的可能性; 2.流动性风险: 银行借入短期资金,贷出长期资金,短借长贷存在期限不匹配,导致流动性风险的增加; 3.市场风险:
4.操作风险 因操作不当或条件不足而造成损失的可能性。如未核查客户身份真实性就发放了贷款; 5.道德风险 银行从业人员违反职业道德做出不利于银行的行为的可能性。
随着互联网消费金融的业务发展,产品的种类也越来越多,目前的互联网消费金融产品分为以下几大类型:
1. 电商消费金融 典型的产品代表,如蚂蚁花呗、京东白条等。电商平台本来就是一个巨大的消费平台,通过基于这个巨大的电商体系打造信用消费,无疑是对平台自身生态建设的一种补充。如今,BAT、京东、苏宁、国美、小米等互联网公司,都纷纷加入消费金融业务争夺战,围绕供应链和消费者打造金融产品,希望借此构建“生态”。消费者在电商平台上进行购物的时候,有的时候会出现支付不方便或者资金暂时紧张的情况,这个时候他们就会很自然地选择电商平台的信用消费。
2. 汽车消费金融 汽车金融是由消费者在购买汽车需要贷款时,可以直接向汽车金融公司申请优惠的支付方式,可以按照自身的个性化需求来选择不同的车型和不同的支付方法。对比银行,汽车金融是一种购车新选择。汽车金融是汽车产业与金融的结合,是金融产业的重要领域。与购买房子一样,购买汽车同样也是一笔不小的开支,贷款无形之中就成为众多消费者的一种选择。汽车消费金融中,尤以二手车消费金融为蓝海。由于目前银行的汽车金融业务主要集中在新车领域,尤其是和汽车厂商的合作,二手车金融***率非常低,这是一个巨大的发展机会。
3. 旅游消费金融 旅游消费金融是基于旅游为消费场景的,对具有旅游消费需求方提供的贷款产品。旅游消费金融正在成为旅游平台竞争的新焦点。从消费者的需求角度来看,旅游对于很多人来说都是一件非常向往的事情,尤其是对于一些收入并不高的年轻人来说,他们心中或多或少都会有几个特别想去的地方,但是由于经费不足等问题让他们的旅行只能成为泡影。对于一些费用昂贵的出国旅行来说,就更承担不起了,那么这个旅游金融分期消费就自然而然就会成为他们考虑的一种需求。
4. 医疗消费金融 很多家庭由于经济原因负担不起昂贵的医疗费用,这个时候分期医疗付费也就由此诞生了。眼下国内有少数医院通过与银行合作,推出了一种分期付费的方式。不过国内还没有单独的医疗金融平台通过与各大医院达成合作。整体看来,医疗消费金融是一件利国利民的事情,尤其是对于很多没什么资金实力老百姓来说,但是当前国内的医疗消费金融普及程度还过低,要让医疗消费金融顺利进行,需要医院与金融平台以及机构的共同配合。
5. 教育消费金融 教育消费金融不同于校园电商消费金融,虽然他们同样都是针对学生,但是一个是针对学生们的购买消费,另一个是针对学生们学习上的消费,是两种完全不同的消费。目前学好贷、龙门社交金融等平台以及众多的培训机构都推出了针对大学生的学费分期贷款。对于推出教育消费金融产品的互联网平台来说,要给学生放贷的话,必须要确保学生将来有一定的偿还能力,否则教育学费贷款尤其是留学贷款也不是个小数目,一旦平台的坏账率过高,就会导致平台的资金链出现问题。
6. 农村消费金融 农村金融是当前BAT进军的领域,但一些小的互联网公司也已经开始在农村消费金融领域进行布局。随着电商平台不断发展到农村,未来农村消费金融将会成为下一个新的风口。
7. 房产消费金融 传统的银行也一直都在深耕耘房产金融领域,包括新房金融、二手房金融、装修金融、租房金融等多个方面。房产消费金融市场规模庞大,竞争同样十分激烈。互联网房产消费金融最大的威胁就是对传统银行的威胁,但是房产金融是传统银行非常大的一块利润来源,传统银行对于互联网房产消费金融平台的反击是他们最大的威胁。
风控系统是根据已有的数据,比如用户提供的基本信息、贷款的基本信息、用户征信数据、工商报告等第三方报告数据,去判断和识别当前客户的违约、欺诈等风险的系统。包括建立风险规则组,风险探测,电核,内评和核额等,对外部系统提供服务。
风控规则模型介绍 风控模型应该是从两个角度去考虑,第一个角度是资产端风控策略,第二个角度是资金端风控策略。考虑主要出发点应该是从贷前、袋中、贷后三个方向去考虑,结合传统业务的风控模型和互联用户的行为数据。针对资金,资产进行风险等级划分,防欺诈系统、袋中的舆情监控、贷后的权重叠加。
1). 准入规则:对不同客户制定不同的贷款门槛,比如根据注册年限和消费次数等设置一个基本的准入门槛,对于后期可以分层次分批次的制定不同的风控策略。
2). 反欺诈模型:从申请反欺诈、行为反欺诈、设备反欺诈等多维度制定反欺诈规则,确保及时侦测和处置可疑警告,维护黑名单数据库及时性、准确性、有效性,熟悉了解贷前、贷中、贷后业务全流程对反欺诈功能的需求。
3). 评分卡:根据风险策略设置相应的权重,指定出完整的评分模型,并依据评分结果指定出审批策略、授信策略等。
4). 风险等级划分:将不同的客群进行细分,采用决策树或规则组的方式对不同的客群制定不同的策略和规则,实行精细化审批。
5). 贷后检测:对信贷客户进行日常贷后监测,及时发现风险信号,对于触发风险预警的客户采取一定的措施,如电话核实、提前收回贷款等。
6). 模型优化与验证:跟踪、监测、维护及优化风控策略,确保风控策略的效能及其提升。
在账务生命周期管理中,有还款计划试算、建账、期供计算、扣款、还款、展期、减免、调账、差错处理、核销等环节。
在互联网金融的业务里,联合放款的模式是一个重要的组成部分。比如,银行之间的合作,银行与金融机构(蚂蚁金服、微信、京东金融)的等。通过银银合作的模式,共同打造贷款产品,实现共赢。
出资多样性
记账多样性 我行、他行部分需分别记账
扣款方式多样性
记账核算
对账服务 为确保每个账期内互联网消费金融平台与银行、第三方支付的交易资金正确性,需要进行对账
资金对账:将业务资金流水和第三方支付、存管银行的资金台账根据流水号进行每日匹配对账; (2)内部对账:将业务系统交易流水与资金系统进行对账,将资金流水进行记账,进行资金系统与财务系统的对账,对账成功,再入账
放款与还款服务 这里涉及到与支付平台的交互,资金的支付、和客户还款的划扣等; (1)放款服务:放款校验、放款额度管理、记账等; (2)还款服务:批量还款、实时批扣还款、智能还款、用户手动还款、提前还款等。
合同管理 这里主要是指资金、账务相关的合同,如借款合同。
报表 报表服务主要包括:还款信息报表、更改信息报表、费用信息报表等
柜面服务 柜面功能主要有: (1)柜面提前还款(申请、审批、咨询等); (2)撤销放款、撤销还款; (3)贷后核销管理(手动核销、核销后收回等); (4)贷款清收。
贷后变更 主要功能有:贷款变更、期限变更、卡号变更、利息减免等。
凭证归集 主要功能有:凭证归集(还款本息凭证、结清证明、还款清单等)、凭证打印。
在介绍监控系统建设设计之前,让我们首先看看,在互联网消费金融的高并发业务场景下,我们的对监控体系建设面临的困难和挑战有哪些:
在互联网消费金融分布式服务化架构下,不同的分布式服务间相互依赖,彼此协同来完成各类业务场景。如典型的用户发起一笔消费贷款业务场景,客户从前端发起一个请求,到最后的业务完成,需要经过很多环节,这些环节可能都是分布式服务的方式提供,部署在不同的服务器上进行。而在这种复杂的分布式服务场景下,为了定位问题、性能瓶颈查询、异常日志跟踪等,如果没有服务追踪和分析工具的帮助,都是非常困难的。
调用链监控核心概念
调用链监控的常用工具 Zipkin Twitter开源的zipkin,提供了完整的跟踪记录收集、存储功能,以及查询API与界面。其存储支持多种数据库:MySql、ElasticSearch、Cassandra、Redis等等,收集API支持HTTP和Thrift。Spring Cloud Sleuth是Spring Cloud封装的Zipkin兼容客户端Tracer,添加traceId和spanId到Slf4J MDC。支持埋点的库 : • Hystrix • RestTemplate • Feign • MessagingwithSpringIntegration • Zuul
CAT 大众点评开源的基础监控框架,在中间件(MVC框架、RPC框架、数据库框架、缓存框架 等)得到广泛应用,为点评各个业务线提供系统的性能指标、健康状况和基础告警。
Cat 优势: 实时处理:信息的价值会随时间锐减,尤其是事故处理过程中 全量数据:全量采集指标数据,便于深度分析故障案例 高可用:故障的还原与问题定位,需要高可用监控来支撑 故障容忍:故障不影响业务正常运转、对业务透明 高吞吐:海量监控数据的收集,需要高吞吐能力做保证 可扩展:支持分布式、跨 IDC 部署,横向扩展的监控系统
在互联网消费金融的业务场景下,每天都有都能产生海量的日志数据。
ELKStack与EFKStack 1). ELK Stack 是 Elasticsearch、Logstash、Kibana 三个开源软件的组合。在实时数据检索和分析场合,三者通常是配合共用,而且又都先后归于 Elastic.co 公司名下,故有此简称。
ELKStack具有如下几个优点:
EFK由ElasticSearch、Fluentd和Kibana三个开源工具组成。Logstash是一个具有实时渠道能力的数据收集引擎,但和fluentd相比,它在效能上表现略逊一筹,故而逐渐被fluentd取代,ELK也随之变成EFK。
日志采集核心技术栈介绍
Metric 监控
系统层监控
基础设施监控
移动端、前端的监控内容包括:
9.6.1 互联网消费金融业务监控大屏
建设业务监控大屏,运维调度和监控中心可以通过中心仪表板提供实时动态的业务运行状况监控视图,监测和告警大量相关内容,实时发现问题和定位问题。 监控的主要内容包括包括:业务相关统计数据,如业务质量、业务数量、用户访问数、定义的URL数量、互联网访问数和错误个数;业务实时动态;业务访问统计;业务健康度;业务质量分析及资源使用量等。
业务汇总类监控
1) 对当天的进件量进行监控。
2) 进件审批场景的监控:如审批的数量、失败数进行监控;
3) 实时客户访问数量进行监控;
4) 对累计放款金额的监控:
贷款流程监控
1) 放款、还款流程监控
2) 审批环节监控
3) 风控环节监控
4) 关键业务规则监控
定时跑批监控
1) 跑批节点进行监控
2) 跑批时效进行监控
外部接口监控
1) 调用外部接口超时监控
2) 调用外部接口出错监控
设计埋点的模型
设计业务的监控埋点目标设计
搭建互联网消费金融监控,能为我们的系统带来很多好处:
及时告警
准确告警
通常我们需要给异常分级处理。
告警的通知方式
根据告警的紧急程度采取不同的通知方式,优先级依次是:
短信/电话 > IM(微信钉钉等) > 数据图表
Prometheus的特点 Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB)。Prometheus使用Go语言开发,是Google BorgMon监控系统的开源版本。
Prometheus的特点:
Prometheus的基本原理是通过HTTP协议周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口就可以接入监控。不需要任何SDK或者其他的集成过程。这样做非常适合做虚拟化环境监控系统,比如VM、Docker、Kubernetes等。输出被监控组件信息的HTTP接口被叫做exporter 。目前互联网公司常用的组件大部分都有exporter可以直接使用,比如Varnish、Haproxy、Nginx、MySQL、Linux系统信息(包括磁盘、内存、CPU、网络等等)。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。