日志系统之基于Zookeeper的分布式协同设计
最近这段时间在设计和实现日志系统,在整个日志系统系统中Zookeeper的作用非常重要——它用于协调各个分布式组件并提供必要的配置信息和元数据。这篇文章主要分享一下Zookeeper的使用场景。这里主要涉及到Zookeeper在日志系统中的使用,但其实它在我们的消息总线和搜索模块中也同样非常重要。 日志元数据 日志的类型和日志的字段这里我们统称为日志的元数据。我们构建日志系统的目的最终主要是为了:日志搜索,日志分析。这两大块我们很大程度上依赖于——ElasticSearch(关于什么是ElasticSearch,这里就不多做介绍了)。 关于日志字段 日志的字段定义,在ElasticSearch中是一个索引中某个mapping的Schema。ElasticSearch是一个号称Schema Free的分布式全文检索系统。这里需要正确地理解Schema Free,它并不是不需要Schema,也不是强制要求你必须有明确的Schema,有没有都可以做全文检索。但是像聚合、分析等很多高级功能都建立在明确的Schema的基础上。因此,从分析统计的角度看,我们对日志进行明确的字段定义是很有必要的。 ...