1.核心功能
•监控预警•EventBus 消息总线[1]•Redis 库存操作Lua
2.接口性能
集群1.5w
tps
单机400
tps
120w日活
3.抖音接口文档
https://developer.open-douyin.com/docs/resource/zh-CN/dop/develop/openapi/life-service-open-ability/life.capacity/tripartite.code/precreateorder
实现监控预警企业微信机器人 webhook
protected void msgSend(String wxUrl, IAlertMsg msg, WxMsg wxRobotMsg) { HttpHeaders httpHeaders = new HttpHeaders(); httpHeaders.setContentType(MediaType.APPLICATION_JSON); httpHeaders.setConnection("Keep-Alive"); HttpEntity<String> httpEntity = new HttpEntity<>(JSONObject.toJSONString(wxRobotMsg), httpHeaders); String reponseMsg = restTemplate.postForObject(wxUrl, httpEntity, String.class); log.debug("{} >> {}", msg, reponseMsg);}
EventBus 介绍
事务拆分
•Saga分布式事务[2]
阶段性重试
•XxLJob 重试
Redis 库存处理框架设计
方案
•List 兑换码池•Set 导入去重•String 余额,总库存管理
local CDKey_QUEUE = KEYS[1]local CDKey_SET = KEYS[2]local CDKey_SCRIPT_TYPE = KEYS[3]local CDKeys_PARAMS = ARGVlocal retAddCDKey = 0local retGetCDKey = {}local function addCDKey() for i, v in ipairs(CDKeys_PARAMS) do local addOk = redis.call("SADD", CDKey_SET, v) if addOk == 1 then redis.call("LPUSH", CDKey_QUEUE, v) retAddCDKey = retAddCDKey + 1 end endendlocal function getCDKey() local num = tonumber(CDKeys_PARAMS[1]) for i = 1, num do local v = redis.call("RPOP", CDKey_QUEUE) if type(v) == 'boolean' then else if v ~= nil then table.insert(retGetCDKey, v) end end end if #retGetCDKey ~=0 and num ~= #retGetCDKey then for i, v in ipairs(retGetCDKey) do redis.call("LPUSH", CDKey_QUEUE, v) end retGetCDKey = {} endendif CDKey_SCRIPT_TYPE == '0{yes}' then addCDKey() return retAddCDKeyelse getCDKey() return retGetCDKeyend
问题归纳
1.调用抖音验券界面限制
一张优惠券在核销时会暂时锁定订单,因此订单中的其他优惠券在解锁前会被核销 建议同一订单中的优惠券一起核销,肯定会报错。 或者一张一张验券
2.抖音调用服务提供商发券界口
偶尔,抖音不会调用[预订]优惠券界面创建订单操作,抖音不会调用[预订]优惠券界面创建订单操作
分享技术文章
凤凰架构[1]
•可靠事件队列
最终一致性的概念是 eBay 系统架构师 Dan Pritchett 在 2008 年在 ACM 发表的论文《Base: An Acid Alternative》本文总结了一种独立性 ACID 除了获得的强一致性,使用 BASE 实现一致性目标的途径。BASE 分别是基本可用性(Basically Available)、柔性事务(Soft State)与最终一致性(Eventually Consistent)的缩写。BASE 这个提法简直就是把数据库科学家热爱收缩的恶趣发挥到了极致,但也有 ACID vs BASE(酸 vs 碱)这个朗朗上口的梗,这篇论文的影响传播得足够快。作者在这里就不多说了 BASE 这是一个概念问题。虽然嘲笑它很有趣,但本文本身作为最终一致性概念的起源,系统地总结了分布式事务的技术手段,非常有价值。
我们将继续解释本章的场景例子 Dan Pritchett 提出的“可靠事件队列”的具体做法仍然是在交易过程中正确修改账户、仓库和业务服务中的数据 3-7 时序图列出了修改过程。
因为关键词的上限,需要关注以上的朋友。小莫分享
微信官方账号回复关键词抖音秒杀
自取。
[1]
EventBus 消息总线:http://rabbitmq.mr-ping.com/
[2]
Saga分布式事务:https://cloud.tencent.com/developer/article/1839642[3]
凤凰架构:https://icyfenix.cn