写点什么

揭秘白条数据架构演变历程

2020 年 3 月 25 日

揭秘白条数据架构演变历程

第一次演变

时间:2014.1~2015.5


目的:解决核心和非核心业务系统对关键数据库的访问;提供一个分库分表后白条数据汇总平台;满足财务结算、运营系统、客服系统对白条的数据查询(非核心业务不对主业务库做相关的数据处理)。


白条业务系统(贷、分期、还、逾、退)所生产的数据信息通过 MQ 异步将数据信息更新到 solr 集群中,solr 集群将数据表信息和 collection 进行一一对应,collection 里做 shard(针对不同表的数据 shard 的个数也不一样) 来分散数据的存储。使用 solr+hbase 做为介质,solr 做表里需要查询字段的索引,hbase 做全量数据存储。


1 Solr+hbase 数据架构


2 Solr+hbase 架构的优缺点

优点


  • 数据写入 solr 中,少量数据(>30 亿)性能非常好,通过 solr 进行 shard 部署。

  • 对实时性不是非常高的业务,直接可以查询 solr,减少到核心业务库的压力。


缺点


  • 大数据量的写入及查询慢。

  • 当有节点挂了,经常需要重启整体集群来保证集群稳定性。


solr 扩展性复杂,业务侵入性大。


第二次演变

时间:2015.6~2016.5


目的:随着业务增加,数据量不断的呈几何倍的增涨,对数据质量及完整性的要求越来越高;结算人员需导入及导出大量线上数据作为结算处理,solr+hbase 已满足不了,由此产生了白条 mongodb 的数据架构。


白条 mongodb 数据架构是引进 nosql 将业务产生的数据信息存入 mongodb,使用 mongodb 集群来按月来分表,mongodb 集群分为 3 个 mongos 、3 个 config、3 个 replica set,replica set 里也采用分片来分散数据的存储,通过 mongos 和应用系统进行数据交互。


1 白条 mongdb 数据架构


2 白条 mongdb 数据架构优缺点

优点


  • 通过按月来进行分表存储,只查询近一个月的热点数据,速度非常快,性能高。

  • 非结构化数据存储,没有固定的表结构,不用为了修改表结构而进行数据迁移。


缺点


  • 业务侵入性大,只要有数据更新,就需要在业务里做代码逻辑处理,耦合度太高,复杂。

  • 数据量在>60 亿,mongodb 架构非常适合。

  • mongdb 比较耗内存,热点数据都放在内存里,以内存换取时间性能。

  • mongodb 容量问题,单台服务器的硬盘容量是固定的,业务成倍扩增长,数据量也增长非常迅速,当超过整个集群的容量时,扩容非常麻烦。因此在做 mongodb 架构时需要考虑数据量问题,复制集扩展难度大。


第三次演变

时间:2016.10~2017.6


目的:还是业务迅速发展,数据量暴涨(60 亿+),对数据的质量及完整性的要求越来越高,业务查询量大, mongodb 经常被容量问题所困惑,有性能问题影响。并为财务、运营、客服、对账内部提供高安全、高可靠、高性能的服务


白条大数据平台,通过使用 dbrep 组件,模拟 mysql 的 slave 的方式,实时获取增量 binlog,通过解析 binglog,采集数据库变动内容,并将变动内容以 json 格式存储到(kafka)消息系统,消费端通过分布式来消费 kafka 中的消息数据信息,将消息数据按指定的 ES 索引列往 ES 里写入,并写入到 Hbase 大数据平台,大数据平台内部提供高安全、高可靠、高性能的服务。


1 白条大数据平台架构


Dbrep 是基于 kafka、zookeeper、flume 搭建的准实时数据同步系统,其主要涉及以下几大模块。


  • Dbrep-node:是 dbrep 的运行容器,根据配置,其上可以运行 dbrep 提供的各种 agent 组件,如数据采集、数据落库等常用数据同步组件。

  • Dbrep-consumer:以嵌入的方式运行在用户应用程序上,根据配置从消息中间件订阅消息,并交给用户相应的处理器进行处理。

  • Dbrep-console:dbrep 配置管理控制台,负责 node 和 consumer 具体配置信息的配置,及状态监控,异常告警等基础功能。

  • ZK 集群:存储 dbrep 基本配置,以及 dbrep 各节点间状态协调。

  • KAFKA 集群:存储数据变动记录。


