小黑十一点半 小黑十一点半
Tags Archives Links
  • 开始使用
  • 我的开源
  • Tags
  • Archives
  • Links
  • Search
  • RSS
私藏已久的写作工具分享
置顶! 有更新!

坚持写作快两年了,有些私藏工具跟你们分享

效率工具
最近银联一纸 259 号改造通知,所有支付机构开始改造支付交易,上传终端信息。 不知道其他支付机构的小伙伴针对这次改造是否开始了? 由于这次银联给的时间非常少,我们这边改动涉及到相关上游一起改造,所以我们已经开始设计,马上投入代码改造中。 这次改造,支付机构内部需要维护交易发生的终端信息。在银联的改造文档中,支付机构内部需要为每一台终端分配一个唯一的终端设备号。 银联侧规定这个字段是 String(8),可以使用英文字母以及数字,即 a-z/A-Z/0-9。 由于我们内部发号器,只能产生纯数字的序号,按照 8 位长度,从 0 开始最多只能有 99,999,999 。 当前看来没什么问题,但是千万级数字还是太小,一不小心就没了。为了后续系统的稳定性,所以我们需要设计一种满足银联的规则终端号生成方法。 发号器现状 先来介绍先,我们这边的发号器现状,应该跟很多公司做法都比较类似。 我们这边发号器,有两种生成策略: simple snowflake 第一种策略simple 类型,这种策略方式非常简单,类似 MySQL ID 自增策略,可以指定从某个数字开始递增。 这种方适用于表ID 等场景....

巧用 Base62 解决字段太短的问题

