设为首页 收藏本站
查看: 754|回复: 0

[经验分享] apache avro 简介

[复制链接]
累计签到:2 天
连续签到:2 天
发表于 2016-12-30 07:26:28 | 显示全部楼层 |阅读模式
  1 rpc简介:
  a) 远程过程调用,本质是不同机器之间socket通讯
  b) 具体实现产品:rmi   xml-rpc   avro-rpc 等,
  前两者使用时,实现比较复杂,并且相同数据量下序列化后的数量较大 影响机器之间的传输速度
  c) rpc数据序列化在Hadoop圈子中比较出名的两个工具:
   apache avro和google的protocol buffer 
  前者在Hadoop1中使用到, 后者在Hadoop2中使用到
   此两者都支持多语言,传输数据速率也快,但是前者使用maven能直接生成代码,
  后者生成代码麻烦使用自己工具还需要手工挪动
  
  2 apache avro学习地址:
http://avro.apache.org/docs/current/gettingstartedjava.html
  apache avro是说在rpc通讯时,使用avro这种数据序列化系统方式来实现数据传输
  3 apache avro specification:
  a) avro的规范 ,用于定义好序列化的格式
  b) 写法解释:

user.avsc:   定义avro记录 文件结尾后缀为 .avsc  
{"namespace": "example.avro",  定义包名
"type": "record",             定义类型 类比于Java的 interface class等形式
"name": "User",               定义类名
"fields": [                   定义属性
{"name": "name", "type": "string"},   类比于  String name
{"name": "favorite_number",  "type": ["int", "null"]}, 类比于 数组名favorite_number,数组值["int", "null"]
{"name": "favorite_color", "type": ["string", "null"]} 类比于 数组名favorite_color,数组值["string", "null"]
]
}
  c) 如果定义更复杂格式的,参看: http://avro.apache.org/docs/current/spec.html#schema_primitive
  d) avro序列化数据和java.io.serilized的区别:
avro ---> 顺丰
java.io.serilized  ---> 平邮
  4) 使用MAVEN生成user.avsc文件对应的Java对象:
  a) eclipse内创建maven工程
  b) 在pom.xml内增加 avro依赖和avro build文件:

<dependency>
<groupId>org.apache.avro</groupId>
<artifactId>avro</artifactId>
<version>1.7.7</version>
</dependency>
<dependency>
<groupId>org.apache.avro</groupId>
<artifactId>avro-ipc</artifactId>
<version>1.7.7</version>
</dependency>

<build>
<plugins>
<plugin>
<groupId>org.apache.avro</groupId>
<artifactId>avro-maven-plugin</artifactId>
<version>1.7.7</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>schema</goal> 指定generate-sources生成方式格式参看schema格式
</goals>
<configuration>
<sourceDirectory>${project.basedir}/src/main/avro/</sourceDirectory>
<outputDirectory>${project.basedir}/src/main/java/</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<!-- compiler插件, 设定JDK版本 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<encoding>UTF-8</encoding>
<source>1.6</source>
<target>1.6</target>
<showWarnings>true</showWarnings>
</configuration>
</plugin>
</plugins>
</build>
  c) 创建文件夹,注意是文件夹

src/main/avro/
  将创建的user.avsc拷贝在里面去,保证文件夹内只有这一个文件,这样在生成代码时,
  就会只将此文件生成JavaBean
  这块配置在如下文件中体现到:

<configuration>
<sourceDirectory>${project.basedir}/src/main/avro/</sourceDirectory>
<outputDirectory>${project.basedir}/src/main/java/</outputDirectory>
</configuration>
  e) 工程右键/run as/8Maven generate-sources 生成代码;
  此时在src/main/java/example.avro下生成Java类 User,打开如下:

/**
* Autogenerated by Avro
*
* DO NOT EDIT DIRECTLY
*/
package example.avro;  
@SuppressWarnings("all")
........
  f) 测试如下:

public static void main(String[] args) {
User user = new User("zm",30,"red");
System.out.println(user);
}
{"name": "zm", "favorite_number": 30, "favorite_color": "red"}
  上述案例和介绍参考官网链接: http://avro.apache.org/docs/current/gettingstartedjava.html
  工程代码见附件:

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-321240-1-1.html 上篇帖子: Apache Http Over View 下篇帖子: Apache CXF介绍
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表