前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >ElasticSearch基础分布式架构讲解

ElasticSearch基础分布式架构讲解

作者头像
Java高级架构
发布于 2019-03-06 09:21:44
发布于 2019-03-06 09:21:44
7110
举报
文章被收录于专栏:JAVA高级架构JAVA高级架构

1 Elasticsearch对复杂分布式机制的透明隐藏特性

Elasticsearch是一台分布式系统,之所以分布式,是为了应对大数据量,他把整个分布式系统的一些复杂的东西隐藏起来,我们不用去关系他们,直接可以使用es。

隐藏的特性或机制:

1.1 分片机制

之前我们随便可以将document数据插入到es集群中,我们有没有care过数据是如何进行分片的,就是说document存放到哪一个shard中的。

1.2 Cluster discover 集群发现机制

比如说我们再单台服务器上面运行一个es节点,这个es节点的health状态是yellow,这个我们是知道的,当我们再启动一个es进程,最为一个节点的时候,这个进程会自动发现集群,并且自动加入到集群中,还接收了部分数据,replica shard 数据。

1.3 shard负载均衡

假设现在有3个es节点,25个shard要分配,es会自动进行均匀的分配,以保持每个节点的均衡的读写负载请求。

还有 shard副本, 请求路由,集群扩容, shard重分配等

2 Elasticsearch的垂直扩容与水平扩容

假设现在有6台服务器,每台上面可以存储1T的数据,现在数据量增加到8T,有两种扩容方案:

2.1 垂直扩容

购置更加强大的服务器,比如将其中的两台服务器换成可以存储2T数据的服务器,这个时候4 + 2*2 = 8T

缺点:高配置的服务器成本非常高。

2.2 水平扩容

购置两台1T的服务器,直接添加到集群中。

业界比较采用,很多普通的服务器组织在一起,可以构成强大的计算和存储能力。

3 增加或减少节点时的数据rebalance

比如上面前5个节点,每一个节点上有一个shard,但是第六个节点有2个shard,这个时候,最后一个节点同其他节点是不平衡的,他的存储和请求的负载比较高的,这个时候,集群中新增一个节点,第六个节点会分配一个shard到新节点上,实现rebalance。

4 Master节点

在集群中,有一个master节点,管理集群的元数据,比如索引的元数据,节点的增加和删除,维护节点的元数据,默认情况下,会自动选择一个节点作为master节点,但是master节点不承载所有的请求,所以说master节点不会是一个单点瓶颈。只是做一些轻量级的事情。

5节点平等的分布式架构

5.1 节点平等

每一个节点都能接收所有的请求

5.2 自动请求路由

每一个节点接收到请求之后都能够把这个请求路由到有相关数据的其他节点上去

5.3 相应收集

最原始接收的节点负责从其他节点采集相应的数据,然后把汇总的数据返回到客户端