待分类
上篇文章我们讲到对账系统收集数据的流程,下面我们再来讲下数据核对的流程。 这里再放一下支付对账系统整个流程,忘记的同学可以看这个图片再回忆一下。 数据导入DP 在 DP 核对之前,我们需要将对账系统收集的数据,从 MySQL 导入 DP Hive 表中。 DP 任务调度开始,DP 平台定时检测对账系统提供 HTTP 接口,判断本次存疑流程是否处理完成。 如果完成,自动触发将数据从 MYSQL 导入 DP Hive 表中。 数据导入之后,将会开始 DP 核对规程。 这个过程就是整个对账流程最关键的部分,这个流程核对两端数据,检查两端是否存在差异数据。 DP 核对 数据导入结束,DP 平台开始核对数据,这个过程分为两个核对任务: 成功数据核对 存疑数据核对 成功数据核对 成功数据核对任务,核对的目的是为了核对出本端与对端支付单号与金额一致的数据。 这里的核对任务使用了 Hive SQL ,整个 SQL 如下所示: ---- A CREATE TABLE IF NOT EXISTS dp.pay_check_success ( `batch_no` bigint comment '批次....
有更新!

千万级支付对账系统怎么玩(下篇)?

对账系统
上篇文章我们讲到千万级对账系统整体的系统架构以及完整的业务流程,那今天这篇文章我们来聊下对账结束之后流程 - 资金核对。 何为资金核对? 上篇文章聊到对账,其实属于业务明细对账,即我方交易订单与渠道明细的订单的核对,这个对账过程需要逐笔核对。核对成功,代表双方的订单数据都没有问题。 既然成功了,对方需要把这笔钱给到我们。但是实际情况下,可能是为一些问题,导致这笔钱最后没给我们。 所以这个过程我们也需要核对,这个核对过程就被称为资金核对。 那资金核对,需要拿应收应付与实收实付参与核对,那什么是应收应付?什么是实收实付?两边数据怎么获取呢? 先不用急,下面文章会详细解释,我们先来看下资金核对整体流程。 资金核对整体流程其实与业务明细对账流程类似,分为三部分: 资金数据收集 资金数据核对 资金数据差错梳理 资金核对过程,核对某个渠道某个商户号实收实付与应收应付的数以参与核对数量会很小,所以整个过程都在对账系统内完成。 资金数据收集 上面我们说过资金核对的数据分为两部分: 应收应付 实收实付 那资金收集这一部分,其实就是对应这部分数据的收集。 实收实付数据收集 实收实付的钱,其实就是....
有更新!

资金对账系统怎么玩?

支付系统
上篇文章聊到了对账系统业务逻辑以及千万数据集对账系统存在的难点,这篇文章就来聊下千万级数据集下对账系统实现方案。 首先我们先来看下对账整体时序图,先有个印象: 下面整篇文章将会围绕上面时序图开始讲解,由于文章篇幅过长,所以文章将会拆分成上下两部分。 数据平台 上次文章中提到,千万级数据需要使用 Hive,Spark等相关大数据技术,这就离不开大数据平台的技术支持。 简单聊下我们这边大数据平台DP (Data Platform),它提供用户大数据离线任务开发所需要的环境、工具以及数据,具有入口统一性、一站式、简化hadoop本身的复杂性、数据安全等特点。 DP 平台提供功能如下: 数据双向离线同步,MySQL 与 Hive 互相同步 大数据离线计算,支持SQL(SparkSQL/HiveSQL/Presto)形式处理各类的数据清洗、转化、聚合操作,也支持使用MapReduce、Spark等形式,处理比较复杂的计算场景 即时的SQL查询,允许用户即时的执行SQL、查看执行的日志和结果数以及进行结果数据的可视化分析 数据报表 那本篇文章不会涉及具体的大数据技术相关的实现细节,相关原理(....

千万级支付对账系统怎么玩(上篇)?

对账系统
支付对账 很早 之前写过一篇支付对账相关文章,那时候负责对账系统日均处理数量比较小。 那最近正在接手现在的对账系统,由于当前系统日均数量都在千万级,所以对账系统架构与之前架构完全不一样。 那就这个话题,聊聊如何实现千万级数据支付的对账系统。 什么是对账? 我们先来回顾下什么是对账? 也许你对对账这个概念比较模糊,但是这个场景你肯定碰到过。 上班路上买了一个煎饼,加了根里脊与王中王,然后你扫了老板的二维码付了 10 元钱。 你跟老板说你已经付了 10 元钱,老板看了下手机,果然有一条 10 元支付记录,老板确认收到钱,然后就把煎饼给你。 这个过程,你说你付了 10 元,老板确认收到 10 元,这就是一只简单的对账过程。 回到我们支付场景,用户下单使用微信支付 100 元购买了一个狗头抱枕,这时我们这边会生成一条支付记录,同时微信支付也会生成记录。 那微信第二天就会生成一个账单记录,我们拿到之后把我们的交易记录跟微信记录逐笔核对,这就是支付对账。 为什么需要对账? 正常支付的情况下,两边(我们/第三方支付渠道)都会产生交易数据,那支付对账过程,两边数据一致,大家各自安好,不用处理什么。 但....

支付对账系统序章:千万级数据对账怎么这么难?

支付
各位,好久不见~ 最近接手网联的国密改造项目,由于对国密算法比较陌生,前期碰到了一系列国密算法加解密的问题。 所以这次总结一下,分享这个过程遇到的问题,希望帮到大家。 国密 什么是国密算法? 国密就是一个口头上简称,官方名称是国家商用密码,使用拼音缩写 SM,它是用于商用的、不涉及国家秘密的密码技术。 那说起密码技术,大家一定很熟悉 MD5,AES,RSA 等算法,这些都是通用国际标准算法。 而国密其实就是这些国际算法国产化的代替方案,与国际算法对应关系如下: 这次国密改造项目使用的就是 SM2 国密算法。 SM2算法 SM2 国密算法是一种非对称加密算法,基于 ECC(椭圆加密算法), SM2 算法对标我们常用的国际算法 RSA。 但是 SM2 算法由于基于 ECC,签名速度与秘钥速度都快于 RSA。另外 SM2 采用 ECC 256 位,安全强度比 RSA 2048 位更高,且运算速度同样也高于 ESA。 熟悉 RSA 算法同学应该知道,非对称加密算法,会有一对公私钥。 私钥可以用于加签,公钥可以用于验签。 公钥可以用于加密,私钥可以用于解密 同样 SM2 算法也有一对公私钥....

SM 国密算法踩坑指南

支付
Hello,大家好,我是楼下小黑哥~ 我们本地使用 IDEA 运行 maven 项目的时候,有时候运气不好,就会遇到某些 maven 依赖无法正常找到、导入。这就会导致 IDEA 构建项目的时候爆出一堆醒目的红色 Error。 那最近小黑哥新拉取一个项目源码,本地运行项目,又碰到这种情况。按照以前的解决经验,捣鼓了一下,发现没办法解决。于是研究了一下午,终于解决这个问题🤔。 吐槽一下,刚开始一度以为是这个项目有问题,找了一个同事,发现他的电脑是却可以正常运行这个项目。 那今天这篇的文章,总结一下 IDEA 运行 maven 项目找不到相关依赖报错的问题原因以及解决办法。 网络问题,无法下载 maven 依赖 Maven 默认的中央仓库地址为 http://search.maven.org/#browse,那这是一个外网的地址。 而我们国内访问外网地址,网络速度不仅慢,网络质量还差。这就导致了maven 依赖下载速度过慢,有时候下载还可能会失败。 maven 依赖下载失败,这就会导致 IDEA 找不到相关依赖。 那这个问题解决办法也比较简单,我们可以通过设置镜像(mirrors)....

悲剧!IDEA 突然找不到类了?

IDEA
Hello,大家好,我是楼下小黑哥~ 随着业务的快速增长,业务体量变得越来越大,这个过程我们会碰到各种问题,倒逼着我们进行技术升级。 那今天我们来聊下,这个过程将会碰到关于数据的问题。 数据增长带来的烦恼 业务快速增长,业务表数据记录不断在增加,这就会带来两个问题。 第一,数据库数据最终将会保存在本地磁盘中,数据记录越多,磁盘占用空间就会越多,对应剩余可用空间就会越少。 剩余空间到达一定的阈值之后,将会引发磁盘空间的持续报警,消耗宝贵的数据库生产服务器的资源。 第二,业务表记录越多,表查询的效率就会相应变低,另外表变更也会变的很麻烦。 那解决这个问题,解决办法有很多,那 今天介绍其中一种方式,数据归档。 数据归档 数据归档的解决思路非常简单,就是将生产库的数据转移到拥有相同表结构的数据库中,通过减少生产库记录数量,从而提高数据查询等操作的效率。 数据归档的流程如图所示: 数据归档分为三个流程 创建一个新的数据库-归档库,然后在归档库创建与生产库相同的表 不断查询生产库数据记录,同步复制到归档库 生产库删除已经复制的数据记录 虽然数据数据归档流程非常简单,但是设计数据归档的方案,我....

进来偷学一招,数据归档二三事儿

系统设计
Hello ,大家好,我是楼下小黑哥~ 这篇文章主要梳理一下微信银行服务商下几个主要参数的概念、作用。总结一下对接过程中碰到相关设置的问题。 那这些参数,看起来挺简单的,但是有些场景下,需要在后台增加相关配置。如果不配置的话,就会报各种错误,无法唤起支付。 但是配置的话,对于第一次接触的小伙伴,极度不友好。这些配置有些是可以在微信支付官网找到的,但是这个查找过程挺费劲的。 所以这里总结一下,希望帮助到后续对接微信银行服务商的小伙伴们。 ps:这篇文章主要是以银联微信的文档为主,原则上网联微信应该是差不多的。 微信支付参数解释 微信支付的交易请求将会涉及一些微信特有的参数,像微信普通商户交易请求,只涉及 appid 与 mch_id,这个参数概念比较简单,比较容易。 但是在微信银行服务商版本,微信交易参数就很多,主要为以下七个参数: appid mch_id sub_appid sub_mch_id channel_id openid sub_openid 这五个参数,概念其实比较简单,但是混杂一起就是比较绕,下面我们详细解释一下。 appid 这里的 appid 银联文档解释为....

微信银行服务商对接避坑指南

支付
Hello,大家好,我是楼下小黑哥~ 最近被公司派去北京出差,本以为是个轻松的差事,北京一周游~ 但是没想到第一天就是九点半下班, 大意了~ 好了,回到正题,今天来讲下最近调试项目的时候发现的一个 Logback 日志级别设置不生效的问题。 问题背景 事情是这样的,我们的项目是一个 SpringBoot 的工程的,其中日志框架使用的是 LogBack,配置文件如下所示: <configuration scan="true" scanPeriod=" 5 seconds" debug="true"> <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%date [%thread] %-5level %logger{80} - %msg%n</pattern> </encoder> </appender> <logger name="org.springframework" ....

LogBack 日志等级设置无效,原因竟然是因为这个?!

Spring
Hello,大家好,我是楼下小黑哥。 B 站视频版本 那今天这期视频我们将带来一个 IDEA 中 Maven 设置的小技巧。 那这个技巧可以说非常有用,学会设置之后,再也不用担心 maven 依赖下载变慢的问题。 Maven 设置 当我们下载安装 Maven 之后,如果不修改 maven 中 setting 文件的。 那默认情况下, Maven 远程中央仓库地址为是个国外的地址。 http://repo1.maven.org/maven2 那我们国内的网络,因为神秘的力量的影响,访问国外的地址就会比较慢。 如果你的网络情况很差,那么用默认的地址下载依赖资源就会很慢,有可能运行到一半下载失败。 那这种情况下,我们可以通过设置 Maven 仓库镜像地址从而解决这个问题。 那国内可以用的 Maven 的镜像地址其实有很多,比如说阿里云 https://maven.aliyun.com/mvn/guide 网易: https://mirrors.163.com/.help/maven.html 腾讯云: https://mirrors.cloud.tencent.com/help/mav....

IDEA 这么设置 Maven,再也不用担心依赖下载失败了

IDEA
1 2 3 4 5 6 7 8 9 10 11
我的开源 RSS 开始使用
9526xu - Java 开发者,公众号@程序通事,定期分享干货文章。博客地址:https://studyidea.cn,抢先查看最新文章

132 文章
16234 浏览     2 当前访客
© 2022 小黑十一点半 本站总访问量次