小草的blog

《商业银行分布式架构实践》笔记

初读下来,这是一部关于银行科技分布式实践非常全面的指导书籍,不止涉及技术层面,还要企业组织架构建设、文化等各个方面的阐释,适合银行业的架构师、技术管理者阅读。

介绍商业银行银行科技的转型与思考

当代银行的业务特征

  • 公司经营:产品销售 –》服务运营
  • 客户服务:被动型服务 –》主动型服务
  • 公司治理:粗放型–》精细型
  • 监管:严格及专业程度加强
  • 经营模式:分业经营–》混合经营

银行信息科技的特征

  • 一致性
  • 及时性
  • 安全性
  • 高可用
  • 追溯性
  • 场景化
  • 智能化
  • 人性化
  • 实时化
  • 海量化
  • 扩展性
  • 效益性
  • 自主性
  • 迭代化

分布式系统建设理念

分布式应用架构核心理念是“纵向拆分,横向扩展”
经典理论

  • ACID
  • CAP
  • BASE

分布式架构的设计模式

分布式应用面临的挑战

  • 分布式系统数据如何拆分
  • 一笔交易进入系统如何路由,路由到那个数据分片
  • 一笔交易后续有关联交易,如何搜索原交易,并将关联交易正取路由到原交易所在数据库分片上进行处理避免跨库问题
  • 当交易被路由到正确的数据库分片所对应的应用服务后,应用服务采用何种数据访问侧率,满足由于数据拆分造成的不同数据源的访问请求
  • 分布式环境如何有效利用分布式计算资源
  • 如何解决跨库查询问题
  • 如何平滑将老系统平滑切换到分布式架构上,满足数据逐步切换,业务平滑过渡的要去

应用设计模式

  • 通道型应用(手机银行、网银、网点渠道、网联、银联渠道)
  • 前置网管型(服务总线、网关应用、外联渠道)
  • 读写分离产品型应用包括数据型应用(客户信息、机构员工)
  • 分库分表型应用(账户类应用、理财、积极等)
  • 分区多活产品型应用(银行核心、信用卡)

关键技术能力

云平台

  • Iaas 融合云
  • Paas 平台
  • k8s + docker

服务治理

对企业来说,服务治理是目的,微服务是其中一种实现手段

  • 服务总线治理模式
  • 微服务架构下的治理模式
  • 基于java虚拟机的服务治理
  • 面向云的下一代服务治理模式
    服务治理策略,实施原则
  • 明确服务治理的目标
  • 完善服务治理内容
  • 规划服务治理的阶段
  • 建立服务治理组织架构
  • 设计服务治理模型
  • 构件服务体系
  • 应用服务建模方法
  • 管理服务的完整生命周期

分布式数据访问

分库分表方案

  • 拆分键
  • 拆分字段
  • 拆分规则

分库分表中间件

  • client
  • proxy
MySQL协议层
  1. mysql客户端与服务器交互分为两个阶段
    • 握手认证阶段
    • 命令执行阶段
  2. mysql协议基本数据类型
  • 整型
  • 字符串(以NULL结尾)
  • 二进制数据(长度编码)
  • 字符串(长度编码)
  1. mysql协议报文类型
  • 登陆认证报文
    握手初始化报文
    登录认证报文
  • 客户端命令请求报文(24种)
    COM_QUIT
    COM_INIT_DB
    COM_QUERY
    COM_PREPARE
    COM_EXECUTE
  1. mysql协议层NIO
    协议层基于NIO采用Reactor模式,Reactor直接完成Mysql报文的解析,根据不同的报文类型调用不同的处理器
  2. SQL解析器
  • Parser
    Parser 语法分析
    Lexer 词法分析
  • AST
    parser输出的结果,标识SQL结构的java对象
  • Visitor
    visitor模式遍历AST
  1. 执行计划生成器
    SQL路由计算
    拆分重写sql-》|sql目标数据源|
    | 表ID |
    |执行单元 |
  2. 路由类型
  • 拆分键 SQL中包含分库分表列(sharding)
  • 库表扫描类型:SQL中未包含分库分表列
  • 执行计划生成策略
    1)并发执行每个单元对应sql(适用于分表不多场景)
    2)按照数据源进行sql合并,每个库一个执行单元,查询sql有limit、order by在合并时去掉,只在最后添加,适合分表较多,数据库性能较好场景
    3)单线程顺序执行所有分表sql,使用与数据库性能一般,对sql响应时间要求不高的场景
  1. sql执行器
    负责sql的实际执行
  • 执行线程池
  • 数据库连接池

数据扩容

分布式事务

  • 单库事务
  • 最大努力一阶段提交
  • XA两阶段提交

消息中心

  • 异步处理
  • 应用解耦
  • 削峰填谷
  • 传输日志消息
  • 最终一致性

全局序列生成器

要求

  • 唯一
  • 范围(最大值-最小值)
  • 有序(全局)

分类

  • 全局唯一无序
  • 全局唯一有序

缓存

本地缓存

  • EhCache
  • GuavaCache

应用缓存

  • redis
  • memached

分布式存储

  • 基于kvm虚拟化的云计算场景
  • 容器的使用场景
  • 文件共享场景

大数据技术

4v(Volume、variety、velocity、veracity)–》3T

  • Real Time 实时
  • Right Time 适时
  • All The Time 全时

数据架构设计原则

分层原则
  • 数据产生层
  • 数据交换层
  • 数据整合层
    贴源模型层
    整合模型层
    通用汇总层
  • 数据应用区
    数据集市
    数据分析挖掘
    数据引擎
  • 数据归档层
数据效率原则
数据一致性原则
数据架构可扩展性原则
数据设计全局性原则
数据架构技术合理性原则

高可用、同城双活与灾备

分布式架构双活设计原则

  • 高可用/高可靠
  • 冗余
  • 隔离
  • 可扩展
  • 闭环

开发运行效能建设

DevOps体系

三大支柱

  • 敏捷管理
  • 持续交付
  • IT服务管理

一个基础

精益管理(Lean/Tps)模式
双速IT/双峰挑战
SOE(system of engagement)交互型系统
SOR (System of recording) 记录型系统

组织架构建设

  • 文化
  • 组织结构
  • 制度建设
  • 人才

银行分布式架构改造要点与实施阶段规划

改造要点

  • 吞吐量与性能要求
  • 系统可用性要求
  • 数据一致性要求
  • 容灾与备份要求
  • 系统安全性需求
  • 运维自动化需求

案例

  • 核心账务系统
  • 支付结算系统
  • 线上贷款系统

1 评论

  1. Awesome post! Keep up the great work! 🙂

发表评论