Skip to content

PhantomThief/zknotify-cache

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

zknotify-cache

Build Status Coverage Status Total alerts Language grade: Java Maven Central

ZooKeeper通知更新的本地缓存

  • 缓存按需延迟懒加载
  • 通知加载可设置随机延迟,防止所有节点同时加载造成数据源瞬时压力过大
  • 旧的缓存内容可定制清理回调
  • 只支持Java8

Get Started

ReloadableCache<List<String>> cache = ZkNotifyReloadCache.<List<String>> newBuilder()
				.withCacheFactory(this::buildFromSource) // 配置cache构建方法,必须
				.withNotifyZkPath("/notifyPath1") // zk监听变更的路径,必须
				.withCuratorFactory(this::getCuratorFactory) // 提供zkClient的工场方法,必须
				.withMaxRandomSleepOnNotifyReload(30*1000) // zk通知reload时随机最大延迟时间,可选
				.withOldCleanup(this::cleanup) // 旧数据的清理方法,可选
				.enableAutoReload(1, TimeUnit.MINUTES) // 打开自动定时加载,可选
				.build();

List<String> content = cache.get(); // 获取内容,第一次调用本方法时才初始化

cache.reload(); // 通过zk通知所有节点更新
private List<String> buildFromSource() {
	// 从数据源加载数据
}

private CuratorFramework getCuratorFactory() {
	// 返回一个初始化好的CuratorFramework
}

private void cleanup(List<String> list) {
	// 清理旧对象操作
}

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages