scribe 设计的时候,考虑了网络故障、机器故障的问题,而没有考虑事务的支持。如果一个scribe的客户端实例,在发送信息给主机的时候出现了问题,那么它会将该部分信息暂时存到本地磁盘。当该问题解决之后,它会重新该部分信息发送给主机。为了避免在主机启动的时候给主机造成过重的负载,resender会等待一段时候后再去连接,目前这段时间是随机的。当主机的处理能力快被用完的时候,它会返回TRY_LATER, resender 在接到这个返回之后的几分钟之内将不会发出请求。当主机将信息发往nfs系统或者其他的分布式文件系统的时候,也有跟resender类似的机制。当nfs系统或者其他的分布式文件系统宕掉的 时候,主机会把信息写到本地磁盘,知道文件系统恢复正常,然后再把本地磁盘的数据发送远程的文件系统里。信息显然是有顺序的,在上述的过程中,信息的顺序将保持不变。
以下的这些错误,将会导致数据的丢失:
scribe 服务器通过参数-c 指定某个具体的配置文件来启动,当没有-c参数的时候,将使用默认的配置文件路径/usr/local/scribe/scribe.conf. 配置文件最重要的作用就是决定数据应该被发送到哪个“store”。一些“store”能包含其他的“store”,举个例子说,"bucket store"能够包含多个“file store”,并通过某种hash算法将数据分发给他们。
配置文件包括一个全局配置以及每一个“store”相关的配置。全局配置,包括监听的端口,服务每秒处理的数据的最大数。每个“store”的配置文件都包含一个“category”和一个“type”。一个“store”可以有多个“category”,可以有多个“type”。配置文件的其他部分的内容取决于“store type”,可以会包含这样的一些东西,如,日志文件路径、文件大小最大值,启用新日志文件的频率策略,以及主机(resender 要发送数据过去的地址)地址。一个“store”也可以包含其他的“store”,“store”用它的“type”命名。
目前可用的“store”有: