solr的创建分片的方式
(1)大数据量下更高的性能
(2)更好扩展性
(3)更高的可靠性
(4)更简单易用
什么时候应该使用SolrCloud(Shard)呢?
(1)更大的数据量
(2)更大的索引体积
(3)想并行索引和查询
(4)想自定义数据分区
SolrCloud路由的分类
A:显式路由(Composite) => 创建时明确指定shard数目,后期不能添加或者删除shard,单个shard可以split
创建collection方式:首次创建推荐提前在linux上把conf相关配置上传到zk上,然后在solr的admin进行创建, 除此之外,也支持curl和java api动态创建
独有技能:支持shard的split,不支持shard的动态添加和删除
特点:
(1)默认是基于通过hash(docid)来定位归属shard
(2)也支持在主键上加入路由字段进行路由,最多支持2级,查询时加入_route_ 参数,设置路由策略,用例如下:
一级路由例子:
china!1 usa!2
二级路由例子:
china!beijing!1 usa!nework!2
如果路由后,数据分布不均衡可对数据倾斜的路由,进行均衡,例子如下:
china/3!1 按1/8的shard个数,均衡数据,如果shard总数是24个,那么将会有3个shard存储china路由的数据
china!henan/2!1 按1/4的shard个数,均衡数据,如果shard总数是24个,那么将会有6个shard存储china!henan的数据目前固定只有1/8和1/4的比例分配,也就是只支持2,3这样的分配比例
B:隐式路由(Implict)=> 创建时明确指定shard数目,后期可以动态添加或者删除shard,但单个shard不能split
创建collection方式:首次创建推荐提前在linux上把conf相关配置上传到zk上,然后在solr的admin进行创建, 除此之外,也支持curl和java api动态创建。
独有技能:不支持shard的split,支持shard的动态添加和删除
特点:
真正的100%的手工路由,可根据业务规则进行shard设置,除此之外,支持shard的动态添加和删除,路由控制随心所欲,不像MySQL还得依赖中间件才能搞定,查询时加入_route_ 参数,设置路由策略
总结:
文章简单介绍了使用SolrCloud的好处,以及什么时候应该使用和其路由的种类与特点,路由话题在分布式系统中是一个高级技能,它与分而治之,按需所取的思想不谋而合sharding的功能并不是Solr,ElasticSearch独有,任何一个数据库存储系统都可以存在这个概念,在实际的开发应用场景中,需要根据业务一些特定的特点来合理划分维度和路由,使用得当,效率会大大提升,无论是写入还是查询,在考虑设计维度或者路由时,大部分可考虑时间,类别,等级,地区等一些字段,当然具体业务还需要具体分析,不能一概而论。
官网文档:
(1)文档路由
https://cwiki.apache.org/confluence/display/solr/Shards+and+Indexing+Data+in+SolrCloud#ShardsandIndexingDatainSolrCloud-DocumentRouting
(2)Collection API
https://cwiki.apache.org/confluence/display/solr/Collections+API
solr的创建分片的方式的更多相关文章
- Solr入门之SolrServer实例化方式
随着solr版本的不断升级, 差异越来越大, 从以前的 solr1.2 到现在的 solr4.3, 无论是类还是功能都有很大的变换, 为了能及时跟上新版本的步伐, 在此将新版本的使用做一个简单的入门说 ...
- Python学习之路:通过分片的方式修改列表的技巧(拓展知识)
一.为列表添加值 用分片的方式可以在列表的头部和尾部添加值 1.在列表的头部添加值 x = [1, 2, 3] #创建列表x x[:0] = [0] #用分片的方式在列表头部添加值 print(x) ...
- MongoDB 副本集+分片 认证方式搭建
MongoDB 副本集+分片 认证方式搭建 参考资料: https://www.cnblogs.com/ityouknow/p/7344005.htmlhttps://jorwen-fang.itey ...
- Java学习笔记-多线程-创建线程的方式
创建线程 创建线程的方式: 继承java.lang.Thread 实现java.lang.Runnable接口 所有的线程对象都是Thead及其子类的实例 每个线程完成一定的任务,其实就是一段顺序执行 ...
- Wireshark工具创建过滤器的方式
Wireshark工具创建过滤器的方式 [实例1-3]现在要抓取目的或来源地址为192.168.5.9的封包.在图1.5中添加如下所示的条件: tcp dst port 3128 添加后单击Star ...
- Java多线程学习总结--线程概述及创建线程的方式(1)
在Java开发中,多线程是很常用的,用得好的话,可以提高程序的性能. 首先先来看一下线程和进程的区别: 1,一个应用程序就是一个进程,一个进程中有一个或多个线程.一个进程至少要有一个主线程.线程可以看 ...
- JS面向对象编程创建类的方式
js创建类的方式有几种,大致如下: 1,构造函数方式: function Car(parameters) { this.name = "objectboy"; } var cat1 ...
- java中创建多线程的方式
在java中比较常用的有三种创建多线程的方式. 方式一:继承Thread类,要重写run方法. 在MyThread类 public class MyThread extends Thread { @O ...
- Java进阶(四十二)Java中多线程使用匿名内部类的方式进行创建3种方式
Java中多线程使用匿名内部类的方式进行创建3种方式 package cn.edu.ujn.demo; // 匿名内部类的格式: public class ThreadDemo { public st ...
随机推荐
- HihoCoder - 1652:三角形面积和2(扫描线)
题意:给定X轴上的一些三角形,求面积并. 每个三角形的给出形式是Li,Ri,Xi,Yi,表示三个顶点分别是(Li,0):(Ri,0):(Xi,Yi),且满足Li<=Xi<=Ri: 思路:我 ...
- Tomcat热部署和热加载
1.热部署与热加载 在应用运行的时候升级软件,无需重新启动的方式有两种,热部署和热加载.它们之间的区别是: (1).部署方式: 热部署在服务器运行时重新部署项目.热加载在运行时重新加载class. ( ...
- input提示字在有焦点消失或输入改变时消失
一:获取焦点时 提示字消失 <input type="text" name="textfield" value="这里是提示内容" o ...
- GAME-BASED LEARNING
https://collegestar.org/modules/game-based-learning Introduction Appalachian State University Game ...
- 第八次 Java 作业 重写正方形周长方法
# 题目 编写一个应用程序,创建一个矩形类,类中具有长.宽两个成员变量和求周长的方法. 再创建一个矩形类的子类——正方形类,类中定义求面积方法.重写求周长的方法. 在主类中,输入一个正方形边长,创建正 ...
- 2019牛客国庆集训派对day3 买一送一
题目链接: 题意:有n个点,n-1条单向边,每个点都销售一类商品 问从点1开始走,买第一样商品类型为x,买第二样商品类型为y,问不同有序对<x,y>的数量 解法: col[i]表示这个点的 ...
- ent 基本使用 二 简单create && query
接上文,前边我们了解了关于基本代码生成以及schema 迁移的学习,下边我们看看基本的数据操作 参考代码: https://github.com/rongfengliang/ent-demo 环境准备 ...
- cf1173 D. Nauuo and Circle
链接 [cf]http://codeforces.com/contest/1175/problem/F) 思路 当1在1的位置做dp[i]为i的子树所有的方案. 一条性质是i的子树所占圆上的位置一定一 ...
- 阿里云服务器25端口禁用之如何使用Java发邮件(解决25端口禁用问题)
通常我们在本地使用Java发送邮件,通常是没有问题的,但是部署到服务器的话,就可能遇到问题.当然了,这与运营商也有关系.比如我之前在咖啡主机上购买虚拟机,然后将个人网站部署上去,通常是没有问题的,没有 ...
- OpenTK学习笔记:C#的中开发OpenGL程序的4种开源封包库SharpGL、CsGL、OpenTK、Tao框架的简单对比
最近要在C#的语言环境下开发OpenGL程序,参考了网上的博客论坛http://www.cnblogs.com/hanyonglu/archive/2012/06/12/2546581.html,总结 ...