2 大数据平台架构的优势

  • 数据实时性强,通过 binlog 做 mysql 的 slave 基本是秒级数据同步。

  • 数据完整性高,准确性高,mysql 的 binlog 一般不存在丢数据的问题。

  • 易扩展性,不针对业务(无业务侵入),只针对数据库。

  • 支持无限扩容,海量数据。


总结

白条大数据平台诞生之初正是互联网行业的高速发展期,经历这些年的发展,取得了很大的进步,从草根走向专业,从弱小走向规模,从分散走向统一,从杂乱走向规范。 本文主要讲述了几年来白条大数据平台架构演进的过程,技术架构单独拿出来看我认为没有绝对的好与不好,需要要放在彼时的背景下来看,要考虑业务的时效价值、团队的规模和能力、环境基础设施等等方面。 架构演进的生命周期适时匹配好业务的生命周期,才能发挥最好的效果。


2020 年 3 月 25 日 19:48376

评论

发布
暂无评论
发现更多内容

用户管理系统 - 用户权限设计从入门到精通

蒋川

后台开发 权限系统 权限管理 权限架构 用户管理

Linux之ln命令

入门小站

Linux

“吴痛针灸”代言人翻车,为什么女性会重新定义品牌优势

脑极体

Rust从0到1-面向对象编程-概念

rust oop 面向对象编程

【Flutter 专题】80 初识 Flutter Stream (一)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 7月日更

[翻译]innodb_ruby 项目简介

keaper

MySQL 数据库 后端 服务端 innodb

大数据实战训练营作业一

Clarke

在线XML转CSV工具

入门小站

Vue进阶(三十五):watch监听函数详解

No Silver Bullet

Vue 七月日更 watch

使用dubbo-go搭建dubbo接口测试平台

捉虫大师

golang dubbo 接口测试 dubbo-go

🐬【MySQL技术导航】常用函数介绍(1)

李浩宇/Alex

MySQL 7月日更

Python OpenCV 图像的几何变换,先说不平凡的 resize 函数

梦想橡皮擦

Python 7月日更

MERN堆栈

DisonTangor

node.js mongodb React Express

华为云UGO正式公测:4大核心优势破解异构数据库迁移难题

华为云开发者社区

数据库 华为云数据库 异构数据库 对象迁移 应用迁移

基于迁移学习的语义分割算法分享与代码复现

华为云开发者社区

语义分割 modelarts 迁移学习 语义分割算法 迁移分割

国内首家入驻统信系统的APaaS厂商

明道云

char+char=number

喵叔

7月日更

微信朋友圈高性能复杂度分析

木云先森

架构实战营

并发量很大?腾讯T4手撸的并发手册真的有这么火吗

架构大师

Java 程序员 高并发 java编程 Java学习

【求转发】郑州加油!

IT蜗壳-Tango

7月日更 郑州加油

【架构训练营】模块二作业

zclau

【LeetCode】两个链表的第一个公共节点Java题解

HQ数字卡

算法 LeetCode 7月日更

智能化分析样本,多维数据分析,便捷考评系统——快考题!

Geek_6d9bcc

微信朋友圈复杂度分析

桂阳

开源爆款,阿里P8技术笔记「k8s+docker」理论实战齐飞

架构大师

Java Docker 程序员 k8s Java学习

Vue进阶(幺玖肆):localStorage应用总结

No Silver Bullet

Vue LocalStorage 七月日更

现代企业架构师的5大特征及六种方法

禅道项目管理

架构 数据 开发 创新 行业趋势

Go语言,什么情况下应该使用指针?

微客鸟窝

golang Go 语言

大数据实战训练营作业二

Clarke

使用Docker运行OnlyOffice的Node.js示例

一个需求

onlyoffice

FIL币价跌入谷底,什么时候会涨,IPFS的出路又在哪里?

IPFS8822

智慧城市 FIL币价格行情如何 通信运营商 币圈 ipfs矿机

揭秘白条数据架构演变历程-InfoQ