IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> ZooKeeper官方文档学习笔记04-程序员指南03 -> 正文阅读

[大数据]ZooKeeper官方文档学习笔记04-程序员指南03

我的每一篇这种正经文章,都是我努力克制玩心的成果,我可太难了,和自己做斗争。

ZooKeeper官方文档学习笔记04-程序员指南03

绑定

zk客户端支持两种语言:Java和C

Java绑定

相关包:org.apache.zookeeper 和 org.apache.zookeeper.data,data主要用作容器,由生成的类组成(??)

Zookeeper的java客户端使用的主类是ZooKeeper类(org.apache.zookeeper.ZooKeeper)。他的构造方法通过两方面区分:会话id和会话密码。Java程序可以将会话id和密码保存下来(方便使用?)
创建zk对象会创建两个线程:一个IO线程(IO事件发生地)和一个事件线程(事件回调发生地)。

常用的IO事件:重新连接到zk服务器、维护心跳、同步方法的响应
常用的事件回调:对异步方法和监视事件的响应

Note:

  • 1 异步调用和watcher回调都是按顺序进行的,一次执行一个?在此期间不处理其他回调
  • 2 事件回调不会阻塞IO线程或同步调用的处理。
  • 3 同步调用存在不按顺序执行的可能性。例如,假设客户端执行以下处理:在watcher设置为true(监听数据变更)的情况下发出对节点/a的异步读取,然后再读取的完成回调中执行/a的同步读取。

这样举例,可能会比较好理解。

$.ajax({
    type:'POST',
    url:"a.html",
    success:function(msg) {
         $("#form").submit();
     }
 });
 ...
 <ww:form id="form" action="a"/>

其中watcher和异步方法是事件回调,同步方法是IO事件

注意,如果异步读取和同步读取之间的/a发生了更改,则客户端将在同步读取响应之前收到一个watch事件,表示/a changed。但由于完成回调阻塞了事件队列。因此在处理watch事件之前,同步读取将返回/a的新值。

完成回调是指异步读取吗?因为异步读取在watch之前,所以回调堵塞了队列。导致同步先读取到值,而不是先接收到节点a的变化?

与关闭相关的规则:一旦zk对象关闭或收到致命事件(SESSION_expired和AUTH_failed),zk对象就无效了。关闭时,这两个线程关闭了,后续对zookeeper句柄的任何访问都将导致不确定的行为,应该避免。

客户端配置参数

  • 1 zookeeper.sasl.clientfalse代表禁用SASL身份验证,默认为true

  • 2 zookeeper.sasl.clientconfig:指定JAAS登陆文件中的上下文键,默认为"Client"。

  • 3 zookeeper.sasl.client.username:一般,一个主体被分为3部分:primary、instance、和realm。典型的 Kerberos V5主体的格式是 primary/instance@REALM。instance派生自服务器IP。zookeeper.sasl.client.username指定primary即username,默认是"zookeeper"。所以最终是username/IP@realm

  • 4 zookeeper.server.realm:上文的realm

  • 5 zookeeper.disableAutoWatchReset:是否启用自动watch重置。默认,客户端在会话重连期间自动重置watch,设置为"true"可以关闭此行为。

  • 6 zookeeper.client.secure:为true可以让客户端连接到服务器安全客户端端口,需要Netty客户端,且需使用带有指定凭据的SSL连接。

  • 7 zookeeper.clientCnxnSocket:指定使用哪个ClientCnxnSocket。可选的有org.apache.zookeeper.ClientCnxnSocketNIO and org.apache.zookeeper.ClientCnxnSocketNetty 。默认的是第一个。如果想要连接到服务器的安全客户端端口,要在客户端上设置成第二种。

  • 8 zookeeper.ssl.keyStore.location and zookeeper.ssl.keyStore.password:指定包含用于SSL连接的本地凭据的JKS的文件路径和解锁文件的密码。

  • 9 zookeeper.ssl.trustStore.location and zookeeper.ssl.trustStore.password:指定包含用于SSL连接的远程凭据的JKS的文件路径和解锁文件的密码。

  • 10 jute.maxbuffer:指定服务器传入数据的最大大小。默认值是4194304字节,或者只有4MB。这至关重要,zookeeper的服务器可存储和发送数千字节的数据。如果长度打了,将引发IOException。

  • 11 zookeeper.kinit:指定kinit二进制文件的路径,默认值“/usr/bin/kinit”。

C绑定

诶呀,同上文的C,暂不负责(这样就可以在今天下午写完程序员指南了,嘿嘿~ )

绑定都会发生错误,Java 客户机绑定通过抛出 KeeperException 来实现,对异常调用 code ()将返回特定的错误代码。C 客户端绑定返回一个错误代码,这个错误代码定义在 enum ZOO _ errors 中,具体参考API。

陷阱: 常见问题及故障排除

  • 1 watch只能监听已连接事件:zk客户端与服务器断连时,创建并删除znode,将不会收到watch事件。
  • 2 zk服务器只要大多服务器存活就可以。但你要保证在发生故障后恢复你的状态和未完成的请求。
  • 3 客户端使用的zk服务器连接字符串必须和zk服务器匹配,不匹配无法连接。(必须是现有的zk服务器)
  • 4 事务日志是影响zk性能的最关键部分,位置谨慎选择。zk必须在返回响应前将事物同步到媒体。所以要搞个专门的事务日志(之前好像有提到?)
  • 5 正确设置Java最大堆大小,避免内存交换。内存交换到磁盘会降低性能(参考操作系统的缓存、硬盘?)zk请求是有序的,如果一个请求到达磁盘,所有排队的请求也会到达磁盘。所以尝试将heapsize设置为拥有的物理内存量。比如4g的机器上设置3g。确定大小的最佳方法是运行负载测试。

终于写完程序员指南这篇了,可真不容易。来都来了,点个赞再走呗,会回访呐。在这里插入图片描述

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-07-31 16:42:40  更:2021-07-31 16:43:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/5 2:38:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码