架构成长之路:分布式系统如何设计,看看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的数据层架构。 数据存储 (编辑:淮北站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- win10操作系统怎样调出ie浏览器
- 如何通过SSH在远程Linux系统上运行命令
- windows-server-2008 – 如何监控Adaptec / Intel ICH10R R
- Windows 10新版改进:资源管理器可直接访问Linux文件
- windows-server-2008 – Windows Server 2008 R2 RDP登录粘
- 如何查看Windows机器上是否正在使用端口?
- Win10迅速启动
- 如何将加密文件添加到Windows 10上的搜索结果中
- Windows 10上的Windows Update错误0x800f0982
- Windows上有kerberized ssh客户端的任何选项吗?