• 一、到底在哪些地方需要使用序列化技术呢?
  • 二、Zookeeper(分布式协调服务组件+存储系统)
  1. Java 序列化机制
  2. Hadoop序列化机制
  3. Zookeeper序列化机制

一、到底在哪些地方需要使用序列化技术呢?

1、当在网络中需要进行消息、数据、等的传输,那么这些数据就需要进行序列化和反序列化。

2、当数据需要从内存被持久化到磁盘的时候。

二、Zookeeper(分布式协调服务组件+存储系统)

任何一个分布式系统的底层,都必然会有网络通信,这就必然要提供一个分布式通信框架和序列化机制。

Zookeeper网络通信和序列化。你知道有哪些序列化方式呢?
1、Java提供的序列化机制

2、Hadoop的序列化技术

3、Zookeeper的序列化

4、Spark提供的序列化等等

1、Java序列化机制

  1. class xxxx implements Serializable
  2. 序列化过程中:类型信息 + 对象实例的属性值
  3. 特点就是比较笨重:(除了实例的属性信息以外,还会序列化这个实例的类型信息)
  4. Spark默认使用的序列化机制就是Java原生序列化机制,也提供其他的序列化方式。
  5. 使用ObjectInputStream 和 ObjectOutputStream 来进行具体的序列化和反序列化。

2、Hadoop序列化机制

有两种方式:avro(implements Writable)  protobuf

Hdfs中使用的序列化就是avro,Yarn使用的是Protobuf

Hadoop的序列化和反序列化中的字段的顺序和多少,一定要严格一样,否则序列化和反序列化就对不上了。

class Student implements Writable{
// 反序列化
void readFields(DataIn input);
// 序列化
void write(DataOut output);
}

3、Zookeeper序列化机制

zk中的序列化和反序列化,没有严格的顺序要求,因为使用tag标记,下面会有简单的demo示例:

class Student implements Record{
// 反序列化
void deserialize(InputArchive archive, String tag) {
archive.readBytes();
archive.readInt();
}
// 序列化
void serialize(OutputArchive archive, String tag)
}

ZK中序列化就是Record,如果在源码中看到了一个类实现了Record接口,那么这个类必然将有数据从磁盘读取到内存和从内存序列化到磁盘的方法。

序列化的API主要在zookeeper-jute子项目中。

重点API:

org.apache.jute.InputArchive:反序列化需要实现的接口,其中各种read开头的方法,都是反序列化方法

实现类:在3.4.x之前有三种实现,见图:

3.5之后的版本 就只有Binary这一种了,主要原因是CSV和XML这两种实现类没有人使用,如果需需呀使用这两种实现,直接从老版本中复制。

org.apache.jute.OutputArchive:所有进行序列化操作的都是实现这个接口,其中各种write开头的方法都是序列化方法。

org.apache.jute.Index:用于迭代数据进行反序列化的迭代器。见图:

org.apache.jute.Record:在Zookeeper要进行网络通信的对象,都需要实现这个接口。里面有序列化和反序列化两个重要的方法。

Zookeeper 序列化机制的更多相关文章

  1. 【分布式】Zookeeper序列化及通信协议

    一.前言 前面介绍了Zookeeper的系统模型,下面进一步学习Zookeeper的底层序列化机制,Zookeeper的客户端与服务端之间会进行一系列的网络通信来实现数据传输,Zookeeper使用J ...

  2. 深入挖掘.NET序列化机制——实现更易用的序列化方案

    .NET框架为程序员提供了“序列化和反序列化”这一有力的工具,使用它,我们能很容易的将内存中的对象图转化为字节流,并在需要的时候再将其恢复.这一技术的典型应用场景包括[1] : 应用程序运行状态的持久 ...

  3. zookeeper心跳机制流程梳理

    zookeeper心跳机制流程梳理 Processor链Chain protected void setupRequestProcessors() { RequestProcessor finalPr ...

  4. Hadoop阅读笔记(六)——洞悉Hadoop序列化机制Writable

    酒,是个好东西,前提要适量.今天参加了公司的年会,主题就是吃.喝.吹,除了那些天生话唠外,大部分人需要加点酒来作催化剂,让一个平时沉默寡言的码农也能成为一个喷子!在大家推杯换盏之际,难免一些画面浮现脑 ...

  5. Java序列化机制

    java的序列化机制支持将对象序列化为本地文件或者通过网络传输至别处, 而反序列化则可以读取流中的数据, 并将其转换为java对象. 被序列化的类需要实现Serializable接口, 使用Objec ...

  6. Thrift 个人实战--Thrift 的序列化机制

    前言: Thrift作为Facebook开源的RPC框架, 通过IDL中间语言, 并借助代码生成引擎生成各种主流语言的rpc框架服务端/客户端代码. 不过Thrift的实现, 简单使用离实际生产环境还 ...

  7. 由浅入深了解Thrift之服务模型和序列化机制

    一.Thrift介绍 Thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发.它结合了功能强大的软件堆栈和代码生成引擎.其允许你定义一个简单的定义文件中的数据类型和服务接口.以作为输入文件,编 ...

  8. 1 weekend110的复习 + hadoop中的序列化机制 + 流量求和mr程序开发

    以上是,weekend110的yarn的job提交流程源码分析的复习总结 下面呢,来讲weekend110的hadoop中的序列化机制 1363157985066      13726230503  ...

  9. hadoop序列化机制与java序列化机制对比

    1.采用的方法: java序列化机制采用的ObjectOutputStream 对象上调用writeObject() 方法: Hadoop 序列化机制调用对象的write() 方法,带一个DataOu ...

随机推荐

  1. box-shadow详解

    今天课堂上有学生问到box-shadow这个属性,那么下面我们就来详细的解说下这个属性它的用法,box-shadow是css3中的一个属性,它可以向框添加一个或多个阴影. 首先我们来看它的语法: bo ...

  2. xampp中修改mysql默认空密码

    打卡记录: 1. mysql用户的相关信息是保存在mysql数据库的user表中的,并且该表的密码字段(Password)是通过PASSWORD方法加密存储的,所以不能直接修改成123456. 2. ...

  3. 前端基础html(二)

    一.html的概念 1.概念:超文本标记语言. 2.超文本,超链接:超级不仅有文本,图片,还有音频,视频等. 3.html:作用:   显示服务器端的响应结果. 二.互联网三大基石 1.url:统一资 ...

  4. python里面的==,is的区别

    python中对象的三个要素:id(身份标示),type(数据类型).value(值) ==  比较操作符:用来比较两个对象值是否相等. is  同一性运算符:比较两个对象的id值是否相等,即是否是同 ...

  5. C++第四十七篇 -- VS2017带参数启动调试程序

    参考链接:https://www.cnblogs.com/kileyi/p/10163269.html 举例:Test_Bluetooth.exe -help Test_Bluetooth.cpp # ...

  6. redis故障时的一些概念

    1.缓存穿透 概念访问一个不存在的key,缓存不起作用,请求会穿透到DB,流量大时DB会挂掉. 解决方案采用布隆过滤器,使用一个足够大的bitmap,用于存储可能访问的key,不存在的key直接被过滤 ...

  7. 新一代垃圾回收器ZGC的探索与实践

    ZGC(The Z Garbage Collector)是JDK 11中推出的一款低延迟垃圾回收器,它的设计目标包括: 停顿时间不超过10ms: 停顿时间不会随着堆的大小,或者活跃对象的大小而增加: ...

  8. 开机时自动启动的AutoHotkey脚本

    ;;; 开机时自动启动的AutoHotkey脚本;; 此脚本修改时间 2019年06月18日20时48分;; 计时器创建代码段 ------------------------------------ ...

  9. 【动画消消乐|CSS】调皮逃跑的小方块 077

    前言 Hello!小伙伴! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出-   自我介绍 ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计 ...

  10. noip模拟33[进阶啦啦啦]

    noip模拟33 solutions 不知道该咋说,这场考试其实是我这三四场以来最最最最最顺心的一场了 为啥呢?因为我这回思考有很多结果,得到了脑袋的回复 就是你想了半个小时就有了一点点头绪,那感觉就 ...