elasticsearch分片
索引其实只是一个用来指向一个或多个分片shard的逻辑命名空间,文档是保存在索引的分片中,然后在分片中被索引,分配到集群中的节点上
分片又分为主分片和复制分片,复制分片是主分片的一个副本,可以防止硬件故障导致的数据丢失,当索引创建好的时候主分片的数量就已经确认好了,而复制分片可以随时调整
如
1 | { |
elasticsearch是高可用且可扩展的,可以通过增加节点来增加可靠性,一个节点就是一个elasticsearch实例,一个集群由一个或多个节点组成,具有相同的cluster.name
,当加入新节点或删除一个节点时,集群会感知到并平衡数据。集群中一个节点会被选举为主节点master,来管理集群的一些变更,主节点不参与文档的变更和搜索
主节点(master):维护集群信息,如果不作为数据节点的话,不会参与到搜索和索引流程的处理,只会去处理集群内节点的变更、索引的变更等,整个集群中只会有一个master节点
1 | node.master: true |
数据节点(data):存储索引数据,同时对外提供索引服务,对CPU、内存、IO等资源要求比较高
1 | node.master: false |
客户端节点(client):既不会成为主节点,也不会成为数据节点,作用是在搜索索引的时候,作为协调节点,对搜索进行负载均衡。如来了一个搜索请求,该节点会将该请求路由到各个数据节点,进行搜索,最终将搜索结果合并,一般在总节点数小于100时,不需要客户端节点
1 | node.master: false |
主分片:一个主分片就是一个完全独立的Lucene索引,一个节点可以拥有多个主分片,针对es请求创建索引时,该请求会将一个完整的数据切分为几个分片,分别交给相应的切片机器去处理。分片的作用是为了扩展,可以进行横向扩展和纵向扩展,默认5个,设定之后不可更改
副本分片:一个主分片可以设置0-n个副本分片,设定之后还可以调整,作用是进行数据冗余和提供搜索
elasticsearch提供了一套集群监控的api,以_cluster开头
需要添加jsp解析器依赖
1 | <!-- jsp --> |
配置资源目录
1 | <!-- build标签中 --> |
注册视图解析器,前缀后缀
1 | spring: |
BeanDefinition是用来描述一个Bean实例的,包括属性值、构造方法
1 | public interface BeanDefinition extends AttributeAccessor, BeanMetadataElement { |
AbstractBeanDefinition是一个抽象类,定义了BeanDefinition中对应的get/set方法的属性
1 | public abstract class AbstractBeanDefinition extends BeanMetadataAttributeAccessor |
对应了一般的元素标签
1 | public class RootBeanDefinition extends AbstractBeanDefinition |
可以让子BeanDefinition定义拥有从父BeanDefinition那里继承配置的能力
1 | public class ChildBeanDefinition extends AbstractBeanDefinition |
可以动态设置父Bean,同时兼具了RootBeanDefinition和ChildBeanDefinition的功能
1 | public class GenericBeanDefinition extends AbstractBeanDefinition |
接口,表示注解类型的BeanDefinition,拥有获取元数据和方法元数据的能力
1 | public interface AnnotatedBeanDefinition extends BeanDefinition |
使用了@Configuration注解的配置类会被解析为AnnotatedGenericBeanDefinition
1 | public class AnnotatedGenericBeanDefinition extends GenericBeanDefinition implements AnnotatedBeanDefinition |