hiredis 异步

hiredis

hiredis是redis官方库, 提供了同步与异步的接口. 对于高性能的服务器, 异步的接口给我们很大的发挥空间.

同步还是异步

使用同步还是异步并没有绝对的定论, 我们可以根据一些性能表现确定使用同步或是异步. redis性能非常好, 以至于在插入或是读取单条数据的时候几乎是感觉不到差异的. 可是一旦同时插入大量数据, 同步延迟非常严重, 读取平均长度30的kv, 大约是10万/秒, 如果我们有千万级别的数据, 整个卡顿会上分钟, 而且带宽会被打满, 所以一般大数据的读取, 我们会采用异步的方法.
继续阅读

libevent zmq消息无法响应

前言

服务器使用libevent做事件循环, 然后使用zmq做线程间通讯, libevent监听zmq的消息, 一旦zmq有消息过来, 就会回调到固定的函数。使用zmq需要注意的是, 一旦zmq消息回调, 必须读空整个队列的消息. 否则下次就不会回调。

问题症状

我们使用libevent监听了多个zmq, 同时监听了别的事件(退出事件等). 其中有一个zmq消息非常繁忙, 每秒会产生上万到十万不等的数据. 这种时候会发现libevent再也无法响应其他消息。
继续阅读

mongodb 简单搭建复制集

复制集配置文件参数

|字段|类型|取值|解释|
|:--- |:--- |:--- |:--- |
|id| 整数| 从0开始|编号|
|host| 字符串| 192.168.0.235:9990|IP:Port|
|arbiterOnly|布尔值|trre/false|是否投票结点|
|priority|整数|0-1000|权重, 数字越大, 越能成为主节点, 0表示永远不会成为主节点|
|hidden|布尔值|true/false, 0/1|是否是隐藏结点, priority=0|
|votes|整数|0/1|是否能够投票|
|slaveDelay|整数|x秒(3600)|延迟结点(用来保证数据安全,如果主库删了,从库都会同步删)|
|buildIndexes|布尔值|true/false|是否同步建立索引,priority=0|
继续阅读