银联C端用户多活架构

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1.
2.
3. 姓名:廉烨 公司: 职位:架构师 邮箱:lianye@unionpay.com 简介:2016年硕士毕业于北京大学软件与 微电子学院,同年加入中国银联,担任后 台架构师,主要专注于云闪付用户增值业 务后台系统的架构设计与优化、亿级用户 管理体系设计,以及金融支付行业C端风控
4. 目 录 1 背景 2 常见模式 3 方案
5. 一、背景 --业务现状 银联C端业务快速增长 亿级 用户 2017年 2018年 2019年 注册用户数 2020年 绑卡数 至今 海量数据
6. 一、背景 --业务架构 端 业 务 后 台 用 户 信 息 中 心 支付 转账 用户基础信息服务 权益 商城 公缴 用户扩展信息服务 注册 登陆 session 个性化信息 查询 修改 注销 标签画像 收货人信息 头像 关联信息 理财 卡类服务 绑卡 实体卡 信贷 营销 核验类服务 卡列表 卡详情 身份认证 人脸认证 云卡 虚拟卡 短信验证 银行要素认证
7. 一、背景 --系统架构 http socket 管理层 监控 内部协议 web 网关层 协议转换 路由转发 鉴权认证 离线层 限流熔断 灰度分流 整合 服务层 配置 业务服务 批量 管理服务 参数服务 推送 管理 数据层 运营 分析 数据库 缓存 MQ 对象存储
8. 一、背景 --数据密集 用户c123(示例) 账号 基 本 信 息 u12345678 联系人 张三 手机号 13011122222 联系手机号 15044466666 邮箱 abc@163.com 联系地址 北京市丰台区... 名称 David 联系邮箱 111@126.com 登陆密码 ****** 欢迎语 welcome !!! 账户状态 正常 学历 本科 注册时间 2019-01-15 14:25:01 爱好 钓鱼 证件类型 身份证 头像 ... 证件号 210404****0032 关联商户 / ... ... ... ... 扩 展 信 息 绑 卡 信 息 绑 卡 信 息 卡号 6214****0020 绑卡来源 云闪付 卡类型 信用卡 卡等级 钻石卡 银行预留手 机号 13011122222 ... ... 卡号 6228****7109 绑卡来源 华为钱包 卡类型 借记卡 卡等级 普通卡 银行预留手 机号 13011122222 ... ... 其 他 信 息 性别 男 年龄 35 常驻地 北京、济南 消费偏好 汽车、家装、母婴 活跃指数 85 生命周期 完成绑卡和支付 流失指数 17 活动参与度 68 社会属性 已工作 ... ...
9. 一、背景 --请求分布 修改类请求 查询类请求 by 其他维度 by 卡信息 by 凭证信息 by 关联信息 by 卡信息 by 身份信息 by 身份信息 by 账号 by 账号 0 20 40 60 修改类请求携带的维度信息 80 100 0 查询类 修改类 20 40 查询类请求携带的维度信息 60 80
10. 一、背景 --多活目标 C端用户对延迟较为敏 中心级高可用架构, 部分业务需保证事务 感,多中心架构下用 在中心切换、扩缩容、 性,多中心架构下不 户中台仍需保证高效 分流时,应做到平滑 可破坏事务性 响应和低延迟 一致 性 性能 用户数据一致性要求 较高,需保证一定的 一致性 事务 过渡 延迟 容忍 数据同步不可避免存 在延时,多中心架构 下应避免同步延时产 生业务影响 平滑 切换
11. 目 录 1 背景 2 常见模式 3 方案
12. 二、常见模式 接入系统 --数据冷备 接入系统 接入系统 优点: 改造简单,快速搭建多活,实现多中心高可用 中心A 中心B 中心C l 网关层 网关层 网关层 缺点: 服务层 数据层 服务层 数据层 服务层 数据层 l 仅解决应用层的多活,仅一个B数据中心提供服务, A/C数据中心仅为冷备 l 中心切换时,服务层还需配合切换数据中心 l 服务层频繁跨中心调用数据层,高并发系统的异地延 时和带宽不可接受 l 整体性能受限于一个数据中心,无法通过增加中心而 提升性能
13. 二、常见模式 --数据多活 接入系统 接入系统 接入系统 中心A 中心B 中心C 网关层 网关层 网关层 服务层 服务层 服务层 数据层 数据层 数据层 优点: l 数据层、服务层、网关层均为多活,可通过增加中心 提升整体性能 缺点: l 根据存储架构不同,还可分为以下2种模式:数据切 分、全量互备 l 数据切分模式仅适用于所有请求均携带切分依据的场 景,且可能引入跨中心事务 l 全量互备模式下数据冗余存储,在单用户并发跨中心 访问时可能引起数据终态不可靠和数据不一致问题
14. 二、常见模式 --数据多活&数据切分 接入系统 接入系统 接入系统 中心A 中心B 中心C 网关层 网关层 网关层 l 由服务层或网关层根据请求携带的数据,按 照切分规则访问对应的数据中心 l 服务层 服务层 服务层 数据层 数据层 数据层 数据按照某一维度(如uid)进行中心切分, 该模式仅适用于所有请求均携带切分依据的 场景,且可能引入跨中心事务
15. 二、常见模式 --数据多活&数据切分 login with mobile=13567284520 请 求 中 未 携 带 切 分 依 据 网关层 网关层 服务层 服务层 无法根据uid路由数据中心 uid mobile name uid mobile name u123 13011122222 David u124 14492001472 Marry u125 15901025342 Li Lei u126 13567284520 Zhang San 中心A 中心B
16. 二、常见模式 --数据多活&数据切分 bind card:uid=c123,card=62140000 跨 中 心 网关层 网关层 服务层 服务层 事 uid card bind st uid card bind st 务 u123 62140001 1 u124 62140000 1->0 u123 62140000 1(insert) u126 62149999 0 中心A 中心B
17. 二、常见模式 --数据多活&全量互备 接入系统 接入系统 接入系统 中心A 中心B 中心C l 每个中心均存储全量数据,并两两之间相互同步 网关层 网关层 网关层 l 网关层、服务层、数据层均无状态 l 在单用户并发跨中心访问时,可能引起数据终态 服务层 服务层 服务层 数据层 数据层 数据层 不可靠和数据不一致问题
18. 二、常见模式 跨 中 心 并 发 写 同 一 条 数 据 --数据多活&全量互备 set user c123 st=1 set user c123 st=2 网关层 网关层 服务层 服务层 uid mobile st u123 13011122222 1 u124 14492001472 0 中心A ? uid mobile st u123 13011122222 2 u124 14492001472 0 中心B
19. 二、常见模式 --数据多活&全量互备 set user c123 st=1 get user c123 跨 中 网关层 网关层 服务层 服务层 心 并 发 先 uid mobile st uid mobile st 写 u123 13011122222 1 u123 13011122222 0 后 u124 14492001472 0 u124 14492001472 0 读 中心A 中心B
20. 目 录 1 背景 2 常见模式 3 方案
21. 三、方案 --整体架构 中心级读写分离 l 在数据多活&全量互备模式的基础上,区分“读中心”和“读写中心” l 写请求发到“读写中心”,读请求发到“本中心” l “读中心”和“读写中心”均能接收接入方的读写请求,由网关层根据请求类型进行路由控制 接入系统 接入系统 接入系统 读中心A 读写中心B 读中心C 网关层 网关层 网关层 服务层 服务层 服务层 数据层 数据层 数据层 大量读 少量写
22. 三、方案 --解决单用户跨中心读写并发问题 写请求(c123) ①写请求 读中心A 网关层 读写中心B 标记缓存 c123 ②转发至读写中心B 服务层 网关层 ④同步写标记缓存 读中心C 标记缓存 c123 网关层 ⑤异步写标记缓存 服务层 服务层 ③业务处理与数据落地 数据层 数据层 数据层 标记缓存 c123 引入标记缓存,标识 用户数据最近发生了 修改
23. 三、方案 --解决单用户跨中心读写并发问题 短期内发生的读请求(c123) ①读请求 读中心A 网关层 读写中心B 标记缓存 c123 网关层 读中心C 标记缓存 c123 网关层 ③转发至读写中心B 服务层 服务层 服务层 ④业务处理 数据层 数据层 数据层 标记缓存 一个用户在标记缓存 中存在,意味着该用 户近期内发生过数据 ②标记缓存中存在该用户 修改,为保证读取数 据一致性,该笔读请 求应跨中心调用读写 中心进行处理 c123
24. 三、方案 --解决单用户跨中心读写并发问题 一段时间后发生的读请求(c123) ①读请求 读中心A 网关层 读写中心B 标记缓存 网关层 读中心C 标记缓存 标记缓存 网关层 ②标记已失效 ③本中心调用 服务层 服务层 服务层 ④业务处理 数据层 数据层 数据层 标记缓存中的用户标 记为短期有效
25. 三、方案 • • --标记数据有效期 有效期<<数据同步时延 有效期=数据同 步时延 数据尚未同步完成,标记数 据已失效,无法正常完成标 记缓存的职责 • 数据同步时 延存在波动 • 有一定的概 率引发读取 数据不一致 引发跨中心先写后读的读取 数据不一致问题 有效 期略 高于 数据 同步 时延 有效期>>数据同步时延 • 数据同步早已完成,读请求已经可以访问本 中心,但由于标记数据尚未失效,仍要跨中 心访问读写中心 • 导致读写中心压力过大 • 导致读请求平均响应延迟增大 标记数据有效期 过短 数据同步时延范围 最优 过长
26. 三、方案 --数据同步故障处理 数据同步组件故障时,同步时延将持续增大 l 数据尚未同步完成,但标记数据不断失效,将引发跨中心先写后读场景下大规模数据不一致问题 监测到数据同步组件故障或缓慢后 l 根据数据同步时延,动态调整写标记数据的有效期 l 触发批量任务,扫描标记缓存,延长已存在标记数据的有效期,以确保读取修改过的用户数据时, 可以通过跨中心访问读写中心来获取到正确的数据 读中心A 读写中心B 读中心C 标记缓存 标记缓存 标记缓存 延长 批量任务 监控 数据层 数据层 数据层
27. 三、方案 --中心控制 切换读写中心 读写中心故障时,需要切换 读写中心 部分涉及到数据层的重要变 更,需要将读写中心切换至 其他中心后进行 流量切分 正常情况下仅本中心调用, 以保证服务性能 支持将每个中心流量按照 比例分配到各个中心,充 分利用多中心资源 中心下线 中心故障时,将该中心业 务层下线,流量平均分配 至剩余中心,接入系统无 感 中心上线 中心故障恢复后,重新加 入多活架构 中心扩容,可将新部署的 中心加入多活架构
28. 三、方案 网 关 层 启 动 时 --中心控制 读中心A 读写中心B 读写中心B 网关层 网关层 服务层 服务层 数据层 数据层 数据层 参数信息 参数信息 参数信息 中心参数加载至内存 网关层 中心配比 中心角色 ... A中心 100:0:0 读中心 ... B中心 0:100:0 读写中心 ... C中心 0:0:100 读中心 ... 服务层 ︐ 拉 取 参 数 加 载 到 内 存 参数服务
29. 三、方案 --中心控制 分流控制中心 将 读中心A 读 写 切 换 中心参数加载至内存 网关层 中 心 第一步:修改中心参数 服务层 心 读写中心B 网关层 网关层 中心配比 中心角色 ... A中心 100:0:0 读中心 ... B中心 0:100:0 读写中心 ... C中心 0:0:100 读中心 ... 服务层 服务层 数据层 数据层 参数信息 参数信息 参数服务 至 中 读写中心B 多写,确保一致 数据层 参数信息 中心配比 中心角色 ... A中心 100:0:0 读写中心 ... B中心 0:100:0 读中心 ... C中心 0:0:100 读中心 ...
30. 三、方案 --中心控制 分流控制中心 第二步:广播通知生效 将 读 写 读中心A 读写中心B 读中心C 中 网关层 网关层 网关层 服务层 服务层 服务层 数据层 数据层 数据层 心 切 换 至 中 心
31. 三、方案 将 读 通 写 知 中 心 切 生 失败 失败 超时 成功 成功 完成 切换 成功 停止 切换 停止处理写请求 (业务降级) 同步等待数据同 步完成 覆盖内存中参数 读写中心=A 回退内存中参数 读写中心=B 获取最新参数 读写中心=A 恢复处理写请求 恢复处理写请求 过 程 ︓ 至 状 中 态 开始 执行 切换 效 换 心 超时 --中心控制 机 回退参数
32. 三、方案 --健康监测 健康探测 根据多项指标, 判断是否需要 中心下线 收集各向流量、耗时、应答码 接入系统 接入系统 接入系统 读中心A 读写中心B 读中心C 网关层 网关层 网关层 服务层 服务层 服务层 数据层 数据层 数据层 监测中心 收集数据同步延时
33. 三、方案 --优缺点 n 仅1个数据中心处理写类操作,天然避免了跨中心事务 n 仅1个数据中心处理写类操作,天然避免了跨中心并发写同一条数据,导致的数据终态不可靠 问题 n 通过读写中心分离,针对读类请求,每个中心均可本中心调用,解决95%以上的跨中心调用 n 可通过中心扩容,提升整体读类服务性能 n 写类请求不可避免跨中心调用,但写类请求耗时容忍度较高 n 写类服务无法通过中心扩容提高整体性能 n 中心分流时,优先按照读写分流策略+标记缓存分流策略,其次按照分流配比、分流 名单等,会损失部分分流效果 n 各中心压力略有不均,读写中心承受压力更大(差距<10%,属可控范围内) n 中心存在状态,切换过程略复杂
34.
35.

首页 - Wiki
Copyright © 2011-2024 iteam. Current version is 2.137.1. UTC+08:00, 2024-11-24 17:02
浙ICP备14020137号-1 $访客地图$