网易考拉架构分享学习

NetEast Kaola Communication

Posted by alovn on August 2, 2019

简单记录一下。

昨天下午听了一场关于网易考拉架构演进的分享。看似高大上的项目,其实也是从一个单体架构逐渐演进过来的,现在也发展到具有一定规模的微服务架构。

数据库用的是网易自研的DDB分布式数据库,并且采用了读写分离模式。

考拉大量用到了缓存,基本上所有商品数据都会放到缓存中。关于缓存的更新:一种是当没有缓存的时候会从数据库中拉取数据进行缓存,二是通过后台定时任务根据商品ID进行更新,据说可以10分钟更新上百万条缓存。

关于热点数据分片:商品减库存的场景下,程序会判断出哪些是热点商品,也就是说商品有较大的流量,会被频繁下单购买,也会有较多的减库存操作。为了提升并发场景下的减库存操作,考拉会把这个商品的库存拆分成多条库存数据,扣除库存的时候会随机选取一个进行扣除。那么,如果说刚好被随机到的这个库存数据被减完了该怎么办呢?考拉的处理方式是保留一个库存数据进行兜底,也就是说如果刚好被随机到的这个库存数据被扣完了,那就扣除默认的那条库存数据。如果并发仍然较高,会继续进行分片操作,把库存数据再进行二次拆分。

关于分布式事务用的是TCC方案。