架构成长之路:分布式系统如何设计,看看Elasticsearch是怎么做的
副标题[/!--empirenews.page--]
分布式系统类型多,涉及面非常广,不同类型的系统有不同的特点,批量计算和实时计算就差别非常大。这篇文章中,重点会讨论下分布式数据系统的设计,比如分布式存储系统,分布式搜索系统,分布式分析系统等。 我们先来简单看下Elasticsearch的架构。 Elasticsearch 集群架构 Elasticsearch是一个非常著名的开源搜索和分析系统,目前被广泛应用于互联网多种领域中,尤其是以下三个领域特别突出。一是搜索领域,相对于solr,真正的后起之秀,成为很多搜索系统的不二之选。二是Json文档数据库,相对于MongoDB,读写性能更佳,而且支持更丰富的地理位置查询以及数字、文本的混合查询等。三是时序数据分析处理,目前是日志处理、监控数据的存储、分析和可视化方面做得非常好,可以说是该领域的引领者了。 Elasticsearch的详细介绍可以到官网查看。我们先来看一下Elasticsearch中几个关键概念:
用图形表示出来可能是这样子的: ![]()
Index流程 建索引(Index)的时候,一个Doc先是经过路由规则定位到主Shard,发送这个doc到主Shard上建索引,成功后再发送这个Doc到这个Shard的副本上建索引,等副本上建索引成功后才返回成功。 在这种架构中,索引数据全部位于Shard中,主Shard和副本Shard各存储一份。当某个副本Shard或者主Shard丢失(比如机器宕机,网络中断等)时,需要将丢失的Shard在其他Node中恢复回来,这时候就需要从其他副本(Replica)全量拷贝这个Shard的所有数据到新Node上构造新Shard。这个拷贝过程需要一段时间,这段时间内只能由剩余主副本来承载流量,在恢复完成之前,整个系统会处于一个比较危险的状态,直到failover结束。 这里就体现了副本(Replica)存在的一个理由,避免数据丢失,提高数据可靠性。副本(Replica)存在的另一个理由是读请求量很大的时候,一个Node无法承载所有流量,这个时候就需要一个副本来分流查询压力,目的就是扩展查询能力。 角色部署方式 接下来再看看角色分工的两种不同方式: ![]() Elasticsearch支持上述两种方式: 1.混合部署(左图)
2.分层部署(右图):
上面介绍了Elasticsearch的部署层架构,不同的部署方式适合不同场景,需要根据自己的需求选择适合的方式。 Elasticsearch 数据层架构 接下来我们看看当前Elasticsearch的数据层架构。 数据存储 (编辑:长春站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 用于QA测试的Windows桌面(XP,Vista或Win7)EC2 AMI
- Win11更新包体积暴减 40% 运用时段等功能将默认打开
- windows-server-2008 – Windows 2008:WinSXS目录不受控制
- windows-cluster – 如何使群集感知的Windows服务具有高可用
- Windows 11出世UWP却遭遇弃用!Windows 软件还会翻新吗
- 身为Java程序员,这些开源工具你怎能不学会?
- windows-7 – 如何通过GPO禁用Windows 7中的Tcp / Ip设置?
- windows-server-2008 – 数字字符串类型的AD自定义属性在更
- 电脑常见事故排除
- 使用Windows远程桌面工具来远程连接控制Ubuntu系统