您的位置:首页 > 运维架构 > Linux

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来定义, 也提供了几种语言的接口, 看起来不错。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: