【发布时间】:2012-01-15 19:07:09
【问题描述】:
我们像这样使用抄写员:
-
Web 服务器(SA) --->本地 Scribe 服务器(SB)
- Web 服务器 (SA) 和本地 Scribe 服务器 (SB) 在一台机器上;
- Web 服务器只是将每个日志发送到 scribe 最多 3 次,重试 2 次后我们就丢弃它们。
- Local Scribe Server 使用缓冲存储,主使用网络存储将日志发送到下一个 Collector Scribe BJ,辅助将日志写入本地磁盘,我们设置 max_queue_size=1000000000 和 max_queue_length=20000000。李>
-
---->Collector Scribe BJ(SC)----ssh隧道(gzip压缩)---vpn--->Collector Scribe SH(SD)
- 一个 LAN 上的 Collector Scribe BJ(SC) 和 Local Scribe Server(SB)。
- Collector Scribe BJ(SC) 使用多存储,store0 使用缓冲存储,store0 主要使用网络存储将日志发送到下一个 Collector Scribe SH,并且 store0 辅助将日志写入本地磁盘,并且我们设置 max_queue_size=10000000 和 max_queue_length=2000000。
- Collector Scribe BJ(SC) 使用 store0——缓冲存储——主存储网络将日志发送到本地端口,并通过 ssh 隧道将消息从 IDC BJ 发送到 IDC SH。
- 最后,收集器 scribe SH(SD) 使用 std 文件存储将日志写入其磁盘。
这是我的问题。
问题 1: 我在 scribe 源代码中找不到 max_queue_length 选项的用法。而且我还发现 googlegroup 中提到的一些信息 max_queue_length 已被弃用。所以这里使用“max_queue_length=20000000”没有什么效果?
问题 2: 只需选项 max_queue_length “如果队列中的消息数超过此值,缓冲存储将切换到写入辅助存储(在 githup wiki 中描述)”可以控制缓冲存储抄写员何时可以将主存储切换到二级商店。当max_queue_length没用时,如何控制缓冲存储切换主存储到备存储?
问题 3: 当Local Scribe Server(SB)二级存储的写入速度大于Web server(SA)的输入速度时,无论如何Local Scribe Server(SB)不会丢失数据?
问题 4: 我还在 inder.pall 提到的 googlegroup 中找到了一个图表。这里 是链接:http://scribe-server.googlegroups.com/attach/979f9ffbe00f5eb3/Screen+Shot+2011-11-22+at+9.12.32+AM.png?gda=FIJ3I0cAAACFwDSo_bUG96Wo0CVG6AlpKMzYsToU_WRZEGbv_RKdbkT0wWvVm1xmkWqWMWNxOm4bQwFxJw55cVwemAxM-EWmeV4duv6pDMGhhhZdjQlNAw&view=1&part=4 我认为只有当抄写员不可用(不活动和超时)或其队列大小大于 max_queue_size 时,它才会将 TRY_LATER 返回给上游抄写员。这时候它的上游抄写员会把消息备份到二级吗?
问题 5: 如问题 4 所述,当 vpn(BJ--SH) 非常繁忙且延迟非常大,但隧道可用且收集器 scribe SH(SD) 不返回 TRY_LATER 时,显然收集器 Scribe BJ(SC)' s输入速度大于其进入隧道的输出速度,所以Collector Scribe BJ(SC)的mem会不断增加,不使用二级存储?
【问题讨论】:
标签: facebook ssh-tunnel facebook-scribe