有没有大佬帮忙看看有没有问题。实习项目就做了个比较基本的curd,我自己补充了一下里面的技术
项目内容:
基于Nacos+Spring Cloud Alibaba实现的微服务架构稳定币交易平台,通过该交易平台用户和企业可以快捷的实现稳定币的兑换、交易以及实时汇率展示。
数据要素交易平台,该平台基于DDD架构,实现数据要素(数据集、API数据)的交易网络。
我做的部分:稳定币平台:用户相关的注册登录什么的,用户账户的交易相关的
数据要素交易:区域节点的商品的上架、审核、以及与总节点的商品同步
因为开发的都是最原始的初始版本,所以都是比较基础的增删改查
我在里面增加了什么一致性的流程、高并发的流程,大佬们帮忙分析一下这样的流程有没有问题#牛客AI配图神器#~~~
---------------------------------------------------------------------------
稳定币平台:
我补充了一下转账一致性的流程:通过调用transfer服务,并生成一个唯一的交易id,后续操作TCC的操作都要基于这个id,同时基于这个id做幂等控制。之后进入try阶段,执行原子SQL,校验并扣减,并记录TCC状态表。(冻结资金,不影响其他并发交易)进入confirm阶段后,通过本地事务进行数据修改,并通过幂等检测出已执行,并更新tcc表。系统扫描出未成功执行的交易,根据交易id进行重新执行。通过Scheduler Service扫描tcc表,根据状态,完成未完成的交易,若多次confirm失败,进入cancel。 如果确认过程中有任何错误或超时,协调者执行锁定余额还原。cancel最终成功后才发送MQ消息(我感觉这种转账是不是应该用2pc更稳一点,不确定实际场景用什么)
数据要素交易平台:
区域 - 全域节点通信方案
对于同步通信方案,采取异步消息队列,区域节点作为生产者,审核通过后,将产品信息封装为消息,发送到消息队列topic,并设置延迟投递(弱一致性)(避免区域节点本地事务未完成就同步。全域节点在消费消息前,去查询区域节点的“产品状态”:若状态 = 审核通过 → 正常消费若状态 ≠ 审核通过(或查不到)→ 丢弃或延迟重试
)。全域节点通过订阅topic,消费消息时先做幂等校验(产品id+区域节点id判断是否已经同步),通过后更新全域目录,在发送回执到同步回执topic。区域节点订阅同步回执topic,去更新本地产品的同步状态。
1000 + 提供方同时登记 API 产品(QPS 500+),如何设计流量治理方案?
可以在接入层进行限流,单提供方每秒最多5次登记请求。在应用层通过异步削峰,通过创建产品登记队列,接入层校验通过后先写队列,应用层用消费者线程池异步消费写入DB。在持久化方面,可以通过批量插入减少SQL执行次数,并且对索引进行延迟创建
全部评论
相关推荐
KKorz:最重要的是沟通!沟通!沟通!老师很多时候并不是生气你去实习,而是生气你一声不吭去实习,大学老师对这个很敏感的,你一声不吭悄悄离校,万一有个三长两短就是老师背锅,我当时是直接找到我们院主任,跟他简短说明情况后,主任说会之后会开会讨论我的问题,暂时先让我每天打卡+买一份商业保险+拟一份家长本人和学校的三方知情同意书,以及因为课比较少,我当时保证的是每周回来一次上那天的课(其实没回来过,但是你不能明面上说你不上课,这样老师没法答应,学生的课程是底线问题!),总而言之就是要多沟通,拿出最大的诚意,实在不行的话再偷偷跑!
点赞 评论 收藏
分享
点赞 评论 收藏
分享