M功能-支付平台(三)

target:离开柬埔寨倒计时-221day

前言

今天周六,但是在柬埔寨还是工作日,想着国内的朋友开始休周末就羡慕呀,记不清在这边过了多少个周六了,多到我已经习惯了。而且今天技术部还停电了,真的是热的受不了呀,我感觉我写完这篇博客汗水可能会浸湿衣服呀。

接手M功能时的窘迫

2023年4月初,具体几号已经记不得了

boss:M功能还是要上演示版的,这个上了我们才好回去

我: 计划什么时候演示呢?

boss:20号左右吧,大概还有2周时间

我:…

boss:资源这边我看能不能帮你找到,你大概需要多少人呢?

我:两周时间的话,熟悉M功能的后端人员至少要3个吧,如果不熟悉的那至少要5个,前端还需要2个

boss:后端我去帮你找找看,前端你可以再想想办法

我:可以,前端我找个兼职的来帮我吧

boss:可以呀,先评估功能再报个价吧

我:好的

@@@@@@@@@@@@@@@@@@@@@ 2小时后 @@@@@@@@@@@@@@@@@@@@@

boss:后端我帮你找了4个人,他们可都是高级或架构哟

我:好的,那我先跟他们聊聊M业务吧,20号的时间我只能说尽力

boss:20号还是必须要完成的,难道你不想早点回国吗

我(内心想):我当然想早点回国呀,谁愿意呆在这鸟不拉屎的地方呀,但那么多功能,我还不知道这几个后端好不好用呢

我:想早点回呀,我先跟他们(4个后端)讨论一下吧,再确认一下,他们做我的事情的时候不会被其他事情干扰吧

boss:不会,放心吧!

实际上不仅会被干扰,还TM最后放弃让我一个人弄。

人虽然有了,但是需要改变的功能还是比较恶心的:

  • 虽然我有全套的M功能代码,但是为了贴合支付平台,需要改造的地方还是很多的,特别是用户底层账户和平台币种管理
  • 之前我负责做的M功能主要为APP和WEB,这次的改动需要支撑H5嵌入支付APP中
  • 最大的一个改造就是M功能要做成saas,但是对不同公司主体又只需要做数据隔离,带宽、服务器资源、数据库都是集成在一起,也就是不同主体的数据是用逻辑标志来区分的
  • saas对撮合引擎的影响:我之前设计的M的撮合引擎是基于交易对建立内存的,现在不同公司可以建立相同交易对,如A公司和B公司都开放交易对USD/CNY,要保证A公司的订单不能和B公司订单进行成交,那么就需要在之前的数据内存之上再做一层逻辑隔离

首次和金边这边的技术合作

当时boss给我的时间仅仅2周,并且这个功能做完,进入演示阶段我就可以回国一趟,所以当时虽然非常痛苦,但想到可以回国还是咬牙在坚持呀

金边后端技术

我们做的这个系统是这边一个银行的拓展支付软件,所以我们的办公场地一直是在银行的技术部,因为我这边做M功能需要人力资源,所以最终我的boss协调了4个银行技术后端给我使用,人虽然有了,但是他们对M功能一无所知,而且还有一个问题就是不得不说的题外话了,那就是直接到柬埔寨这边来的技术能力真的一言难尽。

前端资源

金边这边虽然给了我后端资源,但是我还缺少前端资源,于是我又找到之前跟我一起做M功能的前端同事,让他以兼职的形式来帮我做H5和简单版的后台管理系统,他同意后我这边的基础人员相当于就就位了。

克服异地异点调试

因为后端是金边这边的技术在做,前端是国内前同事在做,而国内前同事又每天下班回家之后才有时间,而我又是其中的唯一枢纽,并且我也需要确保他们提供的接口质量,所以前后端调试的事情我一直都在跟进,所有调试中遇到的问题我也会记录以及处理。特别是里M功能deadline的最后几天,这边的后端直接奔溃放弃,只能我一个人处理,我突然感慨,国内说的卷真的太对了,我TM都卷到柬埔寨来了。所以客服异地异点调试的方式就是我每天加班到很晚很晚,当时第一次萌生了离职的想法,这个在我写内心戏的时候肯定会重点描述几次萌生离职想法以及为什么内心如何建设、最后留下来的。

这里可以提一嘴我们来之后,银行这边技术的变化,还记得我们刚到银行技术部办公的时候,他们都是每天到点就下班,每天到6点以后,整层楼就只剩下我们来这边的几个人,随着时间的推移,银行的技术也开始了加班,也是常常干到很晚。扯远了,这些具体内容在生活篇来记录吧。

M功能撮合流程

M功能最主要的就是下单、撤单、撮合,而撮合流程相对复杂一点

在这里插入图片描述

为什么锁使用mysql

首先锁是用交易对来作为关键key的,其次是撮合是一个持续的过程,那就意味着这个锁在程序没有出现异常时要一直存在的

最开始的时候我们的锁使用的是redisson,因为redisson的锁写好了续命逻辑,可以一直保持着锁的存在,但是这个续命逻辑有一个致命的问题,在普通场景可能不容易出现,但是在撮合这里超长时间持有锁就可能会出现,因为redisson的锁续命机制是一个递归的过程,也就是说当前续命成功,才会有下一次续命的机会,而如果正好在锁续命的时候出现网络抖动或者其他一些异常问题,那么续命任务就会终止,那么那个锁到期就会自动释放了

后面会抽时间补技术的文章,就包括这里的redisson分布式锁续命问题,关于分布式锁就不单独写了,因为网上一搜一大片

综上所述,我最后还是写了个mysql的锁来支持撮合,当时时间也很仓促,可能还能更优化,但是先放上去用着再说,主要是要保证程序不出问题,这个解锁其实还有一个逻辑,就是撮合引擎重启的时候会去释放掉所有该进程ip上的所有锁,这个逻辑在k8s动态ip下就非常的不友好,当然还是有另外的解决方案

在这里插入图片描述

后记

今天公司是真的太热了,我能坚持写完这篇文章也是不容易呀,外面还有每天打“沙滩排球”的柬埔寨本地人,真的佩服他们,有时候也感觉他们活的很快乐

在这里插入图片描述

加油吧littlehow

金边时间:2024-05-25 15:21

北京时间:2024-05-25 16:21

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/641738.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Autodesk 3ds Max下载,3ds MAX 2024三维建模渲染软件安装包下载安装

3ds MAX中文版,其强大的功能和灵活的操作为广大用户提供了无限的创意空间,使得高质量动画、最新游戏、设计效果等领域的制作需求得以完美满足。 ​ 作为一款三维建模软件,3ds MAX中文版具备极高的建模精度和渲染质量。它支持多种建模方式&am…

cocos 通过 electron 打包成 exe 文件,实现通信问题

cocos 通过 electron 打包成 exe 文件,实现通信问题 首先,我使用的 cocos 版本是 2.4.12,遇到一个问题,是啥子呢,就是我要把用 cocos 开发出来的项目打包成一个 exe 可执行程序,使用的是 electron &#xf…

向传音手机学习产品市场定位与产品需求定义

2024 年第一季度全球智能手机发货量同比增长 11%,排在第一名的是三星,占比 21%,苹果占比 17% 排在第二位,小米 14%排在第三名,传音手机10% 排在第四位,OPPO为 9% 排在第五名。 「非洲之王」传音手机表现十…

Vulhub——adminer

文章目录 一、CVE-2021-21311(SSRF)二、CVE-2021-43008(远程文件读取) 一、CVE-2021-21311(SSRF) Adminer是一个PHP编写的开源数据库管理工具,支持MySQL、MariaDB、PostgreSQL、SQLite、MS SQL…

基本IO接口

引入 基本输入接口 示例1 示例2:有数据保持能力的外设 #RD端由in指令控制:将数据由端口传输到CPU内存中 #CS244信号由译码电路实现 示例3: a)图中由于输出端口6有连接到端口1,当开关与端点1闭合时期间,仍能维持3端口…

3D 生成重建013-ProlificDreamer将SDS拓展到VSD算法进行高质量的3D生成

3D 生成重建013-ProlificDreamer将SDS拓展到VSD算法进行高质量的3D生成 文章目录 0论文工作1论文方法2效果 0论文工作 **分数蒸馏采样(SDS)**通过提取预先训练好的大规模文本到图像扩散模型,在文本到3d生成方面显示出了巨大的前景&#xff0…

软考-程序员 知识点与部分真题梳理

软考-程序员 知识点与部分真题梳理 参照《程序员教程》第五版划分类别; 持续更新中… 计算机系统基础知识 如何理解和处理浮点数的加减法运算 在计算机科学中,处理浮点数的表示和运算是基础且关键的,尤其是在进行科学计算、图形处理和数据分…

Autodesk 3DS Max v2025 解锁版安装教程 (3D 建模软件)

前言 Autodesk 3ds Max 是一款功能强大的 3D 建模和动画解决方案,游戏开发人员、视觉效果艺术家和平面设计师使用它来创建庞大的世界、令人惊叹的场景和引人入胜的虚拟现实 (VR) 体验。 Autodesk 3DS MAX是业界使用最广泛的3D建模和动画软件程序之一,它…

