linux下如何自动检测并重新启动一个死掉的进程,然后再把它杀死
2014-08-31 02:17
495 查看
今天粗略地看了Apache Avro的资料, 这是一种类似于Thrift和ProtocolBuffer的数据序列化工具,看起来不错。主要特点是:有schema定义以及动态类型。
schema定义的好处是能减少数据大小,如果没有schema定义,那么协议处理器不可能知道下一个遇到的类型是什么,只好通过每个数据的头部知道,这样头部的大小会占比较可观的比例, 比如每个整数四个字节,就要有一个字节说明这个数据的类型, 利用率只能有80%. 典型这样的协议有AMF, BSON, Erlang Node protocol, python语言的pickle, mashal等; 有了schema 定义,则处理器在数据收到的时候就知道数据的格式,从CORBA到Thrift到PB还有诸多游戏网络引擎采用这个模式。一般先用预处理器将schema/spec/protocol翻译成实现语言(c/c++/java等)的桩(stub)这样对于开发和部署都存在不方便, 而对于动态语言, 传统的方式和处理静态语言没有什么区别. 实际上以动态语言的脚本生成能力,完全不需要提前生成桩, 完全可以当schema改变的时候编译一遍(eval或者compile) 以后就直接使用编译生成的脚本,一切都可以由机制自动完成, 对于应用开发者来说是透明的,这样应用开发何部署更容易一些。
记得大约4,5年前,工作内容是为一个网络游戏的引擎VCE写动态语言的接口,我曾经用过这种动态编译的方法,对于ruby/python/perl语言的程序,可以自动生成处理器脚本,接口的相应变化都会立即反应到脚本生成。但是超出了当时的需求,最终没有发布。
而Avro的模式,是在客户端服务器连接的开始就互换各种schema信息,并生成相应的处理器。schema用方便快捷的JSON来定义, 也提供了几种语言的接口, 看起来不错。
schema定义的好处是能减少数据大小,如果没有schema定义,那么协议处理器不可能知道下一个遇到的类型是什么,只好通过每个数据的头部知道,这样头部的大小会占比较可观的比例, 比如每个整数四个字节,就要有一个字节说明这个数据的类型, 利用率只能有80%. 典型这样的协议有AMF, BSON, Erlang Node protocol, python语言的pickle, mashal等; 有了schema 定义,则处理器在数据收到的时候就知道数据的格式,从CORBA到Thrift到PB还有诸多游戏网络引擎采用这个模式。一般先用预处理器将schema/spec/protocol翻译成实现语言(c/c++/java等)的桩(stub)这样对于开发和部署都存在不方便, 而对于动态语言, 传统的方式和处理静态语言没有什么区别. 实际上以动态语言的脚本生成能力,完全不需要提前生成桩, 完全可以当schema改变的时候编译一遍(eval或者compile) 以后就直接使用编译生成的脚本,一切都可以由机制自动完成, 对于应用开发者来说是透明的,这样应用开发何部署更容易一些。
记得大约4,5年前,工作内容是为一个网络游戏的引擎VCE写动态语言的接口,我曾经用过这种动态编译的方法,对于ruby/python/perl语言的程序,可以自动生成处理器脚本,接口的相应变化都会立即反应到脚本生成。但是超出了当时的需求,最终没有发布。
而Avro的模式,是在客户端服务器连接的开始就互换各种schema信息,并生成相应的处理器。schema用方便快捷的JSON来定义, 也提供了几种语言的接口, 看起来不错。
相关文章推荐
- linux下如何自动检测并重新启动一个死掉的进程,然后再把它杀死:)(shell脚本实现)
- linux下如何自动检测并重新启动一个死掉的进程(shell脚本实现)
- 如何在LINUX下实现硬件的自动检测(下)
- 在linux 如何写一个自动用ssh登录重启Apache的脚本
- Linux:如何查看一个进程的详细的启动时间
- Linux:如何查看一个进程的详细的启动时间
- 自动杀死UNIX僵死的进程 - 红联Linux门户 - 中国领先的Linux技术网站 - 网站导航 - Linux企业应用 - UniX技术文章
- Linux:如何查看一个进程的详细的启动时间
- Unix/Linux如何创建一个后台进程(run background process)
- 我在delphi中用shellExecute启动了一个程序(ftp);然后想做一个等待,只到ftp进程结束,再继续下面的操作,请问如何监控这个进程是否已结束?
- Linux如何查找杀死僵死进程
- linux 进程自动重启检测脚本
- 朋友的一个问题:Linux开机如何自动运行自己编写好的shell脚本
- linux所有硬盘给了一个分区了,然后要从这个分区中拿出部分空间,创建一个新的分区。如何做到?
- 如何在linux系统自动mount一个NTFS分区只读方式挂载
- Linux 如何查看一个进程的堆栈
- 如何在LINUX下实现硬件的自动检测
- Linux如何查找杀死僵死进程
- 如何自动杀死UNIX僵死的进程