Apache Avro

序列化和反序列化

☆樱花仙子☆ 提交于 2020-10-28 10:19:45
#摘要 序列化和反序列化几乎是工程师们每天都要面对的事情,但是要精确掌握这两个概念并不容易:一方面,它们往往作为框架的一部分出现而湮没在框架之中;另一方面,它们会以其他更容易理解的概念出现,例如加密、持久化。然而,序列化和反序列化的选型却是系统设计或重构一个重要的环节,在分布式、大数据量系统设计里面更为显著。恰当的序列化协议不仅可以提高系统的通用性、强健性、安全性、优化系统性能,而且会让系统更加易于调试、便于扩展。本文从多个角度去分析和讲解“序列化和反序列化”,并对比了当前流行的几种序列化协议,期望对读者做序列化选型有所帮助。 简介 文章作者服务于美团推荐与个性化组,该组致力于为美团用户提供每天billion级别的高质量个性化推荐以及排序服务。从Terabyte级别的用户行为数据,到Gigabyte级别的Deal/Poi数据;从对实时性要求毫秒以内的用户实时地理位置数据,到定期后台job数据,推荐与重排序系统需要多种类型的数据服务。推荐与重排序系统客户包括各种内部服务、美团客户端、美团网站。为了提供高质量的数据服务,为了实现与上下游各系统进行良好的对接,序列化和反序列化的选型往往是我们做系统设计的一个重要考虑因素。 本文内容按如下方式组织: 第一部分给出了序列化和反序列化的定义,以及其在通讯协议中所处的位置。 第二部分从使用者的角度探讨了序列化协议的一些特性。

Kafka快速入门(八)——Confluent Kafka简介

