微服务从代码到k8s部署应有尽有系列(七、支付服务)

网友投稿 306 2022-09-11

微服务从代码到k8s部署应有尽有系列(七、支付服务)

我们用一个系列来讲解从需求到上线、从代码到k8s部署、从日志到监控等各个方面的微服务完整实践。

整个项目使用了go-zero开发的微服务,基本包含了go-zero以及相关go-zero作者开发的一些中间件,所用到的技术栈基本是go-zero项目组的自研组件,基本是go-zero全家桶了。

实战项目地址:​​github.com/Mikaelemmmm…​​

1、支付服务业务架构图

2、依赖关系

payment-api(支付api)

order-rpc(订单rpc)payment-rpc(支付rpc)usercenter(用户rpc)

payment-rpc(支付rpc)

mqueue-rpc(消息队列)

order-rpc(订单rpc)

mqueue-rpc(消息队列)travel-rpc

usercenter(用户rpc)

identity-rpc(授权认证rpc)

3.1 创建支付预处理订单

app/payment/cmd/api/desc/payment.api

app/payment/cmd/api/internal/logic/thirdPayment/thirdPaymentwxPayLogic.go

ThirdPaymentwxPay

app/payment/cmd/api/internal/logic/thirdPayment/thirdPaymentwxPayLogic.go

createWxPrePayOrder

我们来看看verifyAndUpdateState方法,我们要查询单号是否存在,比对回调回来的金额与创建时候金额是否一致更新流水单号即可。这里不用在校验签名了,前一步的sdk已经做了处理了

我们支付回调成功之后,会给用户发送一个入驻码,去了商家那里要展示这个码,商家通过后台核对码,其实就是美团的样子,我们去美团下单,美团会给你个码,用户拿着这个码去入住或者消费等。

ok,回调成功,我们会调用pyamentRpc去修改当前流水单状态成功

我们来看看paymentRpc中做了什么,

前面是校验,核心做了两件事情,第一是更新状态,第二向消息队列发送了一条消息,我们看看消息队列中对应的代码

前面order一节已经介绍了整个order-mq的运作机制,这里不再多说了,我们只说kq这里

当order-mq启动后,go-queue会监听kafka中的消息

我们再来看下具体实现 , 当前面支付回调成功添加到kafka中时候,order-mq中kafka会接受消息,也就是PaymentUpdateStatusMq.Consume会接收到kafka的消息,然后反序列化数据,传递给execService 执行具体业务,那execService中执行了什么呢?

app/order/cmd/mq/internal/mqs/kq/paymentUpdateStatus.go

那我们说到这里了就直接去看看message消息服务代码吧

message业务中只有一个mq,因为他不需要rpc、api,只需要定时从队列去消息发送消息,所以它运行逻辑跟order-mq一样的,同样适用serviceGroup管理

4、小结

到这里基本上整体项目服务逻辑都差不多说明完了,后续会介绍收集日志、监控、部署等

项目地址

​​github.com/zeromicro/g…​​

欢迎使用 ​​go-zero​​ 并 ​star​ 支持我们!

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:微服务从代码到k8s部署应有尽有系列(六、订单服务)
下一篇:科技狐:手机爆炸了!这次又是三星!
相关文章

 发表评论

暂时没有评论,来抢沙发吧~