> ## Content Index
> Fetch the complete content index at: https://blog.hacking.pub/llms.txt
> Use this file to discover other available public pages before exploring further.

# nsq 支持分布式事务（四）
- URL: https://blog.hacking.pub/2019/08/28/nsq-zhi-chi-fen-bu-shi-shi-wu-si/
- Published: 2019-08-28T17:14:32.000Z
- Updated: 2019-08-28T17:14:53.000Z
- Author: chainhelen
- Tags: nsq, nsqio, go-nsq, 消息队列, 分布式, 事务

也许我就是个跑偏的人，这个系列越写越偏

#### 基准测试

本来是跟原版里面`./bench.sh`做一些基准测试，在我这台垃圾电脑上面

###### 写性能

最后发现如果没有`SyncTimout`（就是超时落盘）这个，`dtnsq`写竟然`40w/s`，而`nsq`才`18w/s~20w/s`

没办法加上了默认了`SyncTimout(2s)`，但是`dtnsq`也是`30w/s`

大家在落盘之前都是内存操作，如果有性能差异，我猜测是 `channel`导致的

###### 读性能

读性能没法比较，因为当前`dtnsq`根本没有做`push`，只是定时拉取

###### 修改

我需要将一些代码细节优化（不是为了写性能），稍微向生产方向靠近再来进一步测试

##### 优化定时器

之前的消费者的`pull`定时器是从`nsqd`里面触发的，很容易将整个``` nsqd``lock ```住

这里面改成每一个`读backend`自行维护一个定时器

##### 控制反转

之前写代码的时候，有考虑一些控制反转，但是还需要细致下去，主要是为了做单元测试

不然现在改几行根本不敢确定有没有影响之前的功能

(未完待续)