当然现在只是一些基础的概念解释,后面我们还会继续深入的结合案例升入的讲解和学习,请关注

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-01-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JAVA高级架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
SpringBoot图文教程17—上手就会 RestTemplate 使用指南「Get Post」「设置请求头」
问个问题:通过Java代码怎么发送Http请求,请求另一个Java程序的Controller方法呢?
鹿老师的Java笔记
2020/03/30
3.5K0
重学springboot系列番外篇之RestTemplate
RestTemplate是执行HTTP请求的同步阻塞式的客户端,它在HTTP客户端库(例如JDK HttpURLConnection,Apache HttpComponents,okHttp等)基础封装了更加简单易用的模板方法API。也就是说RestTemplate是一个封装,底层的实现还是java应用开发中常用的一些HTTP客户端。但是相对于直接使用底层的HTTP客户端库,它的操作更加方便、快捷,能很大程度上提升我们的开发效率。
大忽悠爱学习
2021/12/15
4.8K0
重学springboot系列番外篇之RestTemplate
Spring3 RestTemplate
RestTemplate是执行HTTP请求的同步阻塞式的客户端,它在HTTP客户端库(例如JDK HttpURLConnection,Apache HttpComponents,okHttp等)基础封装了更加简单易用的模板方法API。也就是说RestTemplate是一个封装,底层的实现还是java应用开发中常用的一些HTTP客户端。但是相对于直接使用底层的HTTP客户端库,它的操作更加方便、快捷,能很大程度上提升我们的开发效率。
HLee
2021/04/25
3.3K0
Spring3 RestTemplate
一看就会的Spring的resetTemplate的使用方法
作为一名Java开发者,我们怎么都绕不开调用外部接口的场景,调用的方式要么是通过Http协议来调用,要么是通过RPC协议来调用,通过Http协议调用的话我们就需要用到Http的Api。比较常用的有Apache的HttpClient和原生的HttpURLConnection。这些Api都比较好用,但是我们今天要介绍一种更加好用API,Spring自带的RestTemplate,能力更强,使用更方便。
码农飞哥
2021/08/18
1.8K0
精讲RestTemplate第4篇-POST请求方法使用详解
在上一节为大家介绍了RestTemplate的GET请求的两个方法:getForObject()和getForEntity()。其实POST请求方法和GET请求方法上大同小异,RestTemplate的POST请求也包含两个主要方法:
字母哥博客
2020/09/23
12.7K0
精讲RestTemplate第4篇-POST请求方法使用详解
软件测试|Spring boot 之 RestTemplate
传统情况下在java代码里访问restful服务,一般使用Apache的HttpClient。不过此种方法使用起来太过繁琐。Spring提供了一种简单便捷的模板类来进行操作,这就是RestTemplate。
霍格沃兹测试开发Muller老师
2023/01/10
3920
使用Spring RestTemplate访问Rest服务
  上面这段是RestTemplate类中的简单介绍,RestTemplate是Spring3.0后开始提供的用于访问 Rest 服务的轻量级客户端,相较于传统的HttpURLConnection、Apache HttpClient、OkHttp等框架,RestTemplate大大简化了发起HTTP请求以及处理响应的过程。本文关注RestTemplate是如何使用的,暂不涉及内部的实现原理。
happyJared
2018/09/20
1.7K0
使用Spring RestTemplate访问Rest服务
Spring之RestTemplate使用小结一
作为一个Java后端,需要通过HTTP请求其他的网络资源可以说是一个比较常见的case了;一般怎么做呢?
一灰灰blog
2018/08/13
6.5K0
Spring之RestTemplate使用小结一
Springboot — 用更优雅的方式发HTTP请求(RestTemplate详解)
RestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。
Java_老男孩
2019/12/02
11.5K1
Spring RestTemplate介绍
  上篇文件介绍Eureka服务的文章中,我们介绍到consumer从Eureka中通过LoadBalancerClient获取到服务端地址信息后通过RestTemplate来远程调用服务的场景,本文来具体介绍下RestTemplate的使用
