一直以来比较关心高性能通讯模块的设计,最近看到两篇好文,由此想到曾经参与的几个通讯模块的设计和实现,跟大家分享思路。
首先来分享好文:
http://agapple.iteye.com/blog/859052
这一篇讲得是google protobuf协议和其他序列化的性能测试。朋友们看了一定会砰然心动,protobuf如此之高的通讯效率当然是求之不得。新浪微博IM各模块之间也采用protobuf作为通讯协议,TimYang写过文章比较google protobuf和facebook Thrift之间的性能。也证实了protobuf还是好东东。加之MINA可以很好的和此类通讯协议结合,无非是编解码嘛,一行伪代码搞定:
mySocketAcceptor.getFilterChain().addFirst("protobuf", new ProtocolCodecFilter(ProtobufCodecFactory.newInstance(MyProBufPacket.getDefaultInstance())));
http://www.wuzesheng.com/?p=1258
第二篇是讲解为什么protobuf有如此效率,大家慢慢品味吧。
优点:
使用protobuf二进制协议高效的传输,在通讯压力大得场合非常合适。
缺点:
私有协议,如果是基于公共协议的中间件。想推广使用,有一定阻力。
还是那句话:场景和应用决定构架,技术只是手段,客户的需求才是根本。
引用TimYang的话作为结尾
一个构架师的经验主要在于经历了多少场景,即解决了特定场景下的要求的经验
以及试错过程中积累的经验和对各种主流技术的掌握
分享到:
相关推荐
Redis+protobuf开发的即时通讯服务器.zipRedis+protobuf开发的即时通讯服务器.zipRedis+protobuf开发的即时通讯服务器.zipRedis+protobuf开发的即时通讯服务器.zipRedis+protobuf开发的即时通讯服务器.zipRedis+...
在"DesignModel-master"项目中,可能包含了一些示例,展示了如何在C++中结合设计模式和protobuf进行开发。例如,可能会有一个工厂模式的例子,用于创建protobuf消息的不同类型;或者使用观察者模式来处理protobuf...
Protocol Buffers的设计目标是提供一种更高效、更灵活的数据序列化方法,相比XML、JSON等格式,它在数据传输和存储时能占用更小的体积,且解析速度更快。 在protobuf的使用过程中,主要包括以下步骤: 1. 定义数据...
在标签"protobuf:compile protobuf"中,"protobuf"是指protobuf库本身,而"compile protobuf"是指执行protobuf编译器`protoc`来生成目标语言的代码。这个过程通常分为以下几个步骤: 1. **定义消息类型**:在.proto...
3. **API设计**: 在RESTful API中,protobuf作为消息格式可以提供高效的序列化和反序列化。 **六、protobuf工具链** 1. **protoc编译器**: 主要用于将.proto文件转换为目标语言的源代码。 2. **protobuf库**: 提供...
protobuf是Protocol Buffers的缩写,它是一种高效的数据序列化协议,由Google开发并开源。Protocol Buffers允许开发者定义数据结构的模式(schema),然后生成相应的语言绑定(如C++、Java、Python),使得应用程序...
google protobuf 最新源代码google protobuf 最新源代码google protobuf 最新源代码google protobuf 最新源代码google protobuf 最新源代码google protobuf 最新源代码google protobuf 最新源代码google protobuf ...
protobuf-lua是一个专门为Lua语言设计的Google Protocol Buffers(protobuf)实现。Protocol Buffers是一种高效的数据序列化协议,由Google开发,用于结构化数据的序列化和反序列化。它与XML、JSON等格式相比,更小...
protobufDemo protobuf例程protobufDemo protobuf例程protobufDemo protobuf例程protobufDemo protobuf例程protobufDemo protobuf例程protobufDemo protobuf例程protobufDemo protobuf例程
这时,`nanopb`应运而生,它是protobuf的一个轻量级实现,专为嵌入式系统设计。 `nanopb`的核心特点在于其小体积、低内存占用以及无需运行时库,这使得它成为STM32、ARM等微控制器平台的理想选择。在基于嵌入式...
总的来说,protobuf3.20.1-windows64是Google Protocol Buffers的一个发行版,专为Windows 64位系统设计,是开发高效、跨平台应用程序的重要工具,尤其在处理大量结构化数据的场景下,它的优势尤为明显。无论是在...
**protobuf-3.5-src** 是一个包含 Google Protocol Buffers(简称protobuf)版本3.5.0源代码的压缩包。Protocol Buffers 是一种高效、灵活且自动化的数据序列化机制,由 Google 开发,广泛应用于分布式系统和跨平台...
protobuf是Protocol Buffers的简称,它是Google开发的一种数据序列化协议,用于结构化数据的序列化,类似于XML、JSON,但更小、更快、更简单。protobuf 3.11版本是一个稳定且广泛使用的版本,提供了许多改进和新特性...
Python的protobuf库提供了`protobuf`模块,其中包含`Message`类和其他辅助函数,用于在Python程序中操作这些序列化的数据。 在使用protobuf与Python时,以下是一些关键知识点: 1. **.proto文件**:这是定义...
4. **doc目录**:包含Protobuf的文档,包括API参考、教程和设计文档,对于理解和使用Protobuf非常有帮助。 5. **Makefile和configure脚本**:用于构建和安装protobuf库及工具,这些脚本在Unix-like系统上使用,而在...
5. **模块化设计**:6.8.8版本可能采用了模块化设计,便于开发者按需加载和组合protobuf定义,降低内存占用。 6. **兼容性**:protobuf.js 6.8.8 应该保持与较新版本的protobuf兼容,同时可能修复了之前版本的一些...
**protobuf-master** 是一个包含 Protocol Buffers(简称 Protobuf)源代码和资源的项目,主要服务于 Android、Java 开发者。Protocol Buffers 是 Google 推出的一种数据序列化协议,它提供了一种高效、灵活且自动化...
3. **版本兼容**:protobuf的设计考虑了版本升级的问题。即使新旧版本的protobuf数据结构发生变化,也能保证向前和向后的兼容性,使得系统升级更加平滑。 4. **API生成**:通过.proto文件,protobuf编译器可以自动...
protobuf2.6.1是一个流行的开源数据序列化协议,由Google开发,用于高效地存储和传输结构化数据。Protocol Buffers(简称protobuf)是比XML、JSON等格式更小巧、更快、更简单的一种序列化机制。它允许你定义数据结构...
protobuf,全称Protocol Buffers,是由Google开发的一种数据序列化协议,它允许开发者定义数据结构,然后生成能够读写这些结构的代码,适用于多种编程语言,包括C++, Java, Python等。protobuf-2.5.0是该协议的一个...