Protobuf的optimize_for使用详解

编写好的*.proto协议在编译的时候可以根据自己需要改变optimize_for类型(option optimize_for=**)。

optimize_for有三个选项:

  • SPEED:(默认选项,表示生成的代码运行效率高,但是由此生成的代码编译后会占用更多的空间。使用protobufer提供的反射功能)
  • CODE_SIZE:和SPEED相反,代码运行效率较低,但是由此生成的代码编译后会占用更少的空间,通常用于资源有限的平台,如Mobile。
  • LITE_RUNTIME:生成的代码执行效率高,同时生成代码编译后的所占用的空间也是非常少。这是以牺牲Protocol Buffer提供的反射功能为代价的。因此我们在C++中链接Protocol Buffer库时仅需链接libprotobuf-lite,而非libprotobuf。在Java中仅需包含protobuf-java-2.4.1-lite.jar,而非protobuf-java-2.4.1.jar。

※注:当optimize_for的选项为LITE_RUNTIME时继承自MessageLite类而非Message类,MessageLite接口是Message的父接口,在MessageLite中将缺少Protocol Buffer对反射的支持,而此功能均在Message接口中提供了接口规范,同时又在其实现类GeneratedMessage中给予了最小功能的实现。

NSQ 的安装和配置文件启动

一、安装

NSQ 的安装有多种方式:

  1. 下载官方的二进制包,下载地址(支持Linux和Darwin),最新的版本是0.3.5。
  2. 下载源代码后自己编译,可以安装gpm帮助下载依赖包,详细请看安装指导

主要文件有:

  • nsqadmin(提供web页面供查看信息)
  • nsqd  (接收,传送和发送消息)
  • nsqlookupd  (管理拓扑信息)
  • nsq_pubsub  (this和以下都是工具类)
  • nsq_stat
  • nsq_tail
  • nsq_to_file
  • nsq_to_http
  • nsq_to_nsq
  • to_nsq

二、配置

配置文件百度云盘下载解压后有两个目录,bin和conf目录,关注conf文件夹下面的三个配置文件:

  • nsqd.cfg
  • nsqlookupd.cfg
  • nsqadmin.cfg

命令:**** -config=***.cfg 就可以通过配置文件的方式启动NSQ的相关服务。

如果nsqlookupd有多个服务,nsqd.cfg的配置可以如下修改:

nsqlookupd_tcp_addresses = [

“127.0.0.1:4160”,

“192.168.1.*:4160”,

….

]

下面这种拓扑结构,可以修改配置文件实现。

tumblr_inline_mf8sfr2sp41qj3yp2