爷,独闯天下 提交于 2020-10-22 12:11:13
Kafka快速入门(八)——Confluent Kafka简介 一、Confluent Kafka简介 1、Confluent Kafka简介 2014年,Kafka的创始人Jay Kreps、NahaNarkhede和饶军离开LinkedIn创立Confluent公司,专注于提供基于Kafka的企业级流处理解决方案,并发布了Confluent Kafka。Confluent Kafka分为开源版和企业版,企业版收费。 2、Confluent Kafka特性 Confluent Kafka开源版特性如下: (1)Confluent Kafka Connectors:支持Kafka Connect JDBC Connector、Kafka Connect HDFS Connector、Kafka Connect Elasticsearch Connector、Kafka Connect S3 Connector。 (2)多客户端支持:支持C/C++、Python、Go、.Net、Java客户端。 (3)Confluent Schema Registry (4)Confluent Kafka REST Proxy Confluent Kafka企业版特性如下: (1)Automatic Data Balancing (2)Multi-DataCenter Replication (3

Kafka快速入门(十二)——Python客户端

丶灬走出姿态 提交于 2020-10-05 06:18:49
Kafka快速入门(十二)——Python客户端 一、confluent-kafka 1、confluent-kafka简介 confluent-kafka是Python模块,是对librdkafka的轻量级封装,支持Kafka 0.8以上版本。本文基于confluent-kafka 1.3.0编写。 GitHub地址: https://github.com/confluentinc/confluent-kafka-python 2、confluent-kafka特性 (1)可靠。confluent-kafka是对广泛应用于各种生产环境的librdkafka的封装,使用Java客户端相同的测试集进行测试,由Confluent进行支持。 (2)性能。性能是一个关键的设计考虑因素,对于较大的消息,最大吞吐量与Java客户机相当(Python解释器的开销影响较小),延迟与Java客户端相当。 (3)未来支持。Coufluent由Kafka创始人创建,致力于构建以Apache Kafka为核心的流处理平台。确保核心Apache Kafka和Coufluent平台组件保持同步是当务之急。 3、confluent-kafka安装 创建confluent源: 进入/etc/yum.repos.d目录创建confluent.repo文件: [Confluent.dist] name

Hadoop 2.X 从入门到精通系列视频课程套餐

…衆ロ難τιáo~ 提交于 2020-08-18 20:56:58
购买大数据Hadoop课程套餐,享 八五 折优惠!! 套餐地址: http://edu.51cto.com/pack/view/id-806.html 赵强老师博客地址: http://collen7788.blog.51cto.com/ Avro是一个通用的序列化数据结构形式,在Hadoop大数据开发之中有着重要的通用结构化作用,本课程将为读者讲解Avro数据结构的定义,并且实现AVRO程序,同时为读者讲解如何基于Avro实现Java数据的序列化与反序列化处理操作;同时,将为学员详细介绍Avro RPC的实现和在MapReduce中如何使用Avro序列化。 本系列课程共包含以下六门课程: 1、Hadoop 2.x (一)大数据基础 http://edu.51cto.com/course/course_id-6704.html 2、Hadoop 2.x (二)大数据进阶 http://edu.51cto.com/course/course_id-6705.html 3、Hadoop 2.x (三) 数据分析引擎:Hive http://edu.51cto.com/course/course_id-6706.html 4、Hadoop 2.x (四)数据分析引擎:Pig http://edu.51cto.com/course/course_id-6707.html 5、Hadoop

深入分析序列化和反序列化原理,终于知道serialVersionUID到底有什么用了

情到浓时终转凉″ 提交于 2020-08-18 07:56:59
深入序列化和反序列化原理 一个问题引发的思考 什么是序列化和反序列化 为什么需要序列化 序列化的方式 Java序列化 serialVersionUID的作用 serialVersionUID的两种表现形式 Transient关键字 writeObject和readObject Java序列化特点 Java序列化的缺点 XML序列化 JSON序列化 常用三种序列化方式对比 其他序列化 序列化技术的选型 一个问题引发的思考 下面是一个简单的socket通信demo。 通信数据类: package com . zwx . serialize . demo ; public class SocketUser { public SocketUser ( String id , String name ) { this . id = id ; this . name = name ; } private String id ; private String name ; public String getId ( ) { return id ; } public void setId ( String id ) { this . id = id ; } public String getName ( ) { return name ; } public void setName (

Java架构师面试之Netty面试专题及答案(共10题,含详细解答)

对着背影说爱祢 提交于 2020-08-11 14:46:22
【 Java架构师面试网 】收集整理了几乎整个架构师学习途中会遇到的面试题,希望大家都能早日圆自己的架构师梦~ 公众号: Java架构师面试网 ,关注回复“ 资料 ”即可领取精美整理的面试资料一份哦~ 1.BIO、 NIO 和 AIO 的区别? BIO :一个连接一个线程,客户端有连接请求时服务器端就需要启动一个线程进行处理。线程开销大。 伪异步 IO :将请求连接放入线程池,一对多,但线程还是很宝贵的资源。 NIO :一个请求一个线程,但客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有 I/O 请求时才启动一个线程进行处理。 AIO :一个有效请求一个线程,客户端的 I/O 请求都是由 OS 先完成了再通知服务器应用去启动线程进行处理, BIO是面向流的,NIO 是面向缓冲区的;BIO 的各种流是阻塞的。而NIO是非阻塞的;BIO的 Stream 是单向的,而NIO的channel 是双向的。 NIO 的特点:事件驱动模型、单线程处理多任务、非阻塞 I/O, I/O 读写不再阻塞,而是返回 0、基于 block 的传输比基于流的传输更高效、更高级的 IO 函数 zero-copy、 IO 多路复用大大提高了 Java 网络应用的可伸缩性和实用性。基于 Reactor 线程模型。 在 Reactor 模式中,事件分发器等待某个事件或者可应用或个操作的状态发生

Kafka Connect 启动服务以及提交任务初体验

只谈情不闲聊 提交于 2020-08-07 04:51:18
Kafka提供两种启动方式,一种是单机版standalone,一种是分布式版distributed,与之想对应的配置文件也是分开的 单机版的配置文件:connect-standalone.properties 分布式的配置文件:connect-distributed.properties 单机启动方式:bin/connect-standalone.sh -daemon config/connect-standalone.properties config/connect-console-sink.properties 分布式启动方式:bin/connect-distributed.sh -daemon config/connect-distributed.properties 启动完之后就能通过curl的方式请求确认服务是否正常 curl localhost:8083/connectors 单机模式配置信息在提交的配置文件里面,例如:config/connect-console-sink.properties 集群模式需要通过REST API去提交 基于Debezium 的CDC为例,介绍下如何提交一个Kafka Connect source 任务: curl -X POST -H "Content-Type: application/json" http://localhost

Pulsar 2.5.0 之 Schema 管理

不羁岁月 提交于 2020-08-07 03:52:24
Pulsar 2.5.0 之 Schema 管理 官网原文标题《Manage schema》 翻译时间:2020-02-15 官网原文地址: http://pulsar.apache.org/docs/en/schema-manage/ 摘要:本文主要学习如何管理模式以及管理模式的方法。 管理模式的方法: 自动 Schema 自动更新 手动 Schema 手动管理 自定义 schema 存储 模式自动更新 如果schema通过了schema兼容性检查,Pulsar自动更新从主题上,这个过程是默认的。 生产者自动更新 生产者 自动更新 在以下情况发生: 如果主题上模式不存在,Pulsar会自动注册模式 如果主题上模式存在: 生产者不携带模式 : 主题所属的命名空间参数 isSchemaValidationEnforced or schemaValidationEnforced 禁用状态,生产者允许连接主题和发送数据 主题所属的命名空间参数 isSchemaValidationEnforced or schemaValidationEnforced 启用状态,生产者被拒绝连接主题。 生产者携带模式 : broker根据主题所属命名空间上已配置的兼容性检查策略执行兼容性检查。 如果模式已注册,生产者可以直接连接broker 如果模式未注册: 参数

kafka-rest:A Comprehensive, Open Source REST Proxy for Kafka

余生颓废 提交于 2020-05-08 05:50:20
Ewen Cheslack-Postava March 25, 2015 时间有点久,但讲的还是很清楚的 As part of Confluent Platform 1.0 released about a month ago, we included a new Kafka REST Proxy to allow more flexibility for developers and to significantly broaden the number of systems and languages that can access Apache Kafka clusters. In this post, I’ll explain the REST Proxy’s features, how it works, and why we built it. What is the REST Proxy and why do you need one? The REST Proxy is an open source HTTP-based proxy for your Kafka cluster. The API supports many interactions with your cluster, including producing and consuming

building confluentinc kafka-connect-hdfs

大憨熊 提交于 2020-05-08 05:49:51
When I try to compile I get an error about a missing SNAPSHOT dependency. The error looks something like this: Failed to execute goal on project kafka-connect-hdfs: Could not resolve dependencies for project io.confluent:kafka -connect-hdfs:jar: 3.1 . 0 -SNAPSHOT: Failure to find io.confluent:kafka -connect-avro-converter:jar: 3.1 . 0 -SNAPSHOT in http: // packages.confluent.io/maven/ was cached in the local repository, resolution will not be reattempted until the update interval of confluent has elapsed or updates are forced The HDFS connector uses a few dependencies which we sometimes use