用户4919348
2019/05/30
1.7K0
手撸了一个网络请求工具类,开发速度迅速提升了300%
在上一篇文章中,我们详细的介绍了RestTemplate工具类的用法,相比直接使用Apache的HttpClient进行网络传输,采用RestTemplate开发代码确实简化了很多,甚至可以做到傻瓜式操作,但是基于当前的团队人员开发习惯,我们可不可以继续基于RestTemplate再做一层封装呢?以便于操作Http网络请求,更加简单、便捷!
Java极客技术
2022/12/04
8350
Spring RestTemplate中几种常见的请求方式
在Spring Cloud中服务的发现与消费一文中,当我们从服务消费端去调用服务提供者的服务的时候,使用了一个很好用的对象,叫做RestTemplate,当时我们只使用了RestTemplate中最简单的一个功能getForEntity发起了一个get请求去调用服务端的数据,同时,我们还通过配置@LoadBalanced注解开启客户端负载均衡,RestTemplate的功能不可谓不强大,那么今天我们就来详细的看一下RestTemplate中几种常见请求方法的使用。---- ---- 本文主要从以下四个方面来
江南一点雨
2018/04/02
2.8K0
Spring RestTemplate中几种常见的请求方式
Spring RestTemplate中几种常见的请求方式
当我们从服务消费端去调用服务提供者的服务的时候,使用了一个很好用的对象,叫做RestTemplate,当时我们只使用了RestTemplate中最简单的一个功能getForEntity发起了一个get请求去调用服务端的数据,同时,我们还通过配置@LoadBalanced注解开启客户端负载均衡,RestTemplate的功能不可谓不强大,那么今天我们就来详细的看一下RestTemplate中几种常见请求方法的使用。
田维常
2019/07/16
3.5K0
Spring RestTemplate中几种常见的请求方式
RestTemplate 用法详解「建议收藏」
上篇文章带大家学习了一下基本的微服务环境搭建,由 provider 提供服务, consumer 通过 DiscoveryClient 先去 eureka 上获取 provider 的服务的地址,获取到地址之后再去调用相关的服务。在服务的调用过程中,使用到了一个工具,叫做 RestTemplate,RestTemplate 是由 Spring 提供的一个 HTTP 请求工具。在上文的案例中,开发者也可以不使用 RestTemplate ,使用 Java 自带的 HttpUrlConnection 或者经典的网络访问框架 HttpClient 也可以完成上文的案例,只是在 Spring 项目中,使用 RestTemplate 显然更方便一些。在传统的项目架构中,因为不涉及到服务之间的调用,大家对 RestTemplate 的使用可能比较少,因此,本文我们就先来带领大家来学习下 RestTemplate 的各种不同用法,只有掌握了这些用法,才能在微服务调用中随心所欲地发送请求。
全栈程序员站长
2022/11/01
3.7K0
手把手讲解Spring中的Http请求神器RestTemplate
Java 中关于 Http 请求的工具实际上非常多,自带的 HttpUrlConnection,古老的 HttpClient,后起之秀 OkHttp 等,除了这些之外,还有一个好用的工具--RestTemplate,这是 Spring 中就开始提供的 Http 请求工具,不过很多小伙伴们可能是因为 Spring Cloud 才听说它。今天我们就来聊一聊这个 RestTemplate。
江南一点雨
2020/02/21
2.8K0
手把手讲解Spring中的Http请求神器RestTemplate
重学SpringBoot3-RestTemplate配置与使用详解
RestTemplate 是 Spring 框架提供的一个用于发送 HTTP 请求的同步客户端工具类。在 SpringBoot 3.x 版本中,我们依然可以使用 RestTemplate 来进行 REST API 的调用。本文将详细介绍如何在 SpringBoot 3 项目中配置和使用 RestTemplate。
CoderJia
2024/12/02
1.2K0
重学SpringBoot3-RestTemplate配置与使用详解
玩转Spring Boot之RestTemplate的使用
在java代码里想要进行restful web client服务,一般使用Apache的HttpClient。不过此种方法使用起来太过繁琐。Spring Boot提供了一种简单便捷的内置模板类来进行操作,这就是RestTemplate。
闫同学
2022/10/31
6630
使用 RestTemplate 进行第三方Rest服务调用
RestTemplate 是 Spring 提供的一个调用 Restful 服务的抽象层,它简化的同 Restful 服务的通信方式,隐藏了不必要的一些细节,让我们更加优雅地在应用中调用 Restful 服务 。但是在 Spring 5.0 以后RestTemplate处于维护模式,不再进行新特性的开发,仅仅进行一些日常维护。Spring 建议我们使用同时支持同步、异步和 Stream 的另一个 API —— WebClient 。但是在 Spring MVC 下目前我们还没有更好的选择。
码农小胖哥
2020/04/17
1.5K0
使用 RestTemplate 进行第三方Rest服务调用
详解 RestTemplate 操作
作为开发人员,我们经常关注于构建伟大的软件来解决业务问题。数据只是软件完成工作时  要处理的原材料。但是如果你问一下业务人员,数据和软件谁更重要的话,他们很可能会选择  数据。数据是许多业务的生命之血。软件通常是可以替换的,但是多年积累的数据是永远不能  替换的。
业余草
2019/01/21
3.1K0
详解 RestTemplate 操作
真不是我吹,Spring里这款牛逼的网络工具库我估计你都没用过!
传统情况下,在服务端代码里访问 http 服务时,我们一般会使用 JDK 的 HttpURLConnection 或者 Apache 的 HttpClient,不过这种方法使用起来太过繁琐,而且 api 使用起来非常的复杂,还得操心资源回收。
Java极客技术
2022/12/04
1.5K0
真不是我吹,Spring里这款牛逼的网络工具库我估计你都没用过!
推荐阅读
相关推荐
SpringBoot图文教程17—上手就会 RestTemplate 使用指南「Get Post」「设置请求头」
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档