去哪网消息中间件

65 阅读1分钟

大纲

• 客户端设计

• —致性

• 存储设计

• 横向扩展

• 海量堆积

客户端设计 — 最终—致性

@Trasnactional
public void pay(long orderId){
payService.pay(orderId);
orderService.updateStatus(orderId, PAY_SUCESS);
}

public void pay(long orderId){
payService.pay(orderId);
orderService.updateStatus(orderId, PAY_SUCCESS); }


A Job
Step1. scan payments table
Step2. check order status
Step3. update lost status(retry to success)

@Transactional
public void pay(long orderId){
payService.pay(orderId);

//producer.send(buildMessage(orderId));

//伪代码
final Message payEvent = buildMessage(orderId);
messageDAO.save(payEvent);
postTransactionCommit(new Action(){
@Override
public void apply(){
transport.send(payEvent);
}
});
}

服务端设计 — 存储模型

partition与consumer静态绑定

以上根据GIAC全球互联网架构大会内容整理。