1.读写锁改成分桶和自旋锁,允许瞬时的脏读。
2.更新元数据时不再广播自己,即修改元数据的进程。需要靠广播刷新的缓存,在更新操作时同步刷新。
3.缓存更新细粒度,按最小原子进行更新,考虑记录变更的版本号时间戳
依次往下修改,直到满足设计目标。

















在 2020-07-22 05:27:24,"chuxiao" <crow...@163.com> 写道:
>kylin当前的缓存机制,比较适合cube数几十上百,不频繁更新的场景。
>当有2千以上的cube,每天更新几百个,metadata上的读写锁,任何修改全更新的广播机制,导致一旦有持续的元数据更新,整个集群响应时间大幅拉长,建模和查询频繁出现超时。
>KYLIN-4169缓解了这个问题,但还不够。
>我想重新设计缓存功能,设计目标是在单个项目1万个cube,每天新建/删除一千个的场景下,建模和查询不会出现频繁超时,保持系统可用性。

Reply via email to