自报家门:三哥、个人网站j3code.cn

对,没错,又趁着周末两天 + 几个工作日晚上熬夜开发了个付出项目出来,赞赏渠道

我对这个项目的定位十分简略,便是一个生意渠道。渠道内容由我来发布,免费内容我们只需注册即可观看,如需付费则付出相关费用方可检查。

下面是项目运行首页

个人支付项目,已稳定收款 100+

下面是项目登录注册页

个人支付项目,已稳定收款 100+

下面是产品付出页面

个人支付项目,已稳定收款 100+

尽管项目全体规划较小但也算是五脏俱全,有认证相关、有付出相关、也有分布式问题相关。对于没有做过个人项目特别是没做过付出项目的小伙伴来说,用来练手或者写在简历上都是未尝不可的。

那下面我来具体项目中几个重要的事务点。

1、网关认证

以前咱们开发项目要进行认证根本都是经过在服务中写个阻拦器,然后配置阻拦器阻拦一切的恳求,终究经过阻拦器的逻辑进行认证。这中办法不是不可以,但我觉得不好,假如咱们项目中有三个微服务以上,那么这个阻拦器的认证逻辑就会存在于每个微服务中,这是我认为的不好的点。

那我是怎样做的呢!

对,在网关服务里做认证动作。将认证动作搬迁,由于我的个人项目是经过网关进行恳求转发,所以,一切的恳求都会先进入网关,再进入各个具体的事务服务,那问题就好办了。我直接经过完结网关的 GlobalFilter 接口阻拦一切的恳求,经过完结该接口进行认证逻辑处理,完结本渠道的认证、续约、限流等功用。

下面来看看恳求流程图

个人支付项目,已稳定收款 100+

2、付出逻辑

付出功用可以说是本项目的重中之重,需求有十分强的健壮性。由于我是一位个人开发者,所以不能对接需求有营业执照的付出功用,终究我挑选了付出宝的当面付这一个功用。

当面付的好处许多,榜首它不需求营业执照,第二对接也十分简略并且有付出宝封装的SDK,所以本人再对接的过程中没有费多少力气就把接口打通了。

主要便是对接了当面付的三个接口:

  1. 获取付出二维码接口
  2. 付出成功的回调接口
  3. 订单状况回查接口

当然,这三个接口的代码量也是很大的,所以本人为了通用就又对他做了一层封装,使得项目调用付出功用就更加简略了。如下就可以完结一个付出功用的完整逻辑:

个人支付项目,已稳定收款 100+

是不是很简略,假如需求代码的可以看文章结尾哦!

下面我来介绍一下本项目中付费内容的整个事务流程。

1、用户获取付费产品概况

2、点击检查内容,这里就有两种成果了

  • 榜首种成果:产品已付出,直接显现内容给用户观看
  • 第二种成果:产品未付出,提示用户付款检查

3、当显现第二种成果时,假如用户点击付款,则进入后续流程

4、服务器恳求付出宝第三方,获取对应金额的付出二维码,并将回来的二维码和用户绑定生成一个未付出的订单,终究将这个待付出二维码回来给页面

5、页面显现二维码之后,用户就需求进行扫码付款(翻开付出宝APP扫码付款)

6、用户付款成功之后,付出宝第三方会自动回调第四步我给付出宝的回调地址。回调接口的逻辑便是将订单状况改为已付出并做一些后续的流程操作。

7、为了防止回调接口出问题,还写了一个守时使命,守时回查订单表中未付出订单的状况,循环恳求付出宝询问付出付出成功并履行付出成功的相应回调逻辑。

付出事务流程图

个人支付项目,已稳定收款 100+

3、手写分布式锁

相信分布式锁我们都不陌生,无非便是向中间件中放入一个标志量,存在即表明已锁,反之则未锁履行相关逻辑。

说都会说,但要真实自己手写并且做到高可用确是一个十分困难的问题。其中十分要害的一点便是怎么解锁,怎么做到事务履行完结百分之百解锁,那我再项目中是怎么考虑的呢!

我先来简略的说一下思路:

1、界说一个分布式锁注解,用来标注那些办法需求分布式锁加持

2、界说一个切面,逻辑便是给加上了分布式注解的办法进行增强

3、增强的逻辑为:加锁、生成续约使命、履行事务逻辑、解锁

4、另起一个延迟线程池,每隔一守时刻遍历一次续约使命集合,判断使命是否需求进行续约(这个逻辑判断许多如:续约次数过多、事务已履行结束、是否需求续约等等)

具体事务流程如图(我画的比较多)

个人支付项目,已稳定收款 100+

当然,为了方便你们理解,我还出了相关视频,地址:

www.bilibili.com/video/BV1jP…

以上,便是赞赏渠道项目中三个比较大的亮点,不论是写在简历上仍是当作个人项目都是一个十分不错的挑选,那我也把这个项目搭建起来了,地址如下:

admire.j3code.cn

需求项目代码 + 视频 + 具体文档的,我都放在这个渠道上了,自取即可。

我是J3code(三哥),咱们下回见