当前位置: 首页 > news >正文

解码 | 25 分钟开发分布式架构的转账小程序

如今,转账场景深入在我们生活的方方面面,也有很多技术团队在独立开发转账的小程序。

本文将给大家对比常见的小程序和分布式小程序的优劣,最后借助 SOFAStack 的能力,提供 25 分钟实现稳定的分布式架构的转账小程序的 Demo。


背景

2017 年 12 月 ,蚂蚁金服发布自主研发的分布式中间件(Scalable Open Financial Architecture,以下简称 SOFA ),并提出金融机构进行业务突破和创新的关键是:行业 IT 架构从传统的集中式架构向分布式架构转型。


2018 年 4 月,蚂蚁金服 SOFA 启动开源计划,并开放多个组件,这一系列的动作受到大家的关注和支持,同时,SOFA 社区也日益壮大,除了积极参加开源社区的分享之外,目前已经在杭州、北京、深圳的 Meetup 与大家相见。


2018 年 9 月,杭州蚂蚁金服 ATEC(Ant Technology Exploration Conference),SOFA 再次与开发者们相约,联合支付宝小程序推出《 25 分钟开发分布式架构的转账小程序》的体验课程,大家可在杭州云栖小镇国际会展中心场馆 B 场馆- ATEC 开发者乐园 CodeLab 来现场动手实践,时间为 2018/9/19 - 9/22。

场景介绍

一个精简的转账业务,一般会包含几个部分:

  • 用户发起转账

  • 系统记录用户的支出记录

  • 将资金从 A 用户转 B 用户

  • 返回给用户“操作成功”提醒,并且定期会给用户发送一些日结或者月结的收支账单

这里涉及到账户、转账、账单三个功能模块。

小程序集中式后台架构

常见的集中式架构如下图所示,转账涉及的账户、转账、账单等功能模块都集中在一个后台系统中,所有的数据都在同一个数据库里面。在业务量不大的情况下,集中式后台系统设计简单,部署方便,没有太多复杂的场景。

但是在大业务量的情况下,集中式架构的缺点也一一体现,例如成本较高、系统容量有限、扩展能力受限、代码繁重、故障影响面大等等。


小程序分布式后台架构


在上图中,可以看到原来集中式的系统已经拆分为多个后台系统,原来的集中式数据库也已经拆分为两个数据库,原来进程内的系统交互也变成了进程间的系统交互。

分布式后台架构很好的解决了集中式架构的问题的同时,但是也带来了一些新的挑战。

例如:

  • 系统间的同步调用、异步调用

  • 分布式数据源的数据库访问

  • 分布式事务


我们来举个例子,假设转账业务的前端是小程序,其完整的流程图如下:

  • 用户扫描二维码进行登录,成功后可以查看当前的余额

  • 选取另一个用户进行转账,输入金额并提交,同时会做限额的校验

  • 转账应用记录流水明细

  • 转账应用调用账号应用,进行两个账号余额增减

  • 转账应用发送成功消息给用户


采用以上的方案,可能会面对一些问题,比如:

  • 如何保证转账应用跟账号应用之间的事务一致性?

  • 转账的明细库容量不够了如何动态水平扩容?

  • 数据如何由单库迁移到多库?如何保证消息发送的可靠性?等等


这时候,需要一套成熟的中间件来为用户解决分布式架构下的问题。业内有不少不错的中间件产品,比如开源的 Spring Cloud 、SOFAStack 框架等。

今天,我们现场体验一下「基于 SOFAStack 中间件的转账小程序」的特别之处

蚂蚁金融科技的 SOFAStack 中间件从蚂蚁内部演变发展而来,经历了数 10 年金融级业务的发展。


SOFAStack 可以帮忙用户快速构建健壮的系统:

  • 分布式事务 DTX 可以解决转账链路上 payment 跟 account 之间跨资源的分布式事务问题,业务代码几乎不用调整;

  • 数据访问代理 DBP 可以解决 payment 数据库容量的问题,用户像使用单库单表一样访问分库分表的数据访问代理 DBP 实例,并且可以跟分布式事务 DTX 集成使用;

  • 任务调度及消息队列可以解决账单系统(Bill)复杂的账单任务以及发送可靠的账单消息、支付成功消息给用户。

