11 2017 档案
msgpack库的神奇用法
摘要:一般来说,我们接收到消息,然后通过消息队列发送消息给worker的时候,会有些额外的字段,这些字段不属于实际的消息,我们想把实际的消息和发给worker的消息分开定义。这时候我们会把worker消息中一个字段定义为interface{}或者object,这个字段表示任意的实际消息。 一切看起来很完美 阅读全文
posted @ 2017-11-30 16:05 dearplain 阅读(9712) 评论(0) 推荐(0)
消息推送与同步协议的思考
摘要:同步状态和消息推送,几乎是每个app或者设备都需要的,设计一个省流量,能简化两端逻辑,能应对业务增长的框架尤为重要。 我认为,以下方法不够好: 1.每一个状态都设计一个消息,导致每增加一个状态,服务端都需要改动。 2.每次上线后都请求一次所有类型的最新的消息。 3.最新的消息只推送一次就完事。 第一 阅读全文
posted @ 2017-11-25 22:25 dearplain 阅读(1103) 评论(0) 推荐(0)
cassandra的gc调优
摘要:我们用的是cassandra3.7官方的docker镜像,在生产环境发现有一个小时一次停顿的现象。我猜测是java gc的原因,于是看了cassandra的gc日志,果然发现有每小时长达300ms-2s的停顿。 经过研究发现是netty的原因,netty用了direct memory,因为是通过mm 阅读全文
posted @ 2017-11-19 11:33 dearplain 阅读(1625) 评论(0) 推荐(0)
tcp链接断开的探测
摘要:有资料说,read、write都可以探测tcp的断开,但都不是实时的。 但是实际在某些设备上测试发现,即使开一个线程每隔一小段时间发一次心跳包(write),write可能总是成功的,write也不能探测连接已经断开,而且这个状态持续很久。 所以,如果需要保持和设备的连接,心跳包需要回复,如果两秒内 阅读全文
posted @ 2017-11-12 11:51 dearplain 阅读(297) 评论(0) 推荐(0)