Microsoft Avro介绍

Microsoft发布了他们自己对Apache
Avro
通信协议的实现。Avro被描述为“紧凑的二进制数据序列化格式,类似于Thrift或者Protocol Buffers”,同时还有像Hadoop这样的分布式处理环境所需要的额外功能。

为了让该协议尽可能地快,Microsoft
Avro类库
会在运行时使用表达式树构建并编译一个自定义的序列化器。在第一次命中将序列化器编译成IL代码之后,它的性能要比基于反射的算法更好。

Protocol
Buffers
不同的是,Avro协议是自描述的。当客户端和服务器之间建立连接的时候,模式就会被传送。通常情况下模式仅会被传输一次,因此没必要硬编码二进制格式,也没有在每个消息里面传递模式的代价。

由于以上种种原因,Microsoft Avro类库能支持下面三种模式:

  • 反射模式。基于.NET类型的模式构建序列化器的IL代码以便于实现性能最大化。

  • 通用记录模式。可以在运行时指定数据的JSON模式,因此能够处理任意模式的动态数据。

  • 容器模式。类库能够生成嵌入了模式的可移植文件。文件格式与Avro容器文件规范兼容,同时能够跨平台使用。

在反射模式下使用的时候,Avro使用WCF开发者所熟悉的DataContract/DataMemeber属性。

通用记录模式会假定你并没有一个预定义的.NET类用来存储数据。相反地,你使用AvroRecord类连同一个描述数据格式的JSON文档。AvroRecord对象需要使用后期绑定模式访问(C#
dynamic、关闭VB Option Strict)。

容器模式可以连同反射模式或者通用记录模式一起使用。因为你是以这种模式创建文件而不是通过可以对数据进行压缩和/或加密(使用你喜欢的任意方式)的线路发送消息。开箱即用并不会让你感受到压力或者抑制,但是它仅包含构建代码解码器的指令

示例代码: http://code.msdn.microsoft.com/Serialize-data-with-the-86055923

查看英文原文Introducing
Microsoft Avro

时间: 2024-10-24 07:53:47

Microsoft Avro介绍的相关文章

Avro介绍

Avro介绍 Apache Avro是一个数据序列化系统. Avro所提供的属性: 1.丰富的数据结构2.使用快速的压缩二进制数据格式3.提供容器文件用于持久化数据4.远程过程调用RPC5.简单的动态语言结合功能,Avro 和动态语言结合后,读写数据文件和使用 RPC 协议都不需要生成代码,而代码生成作为一种可选的优化只值得在静态类型语言中实现. Avro的Schema Avro的Schema用JSON表示.Schema定义了简单数据类型和复杂数据类型. 基本类型 其中简单数据类型有以下8种:

spark使用scala读取Avro数据(转)

这是一篇翻译,原文来自:How to load some Avro data into Spark. 首先,为什么使用 Avro ? 最基本的格式是 CSV ,其廉价并且不需要顶一个一个 schema 和数据关联. 随后流行起来的一个通用的格式是 XML,其有一个 schema 和 数据关联,XML 广泛的使用于 Web Services 和 SOA 架构中.不幸的是,其非常冗长,并且解析 XML 需要消耗内存. 另外一种格式是 JSON,其非常流行易于使用因为它非常方便易于理解. 这些格式在

基于Hadoop2.0、YARN技术的大数据高阶应用实战(Hadoop2.0\YARN\Ma

Hadoop的前景 随着云计算.大数据迅速发展,亟需用hadoop解决大数据量高并发访问的瓶颈.谷歌.淘宝.百度.京东等底层都应用hadoop.越来越多的企 业急需引入hadoop技术人才.由于掌握Hadoop技术的开发人员并不多,直接导致了这几年hadoop技术的薪水远高于JavaEE及 Android程序员. Hadoop入门薪资已经达到了8K以上,工作1年可达到1.2W以上,具有2-3年工作经验的hadoop人才年薪可以达到30万—50万. 一般需要大数据处理的公司基本上都是大公司,所以学

Visio作图

1.Microsoft Visio介绍 Visio是一款便于IT和商务专业人员就复杂信息.系统和流程进行可视化处理.分析和交流的软件,也是Microsoft Office办公软件家族中的一个绘图工具软件. 2.Visio的基本使用 3.Visio实现结构化分析与设计

Azure 动手演示之一:采用定制化方法在 Azure 中创建虚拟机

也许大家看过很多关于 Windows Azure (Microsoft Azure) 介绍或如何使用的文章,但即使看过很多图片或 PPT,也难以真正理解这一全球领先的公有云平台. 鉴于此,我制作了一系列如何使用 Azure 的视频录像,主要是实时录制我在屏幕上对 Azure 的操作.希望能对大家深入的了解 Windows Azure (Microsoft Azure) 有所帮助. 本演示看上去非常简单,目的是如何在 Azure 上创建虚拟机,但事实上,它是如何在 Azure 上创建整个企业部署的

S2---深入.NET平台和C#编程的完美总结

1.NET简单解说 l 面向对象提升 OOP(Object Oriented  Programming)面向对象编程 AOP:(Aspache  Oriented Programming):面向切面编程 OOD(Object Oriented  Designer)面向对象设计(架构师)   3万/month OOA(Object Oriented  Analysis)面向对象分析  (分析师) 10万/month DBA(Database Administrator,简称DBA) l 泛型集合对

【工具】获取窗口与控件信息

[工具]获取窗口与控件信息 常言道,工欲善其事,必先利其器.在脚本中常见的一种操作是操作窗口或控件,在操作之前,首先必须获取目标的各种信息,这时就要用上辅助工具了.本文会介绍一些获取窗口.控件信息的常用工具,这里的先后顺序是随意安排.如果目前用的没什么问题就继续用着,如果对某些地方不满意则可试试其他.简单的截图不容易全面反映整个工具的功能和特色,使用才能获得真实体验. Active Window Info 评论:这个最初来自于 AutoIt3 且安装包中自带的工具,就无需过多介绍了.功能简陋,但

最完整的历史记录hadoop

课程主要涉及Hadoop Sqoop.Flume.Avro重要子项目的技术实战 课程针对人群 1.本课程适合于有一定java基础知识.对数据库和sql语句有一定了解,熟练使用linux系统的技术人员,特别适合于想换工作或寻求高薪职业的人士 2.最好有Greenplum Hadoop.Hadoop2.0.YARN.Sqoop.FlumeAvro等大数据基础.学习过北风课程<Greenplum 分布式数据库开发入门到精通>.<全面深入Greenplum Hadoop大数据分析平台>.&

史上最全的hadoop

课程主要涉及Hadoop Sqoop.Flume.Avro重要子项目的技术实战 课程针对人群 1.本课程适合于有一定java基础知识,对数据库和sql语句有一定了解,熟练使用linux系统的技术人员,特别适合于想换工作或寻求高薪职业的人士 2.最好有Greenplum Hadoop.Hadoop2.0.YARN.Sqoop.FlumeAvro等大数据基础,学习过北风课程<Greenplum 分布式数据库开发入门到精通>.<全面深入Greenplum Hadoop大数据分析平台>.&