Elasticsearch 可以持久保存数据。判断是否适合作为主数据库时,应问:写入失败或并发执行时,哪些业务规则必须始终成立?
在订单系统中,搜索商品与确认购买是两种任务。前者关注搜索相关性,后者关注支付和库存变更的正确性。
1. 从必须一起成功的变更开始
假设一次购买需要创建订单并扣减库存。如果只有一项成功,业务必须明确如何处理。
[Create order] ---- must coordinate ---- [Reduce stock]
| |
success failure?
Elasticsearch 的 bulk API 一次提交多个文档操作,但某项失败时其他项可能已经成功。它不会将这些操作变成“全部成功或全部失败”的事务,应用需要检查每个结果。。