图中提到的 SOFAStack 产品如下,结合这些产品的能力,我们便能很好地解决普通的分布式小程序带来的问题:

  1. SOFABoot:基于 Spring Boot 的一套研发框架;

  2. 微服务

  • SOFARPC:一个高可扩展性、高性能、生产级的 Java RPC 框架;

  • 动态配置:动态配置是一个配置管理框架。它可以在分布式环境下、运行期动态管理应用集群配置参数,广泛用于业务参数配置、应急开关切换等场景;

  • 定时任务:定时任务服务旨在为业务系统提供统一通用的任务调度服务,提供定时任务的管理监控平台,减轻业务系统开发和后续线上运维的工作量;

消息队列:具备高可靠、高吞吐量、高可用、事务强一致性、可稳定支撑亿级数据洪峰的金融级消息中间件;

数据访问代理 DBP:专注于为金融级数据访问提供高性能、高可用、可扩展的轻量级解决方案;

分布式事务 DTX(FMT模式):在大规模分布式环境下,以优异的性能保障业务数据的一致性,支撑数亿级用户的资金操作。 广泛应用于交易、转账、保险理财等核心资金链路;

开始动手吧:

2018/9/19 - 9/22,蚂蚁金服将在杭州云栖大会暨蚂蚁 ATEC 科技大会期间打造蚂蚁开发者乐园,其中包含蚂蚁金融科技云+端一站式体验以及支付宝小程序挑战赛两大环节,SOFA 团队将在这里与你相约,我们更是准备了精美的礼品等待大家 ^_^

举办地点:杭州云栖小镇国际会展中心场馆 B 场馆 - ATEC 开发者乐园 CodeLab 区域


Demo 实现如下:



延伸阅读:

深度 | 为你解读 SOFA-DTX 分布式事务的设计演进路线上篇

深度 | 为你解读 SOFA-DTX 分布式事务的设计演进路线下篇


相关论坛推荐:数字金融架构转型专场

时间:9月21日下午13:30-16:30

在这场论坛上,我们即将习得如何打造安全、稳定、高效、敏捷的基础架构能力,打造下一代金融核心系统所涉及的关键技术和架构,相关话题包括高可用架构、资损防控、智能运维、容器云、分布式核心等。




长按关注,获取分布式架构干货

欢迎大家共同打造 SOFAStack https://github.com/alipay





相关文章:

  • 删除2018年以前的文件
  • UTF-8编码规则
  • Java 实现阿里云短信
  • Slog80_打包ArthurSlogMarkdownEditor编辑器至mac平台dmg安装包GET!
  • 一个网站同时监听两个端口
  • DataSet数据转换string字符串
  • Android 各种路径详细说明
  • 【SQL Server DBA】日常巡检1:数据库空间、状态、使用的监控
  • Java并发编程之Java CAS操作
  • jvm对类的加载顺序测试
  • Python正则表达式初识(二)
  • public protected private与this用法
  • 笠翁对韵(全卷,珍藏版附注释)
  • 独领风骚的开源接口管理平台 YApi v1.3.23 发布
  • SQL Server页类型汇总+疑问
  • 【附node操作实例】redis简明入门系列—字符串类型
  • 【技术性】Search知识
  • 2017 前端面试准备 - 收藏集 - 掘金
  • Codepen 每日精选(2018-3-25)
  • Django 博客开发教程 8 - 博客文章详情页
  • FastReport在线报表设计器工作原理
  • Flannel解读
  • HTTP中GET与POST的区别 99%的错误认识
  • Java基本数据类型之Number
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • Linux CTF 逆向入门
  • Python打包系统简单入门
  • scala基础语法(二)
  • Theano - 导数
  • 阿里云购买磁盘后挂载
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 关于Flux,Vuex,Redux的思考
  • 检测对象或数组
  • 看域名解析域名安全对SEO的影响
  • 突破自己的技术思维
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 正则表达式
  • MyCAT水平分库
  • UI设计初学者应该如何入门?
  • 移动端高清、多屏适配方案
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • #pragma预处理命令
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (PyTorch)TCN和RNN/LSTM/GRU结合实现时间序列预测
  • (第二周)效能测试
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (四)Android布局类型(线性布局LinearLayout)
  • (五)网络优化与超参数选择--九五小庞
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)