我们像这样使用抄写员:
Web 服务器(SA) ---> 本地 Scribe 服务器(SB)
- Web 服务器(SA)和本地 Scribe 服务器(SB)在一台机器上;
- Web 服务器只是将每个日志发送到 scribe 最多 3 次,重试 2 次后我们就丢弃它们。
- Local Scribe Server 使用缓冲存储,primary 使用网络存储将日志发送到下一个 Collector Scribe BJ,然后将 log 写入本地磁盘,我们设置 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 primary 使用网络存储将日志发送到下一个 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中描述)”可以控制缓冲存储scribe何时可以切换主存储存储到二级存储。当 max_queue_length 无用时,如何控制缓冲存储将主存储切换到辅助存储?
问题3:当Local Scribe Server(SB)二级存储的写入速度大于Web server(SA)的输入速度时,无论如何Local Scribe Server(SB)不会丢失数据?
问题 4:我还在 inder.pall 提到的 googlegroup 中找到了一张图表。Here is the link: 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 返回给其上游抄写员。这时候它的upriver scribe 会把消息备份到secondary 吗?
问题 5:如问题 4 所述,当 vpn(BJ--SH) 非常繁忙且延迟非常大,但隧道可用且收集器抄写员 SH(SD) 不返回 TRY_LATER 并且显然收集器抄写员 BJ( SC) 的输入速度大于其进入隧道的输出速度,所以 Collector Scribe BJ(SC) 的 mem 会不断增加而不使用二级存储?