泪目!网络连接中断的原因,终于找到了!

朋友们,出大事了! 不知道多少朋友玩过 DNF 这个游戏,这个我从小学玩到大学的 “破” 游戏,昨天竟然出手游了! 我都忘了自己曾几何时预约过这个手游通知,昨天给我发了条通知信息说游戏已开服。 老玩家直接…

59 多次 mmap 虚拟地址的关系

前言 这是来自于网友的一篇帖子 然后 我们这里来探究一下这个问题 主要是 多次连续的 mmap 获取到的 虚拟地址区域 是否连续 以及 衍生出的一些其他的问题 从 mmap 的实现 我们可以知道, mmap 的空间是 自顶向下 分配的, 因此 两块空间应该是连续的, 第一块在上面, 第二块…

solidworks画螺母学习笔记

螺母 单位mm 六边形 直径16mm,水平约束,内圆直径10mm 拉伸 选择两侧对称,厚度7mm 拉伸切除 画相切圆 切除深度7mm,反向切除 拔模角度45 镜像切除 倒角 直径1mm 异形孔向导 螺纹线 偏移打勾,距离为2mm…

开源的在线JSON数据可视化编辑器jsoncrack本地部署与远程访问

文章目录 1. 在Linux上使用Docker安装JSONCrack2. 安装Cpolar内网穿透工具3. 配置JSON Crack界面公网地址4. 远程访问 JSONCrack 界面5. 固定 JSONCrack公网地址 JSON Crack 是一款免费的开源数据可视化应用程序,能够将 JSON、YAML、XML、CSV 等数据格式可视化为交互…

Jmeter预习第1天

Jmeter参数化(重点) 本质:使用参数的方式来替代脚本中的固定为测试数据 实现方式: 定义变量(最基础) 文件定义的方式(所有测试数据都是固定的情况下[死数据],eg:注册登录&#xff0…

释放Mac潜能,选择Magic Disk Cleaner for Mac

想要让Mac运行更加流畅、性能更加出色吗?那就选择Magic Disk Cleaner for Mac吧! Magic Disk Cleaner for Mac v2.7.7激活版下载 这款软件是Mac用户的得力助手,它拥有强大的扫描和清理功能,能够迅速找出并删除硬盘上的无用文件和垃…

智慧校园的建设思路

智慧校园建设的一个主要目的就是要打破学校内的信息孤岛,其核心是在人、流程和信息三个层面的全面整合。智慧校园应该能够为全校师生员工及校外用户提供统一的、一站式的服务渠道;能够将学校各种业务流程连接起来,实现各种应用系统的互联互通…

MySQL 带游标的存储过程(实验报告)

一、实验名称: 带游标的存储过程 二、实验日期: 2024 年 5月 25 日 三、实验目的: 掌握MySQL带游标的存储过程的创建及调用; 四、实验用的仪器和材料: 硬件:PC电脑一台; 配置&#xff1…

初出茅庐的小李博客之用MQTT.fx软件进行消息发布与订阅【 基于EMQX Cloud】

MQTT.fx软件使用简单介绍 MQTT.fx 的软件界面如下图所示,最上方为 MQTT Broker 连接地址栏,及其连接配置。其下方功能 Tabs 含有 Publish 发布栏、Subscribe 订阅栏、Scripts 脚本栏、Broker Status 状态消息栏、Log 日志信息控制栏。 连接之前要明确几…

BeautifulSoup4通过lxml使用Xpath,以及获取(定位)元素和其文本或者属性

环境:win10,python3.8.10 首先需要安装:beautifulsoup4,lxml 使用命令: pip38 install beautifulsoup4 pip38 install lxml 安装完毕后查看一下: 写代码: from bs4 import BeautifulSoup …

el-transfer和el-tree进行结合搞一个树形穿梭框

由于业务需求需要在穿梭框里使用树形结构,但是本身element里并不支持,于是参考了别的大佬发的文章作为思路及后续自己新增了一些处理功能。 目录 1.拷贝代码放到自己的项目目录中 2.改造el-transfer的源码 3.修改tree-transfer-panel.vue文件 4.修改…

Excel透视表:快速计算数据分析指标的利器

文章目录 概述1.数据透视表基本操作1.1准备数据:1.2创建透视表:1.3设置透视表字段:1.4多级分类汇总和交叉汇总的差别1.5计算汇总数据:1.6透视表美化:1.7筛选和排序:1.8更新透视表: 2.数据透视-数…