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
Microsoft Avro介绍的更多相关文章
- Avro介绍
Avro介绍 Apache Avro是一个数据序列化系统. Avro所提供的属性: 1.丰富的数据结构2.使用快速的压缩二进制数据格式3.提供容器文件用于持久化数据4.远程过程调用RPC5.简单的 ...
- DotNet IOC Framework - Microsoft Unity介绍
一. 新建一个ASP.NET MVC4项目 二. 安装Microsoft Unity 1) 管理Nuget程序包 2)安装Unity3程序包 在你的App_Start文件夹里会多出来两个文件 三. 一 ...
- spark使用scala读取Avro数据(转)
这是一篇翻译,原文来自:How to load some Avro data into Spark. 首先,为什么使用 Avro ? 最基本的格式是 CSV ,其廉价并且不需要顶一个一个 schema ...
- Apache Avro总结
参考 Apache Avro™ 1.9.0 Specification Avro介绍 小而巧的数字压缩算法:zigzag 原始类型(Primitive Types) 类型名 描述 描述 二进制编码 ...
- Microsoft Hyperlapse——让第一人称视频更快更流畅
Hyperlapse--让第一人称视频更快更流畅" title="Microsoft Hyperlapse--让第一人称视频更快更流畅"> 职业摄影师Nick Di ...
- S2---深入.NET平台和C#编程的完美总结
1.NET简单解说 l 面向对象提升 OOP(Object Oriented Programming)面向对象编程 AOP:(Aspache Oriented Programming):面向切面编 ...
- Visio作图
1.Microsoft Visio介绍 Visio是一款便于IT和商务专业人员就复杂信息.系统和流程进行可视化处理.分析和交流的软件,也是Microsoft Office办公软件家族中的一个绘图工具软 ...
- 北风风hadoop课程体系
课程一.基于Linux操作系统平台下的Java语言开发(20课时)课程简介本套课程主要介绍了Linux系统下的Java环境搭建及最基础的Java语法知识.学习Linux操作系统下Java语言开发的好处 ...
- 基于Hadoop2.0、YARN技术的大数据高阶应用实战(Hadoop2.0\YARN\Ma
Hadoop的前景 随着云计算.大数据迅速发展,亟需用hadoop解决大数据量高并发访问的瓶颈.谷歌.淘宝.百度.京东等底层都应用hadoop.越来越多的企 业急需引入hadoop技术人才.由于掌握H ...
随机推荐
- SecureCRT在远程主机和本地之间传输文件
概述 Linux系统不像Window系统有清晰的操作页面,数据能Copy下来,远程Linux的数据,就牵扯到本地数据与远程服务器数据交换的问题.Linux远程攻击SecureCrt提供了2种方式,可以 ...
- 不注册COM在Richedit中使OLE支持复制粘贴
正常情况下在Richedit中使用OLE,如果需要OLE支持复制粘贴,那么这个OLE对象必须是已经注册的COM对象. 注册COM很简单,关键问题在于注册时需要管理员权限,这样一来,如果希望APP做成绿 ...
- CozyRSS开发记录9-快速实现一个RSS解析器
CozyRSS开发记录9-快速实现一个RSS解析器 1.再读RSS标准 既然需要自己实现一个RSS解析器,那自然需要仔细的读一读RSS的标准文档.在网上随便找了两份,一份英文一份中文: http:// ...
- java中的throw与throws的区别
什么时运行时异常?什么是非运行时异常? 通俗的讲: 运行时异常:就是编译通过,运行时就崩了,比如数组越界. 非运行时异常:就是编译不通过,这时就得必须去处理了.不然就没法运行了. 全面的讲: Thro ...
- 安装Impala
1.默认安装好hadoop并且能正常启动(只需hdfs即可)2.安装如下rpm包(需要root权限 注意顺序) bigtop-utils-0.7.0+cdh5.8.2+0-1.cdh5.8.2.p0. ...
- 进击的Python【第二十章】
1.Django请求的生命周期 路由系统 -> 试图函数(获取模板+数据=>渲染) -> 字符串返回给用户 2.路由系统 /index/ -> 函数或类.as_view() / ...
- 什么是Angularjs
AngularJs(后面就简称ng了)是一个用于设计动态web应用的结构框架.首先,它是一个框架,不是类库,是像EXT一样提供一整套方案用于设计web应用.它不仅仅是一个javascript框架,因为 ...
- C# 4.0四大新特性代码示例与解读
摘要:今天我们结合代码实例来具体看一下C#4.0中的四个比较重要的特性. 之前的文章中,我们曾介绍过C#的历史及C# 4.0新增特性,包括:dynamic. 命名和可选参数.动态导入以及协变和逆变等. ...
- Greenplum查询计划分析
这里对查询计划的学习主要是对TPC-H中Query2的分析. 1.Query的查询语句 select s_acctbal, s_name, n_name, p_partkey, p_mfgr, s_a ...
- RPC原理及RPC实例分析
在学校期间大家都写过不少程序,比如写个hello world服务类,然后本地调用下,如下所示.这些程序的特点是服务消费方和服务提供方是本地调用关系. 1 2 3 4 5 6 public class ...