大纲
• 客户端设计
• —致性
• 存储设计
• 横向扩展
• 海量堆积
客户端设计 — 最终—致性
@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全球互联网架构大会内容整理。