96SEO 2026-02-19 21:15 14
Zookeeper是一个分布式的、开源的分布式应用程序的协调服务

Zookeeper提供主要的功能包括#xff1a;配置管理#xff0c;分布式锁#xff0c;集群管理
Zookeeper是一个分布式的、开源的分布式应用程序的协调服务
zk中的每一个节点都被称为ZNode每个节点上都会保存自己的数据和节点信息。
节点可以拥有子节点同时也允许少量1MB数据存储在该节点之下
临时节点-ePERSISTENT_SEQUENTIAL持久化顺序节点-sEPHEMERAL_SEQUENTIAL临时顺序节点-es
在创建节点时如果没有指定存储数据那么默认存储的数据是当前服务器的ip地址
CUrator是Zookeeper的Java客户端库常见的Zookeeper
APICurator使用较为简单其次高版本的Curator可以向下兼容zk但zk无法向下兼容Curator
一共有两种连接客户端的方式一种是通过newClient()一种是通过Builder链式编程创建客户端对象
10);//第一种连接zk方式/*参数1指定需要连接的zk地址与端口如果是集群模式使用,分隔开参数2会话超时时间参数3连接超时时间参数4重试策略*/CuratorFramework
CuratorFrameworkFactory.newClient(192.168.116.131:2181,
retryPolicy);client.start();//第二种连接方式可以指定namespace其实是指定根下进行CuratorFramework
CuratorFrameworkFactory.builder().connectString(192.168.116.131:2181).sessionTimeoutMs(60
1000).retryPolicy(retryPolicy).namespace(zmt).build();client2.start();
创建节点默认创建节点类型为持久化返回结果为路径如果不指定节点存储类型那么默认存储客户端的ip地址
{//如果不指定参数2那么该节点的存储数据为客户端的ip地址String
client.create().forPath(/app1,zhangsan.getBytes());System.out.println(path);//我们可以通过指定withMode来确定需要创建的节点类型参数为枚举类client.create().withMode(CreateMode.EPHEMERAL).forPath(/app2);//创建多级节点,创建父结点如果需要client.create().creatingParentsIfNeeded().forPath(/app3/p1);
我们可以查询节点的存储信息也可以查询节点的子节点信息也可以查询节点的状态信息
client.getData().forPath(/app1);System.out.println(new
String(data));//获取子节点信息ListString
client.getChildren().forPath(/app3);System.out.println(list);//获取节点状态信息Stat
Stat();client.getData().storingStatIn(status).forPath(/app1);System.out.println(status);
因为可能存在多个客户端连接同一个zookeeper因此可能会出现修改节点数据时其他节点也在修改的问题因此为了避免出现同时修改同一个数据的情况发生我们应该先获取数据的版本然后修改数据时根据数据的版本是否一致再决定是否进行修改。
Stat();client.getData().storingStatIn(stat).forPath(/app1);version
stat.getVersion();System.out.println(version);client.setData().withVersion(version).forPath(/app1,lisi.getBytes());
一般我们都要添加guaranteed()方法来避免网络问题产生的删除失败的问题
{//删除单个节点client.delete().forPath(/app1);//删除多级节点client.delete().deletingChildrenIfNeeded().forPath(/app3);//删除失败进行重试直到删除成功//比如说网络不好导致删除失败可以重复进行删除client.delete().guaranteed().forPath(/app2);//删除回调client.delete().guaranteed().inBackground(new
{System.out.println(节点被删除);System.out.println(event);}}).forPath(/app4);
zk运行用户在指定节点上注册一些Watcher并且在一些特定事件触发的时候zk服务端会将事件通知到感兴趣的客户端上去该机制是zk实现分布式协调服务的重要特性。
zk中引入了Watch机制来实现了发布订阅功能能够让多个订阅者同时监听某一个对象当一个对象自身状态发生变化时会通知所有的订阅者
NodeCache只监听一个特定结点PathChildrenCache监控一个Znode的子节点TreeCache前两个结合监听自己和自己所有子节点
/app1);nodeCache.getListenable().addListener(new
{System.out.println(节点发生变化);//获取节点变化后的值byte[]
nodeCache.getCurrentData().getData();System.out.println(new
String(data));}});nodeCache.start();while
true);pathChildrenCache.getListenable().addListener(new
{System.out.println(节点发生变化);System.out.println(pathChildrenCacheEvent);PathChildrenCacheEvent.Type
pathChildrenCacheEvent.getType();if
(type.equals(PathChildrenCacheEvent.Type.CHILD_UPDATED)){//如果是update事件byte[]
pathChildrenCacheEvent.getData().getData();System.out.println(new
String(data));}}});pathChildrenCache.start();while
TreeCache(client,/);treeCache.getListenable().addListener(new
{System.out.println(数据发生变化);System.out.println(treeCacheEvent);}});treeCache.start();while
实现分布式锁的原理当客户端要获取锁时创建节点使用完锁删除该节点
客户端获取锁时在lock节点下创建临时顺序结点然后客户端获取lock下面所有的子节点如果发现自己创建的子节点序号最小那么就认为该客户端获取到了锁。
使用完后把节点删除如果不是最小的结点说明此时自己还没有获取到锁此时客户端需要找到比自己小的哪个结点同时对其注册事件监听器监听删除事件。
如果比自己小一个的结点被删除则客户端的Watcher会收到通知此时再次判断自己的结点是否最小如果不是重复以上步骤
采取临时节点是为了避免客户端在获取到锁之后处理业务时宕机当客户端宕机之后会话结束临时节点会自动删除
分布式排他锁分布式可重入排他锁分布式读写锁将多个锁作为单个实体管理的容器共享信号量
CuratorFrameworkFactory.builder().connectString(192.168.116.131:2181).connectionTimeoutMs(60*1000).sessionTimeoutMs(15*1000).retryPolicy(retryPolicy).build();client.start();lock
{Thread.sleep(100);System.out.println(Thread.currentThread().getName()
{System.out.println(我出错了);e.printStackTrace();}
飞猪);t1.start();t2.start();while(true){}}
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback