今天的内容重要分四个方面。第一,金融付出体系的一些特点;第二,我们的扫码付出体系技巧选型;第三,体系迭代过程中的架构演进;第四,与Go相干的一些坑。
金融付出体系的一些特点
图 1
起首大年夜营业流程入手,其实异常简单。一位花费者结账时,假如选择扫码付出的方法付款 100 元,产生一笔交易信息。如图 1 所示,我们看膳绫擎蓝色的线条,经由过程商家的收款产品,把这 100 元的交易信息送到我们的扫码付出体系,然后传递到后面的微信、付出宝或者其他支撑扫码付出的响应钱包,完成这笔交易信息的传递,完成这笔交易处理。
在行业内,平日称蓝色的线条为信息流。信息流是什么意思?就是传递这笔交易的信息。接下来, 完成 信息传递还没有停止,看图中灰色的线条,平日在第二天的时刻,即 T+1 时,我们会经由过程商家的清理银行把这 100 元清到商户的清理账户,如许才算完成了这笔资金的清理,是以我们称下面的灰色线条为资金流。很简单,我们今天更存眷的是膳绫擎信息流相干的处理。
接下来,我们看一下信息流相干处理。除了我方才提到的,及时交易处理 100 元的信息传递外,还会涉及到哪些方面呢?一个是及时交易的办事,别的一个是商户对账的办事。方才提到资金流的传递是商家收到 100 元,那么收到的金额对纰谬,和前一天交易行动是不是匹配呢?商家须要一些对账报表,来查对响应交易行动、到账资金,这就是对账办事。
别的,其他的一些商户办事,包含一些商户信息的保护,商户交易行动的萌芽,交易记录的萌芽方面,最基本来说是这三类的办事。别的,可能会有更多附加的办事,包含风控,以及其他的一些增值营销办事等。
起首是及时交易办事:API Gateway。回到方才 100 元的处理,大年夜商家收款产品,到我们扫码交易的处理体系,接口过来今后,在体系中进行一些响应的营业逻辑处理,交易信息落地,之后把交易信息分发到后面响应的接口。全部流程,实际上无非就是接口的转换,中心搀杂一些响应的营业处理。跟我们微办事架构上的 API Gateway 的定位其实异常类似,可以懂得为它就是一个参加了一些营业逻辑的 API Gateway 体系。大年夜商家对账办事来说,平日是在交易产生的第二天进行资金流的流转,与之同步的会有响应的对账报表要给到商家,为商家供给对账办事。平日来说,对账办事会涉及到批处理响应体系。商户办事刚才提到的萌芽、信息保护等,这些可能是响应的 web portal 供给响应的商户办事。
大年夜营业角度出发 , 对我们的体系有什么根本的请求?
第一,既然是付出体系,安然性肯定是再怎么强调也不为过的;
第二,稳定性也是一个必弗成少要推敲的关键点。包含我们的商家可能会有各类类型的客户,包含餐馆可能日间营业,夜店可能半夜也会有交易产生。全部体系 7*24 小时的稳定性,也是须要推敲的重点;
第三,我们体系的吞吐量,这个就很好懂得了,当前面的客户、商家交易量上来的时刻,全部体系包含并发处理才能,请求的响应时光等,都是营业上异常存眷的重点。
回到最开端提到的问题,我们用 Golang 来搭建付出处理体系,靠不靠谱。 在我懂得就是这三方面的考量:安然性有没有包管,稳定性是不是足够稳定,吞吐量是不是可以或许达到营业的请求。接下来看看到底能照样不克不及,进入技巧选型话题。
技巧选型
大年夜技巧选型来说,刚才提到的三个方面,主如果营业需求方面的考量。营业需求方面,在 2015 年, 我们 搭建这套体系的时刻,还有另一点异常重要的考量。因为 2015 年正好是扫码付出方法快速成长的阶段,当时,营业方面对于体系的快速迭代请求是异常高的。技巧选型方面,除了营业需求,还有技巧需乞降团队需求。技巧需求是什么意思?我们知道在软件开辟范畴,有一句话 叫 “没有银弹” , 不克不及拿起锤子当什么都是钉子,每一门技巧都有它实用的场景和范围。刚才几个体系,几个办事类型显然都是 Golang 所善于典范围,这是技巧需求的角度。
团队需求是什么含义呢?想跟大年夜家分享一个故事。前两年,我同伙的一家公司有一个网站,网站第一个版本是请外包团队实现的,拿到验收发明很不错,应用的是"世界上最好的说话"。然而问题来了,当这家公司拿到第一期交付结不雅今后,想要本身接过来,在膳绫擎叠加一些功能进行版本的迭代。结不雅发明团队琅绫腔有会"最好说话"的成员,出于各种原因既没有大年夜外部招到,也没有大年夜内部培养起来。结不雅是他们又花了几个月,用另一门说话把这个网站重写了一遍,这就是我们在团队需求琅绫擎想提到的一点,一门技巧不管是编程说话照样体系组件,要惹人这门技巧,起首团队里要有人会这门技巧。另一点也是平日会比较轻易忽视的,就是对于一门技巧的惹人,除了团队中有响应的人可以或许写这个代码,很重要的是,有没有人可以或许 hold 这门技巧。在碰到技巧难题的时刻,有人可以或许处理。这门技巧在团队内的培训瓯,可以或许有带头人也是一个异常重要的方面。
大年夜技巧选型的角度主如果这三方面的考量,结合我们 2015 年搭建这套体系的近况来看一下。当时我们团队的技巧栈编程说话方面是 C、Java、Golang。选择扫码付出体系实现的说话的时刻,C 是第一个被我们否决掉落的,开辟效力就知足不了我们快速迭代的请求。我们更多的可能是大年夜 Java、Golang 进行衡量。Golang 团队当时人数并不多,只有三位小伙伴,然则三位小伙伴都是异常不错的,对 Golang 的懂得也很棒。到如今我们回头来看,安闲小我到如今大年夜概有接近两年时光的成长,我们团队中如今有 20 多位,跨越全部研发团队一半以上的人数,已经可以闇练的┞菲握 Golang,用 Golang 来实现我们的营业体系、营业功能, Golang 在我们团队中的普及成长,也是异常敏捷的。团队背景大年夜概是如许。
推荐阅读
MongoDB 是今朝主流的 NoSQL 数据库之一,与关系型数据库和其它的 NoSQL 不合,MongoDB 应用了面向文档的数据存储方法,将数据以类似 JSON 的方法存储在磁盘上,因为项目上的一些汗青遗留>>>详细阅读
本文标题:Go语言在扫码支付系统中的成功实践
地址:http://www.17bianji.com/lsqh/37234.html
1/2 1