Solr In Action 中文版 第一章(三)
3.1 为什么选用Solr?
在本节中。我们希望能够提供一些关键信息来帮助于你推断Solr是否是贵公司技术方案的正确选择。我们先从Solr吸引软件架构师的方面说起。
3.1 软件架构师眼中的Solr
在评估一项新技术时,软件架构师必需要考虑一系列的因素,当中就包含系统的稳定性,可伸缩性,还有容错性。Solr在这三方面的得分都非常不错。
说到稳定性,Solr是一个由活跃的开源社区和经验丰富的代码提交者共同维护的一项成熟技术。Solr和Lucene的新用户们一般会吃惊于项目的公布方式,可能他们曾经都是等待某个项目的官方Release版,没听说过这样的从分支上直接pull下来的方式。无论你的公司是否接受这样的方式。我们并非建议你这么做,我们想表明的是,Lucene和Solr项目中自己主动測试模块的測试深度和宽度是值得信任的。简单来说,假设你从分支上拿到了一个nightly
build。假设全部的自己主动測试都能通过,那你就能够放心的肯定全部的核心功能都是ok的了。
我们在1.2.6节中已经接触到了Solr实现可伸缩性扩展的方法,在1.2.7节中也讨论了容错性的问题。作为一个架构师,你可能最好奇的是Solr的可伸缩性功能和容错性功能的局限究竟在哪里。
首先。你须要知道在Solr4中,分片功能和复制备份功能都被重写了。在鲁棒性和易于管理方面都有非常大提高。新的扩展方式被称为SolrCloud。其底层实现上。SolrCloud使用了Apache
ZooKeeper来管理Solr集群上的配置同步,并监控集群的执行状态。这里列出了一些Solr全新的SolrCloud功能的亮点:
·中心化的配置
·分布式的索引,避免单点失败(SPoF)
·自己主动容错。自己主动产生新的主分片
·随意节点均可触发覆盖整个集群全部分片的分布式全查询。且已经集成了自己主动容错和负载均衡
可是这并非说Solr的可伸缩性就没有提高的空间了。
SolrCloud在双方面还有待提高。
首先,不是全部功能都能工作在分布式模式下。
比方 joins连接功能。其次,一旦索引建立。索引的分片数目就不能再动态调整。要想改变分片数的话仅仅能又一次对全部文档建立索引。
我们在第16章会具体讨论SolrCloud的方方面面。可是我们希望确保软件架构师们可以意识到Solr的可伸缩性过去几年中已经走过了非常长的路,并且今后还将继续不断地改进下去。
3.2 系统管理员眼中的Solr
作为一名系统管理员,在考虑開始使用像Solr这种一种新技术时,最优先考虑的是新技术能否够非常好地和已有系统进行配合。
对于Solr来说对这个问题能够非常轻松的回答YES。
Solr 全然是基于JAVA开发的,能够在随意一个装有J2SE
6.x/7.x JVM虚拟机的操作系统上执行。
并且Solr还自带了Oracle提供的开源Java Servlet引擎Jetty,拿来就能用。还有一方面。Solr是一个标准的Java
Web应用。能够非常方便的在JBoss或是Oracle AS之类的Java web应用server上进行部署。
对Solr的全部操作都能够通过HTTP请求来完毕, 而且Solr在设计时就考虑到了同Squid或是Varnish这种HTTP反向代理协同工作。Solr同一时候也支持JMX。所以你能够把Solr挂载到你喜欢的监控程序(比方Nagios)之下进行监控。
最后,Solr提供了一个不错的管理控制台, 能够用于检查配置,查看统计信息。发起測试查询。以及监控SolrCloud的健康情况等等。图1.4展示了Solr4 管理控制台的一个截屏。我们会在第二章中具体的学习管理控制台的使用。
3.2.1 公司CEO眼中的Solr
虽然CEO之类的人物是不太可能看这本书的,我们还是要写几点关键的。以便于万一CEO在大厅里叫住你聊聊的时候你能够拿这几点去忽悠他。首先,管理层的人喜欢听到他们今天对技术做出的一笔投资将会在今后非常长一段时间内都产生效益。详细到Solr。你能够强调一下很多公司至今还在靠着Solr
1.4执行公司的产品,这但是2009年公布的老版本号。这说明Solr是有着成功的商用案例的,而且一直持续在改进。
此外,CEO们喜欢可控可预測的技术。
正如你在接下来的章节里所要看到的那样,Solr非常好用。你能够在几分钟之内就搭起一个简单的Solr服务。还有一个疑问是假设万一负责Solr的那个员工跳槽或是跑路了。我们公司的业务会受到影响吗?不会因此整个服务当掉把?Solr的技术确实比較复杂,可是其开源社区非常的活跃。这意味着你仅仅要上去求助基本上都能及时得到帮助。并且。你是直接能够看到源代码的呀。有的时候你发现一个地方写的有问题那你能够直接自己fix掉即可了。
另外也有很多商业化的服务商能够帮你规划,实现和维护你的Solr系统。当中非常多服务商还提供Solr相关的培训课程。
接下来这一点可能CFO更关心,就是使用Solr的投资花费问题。投资使用Solr事实上花不了多少钱。
我们不用知道你的运营环境的规模大小就能够非常自信的说,你能够在几分钟之内就搭起一个简单的Solr服务,而且非常快就能够建立文档的索引。
如今搭在云端的一个server能够在亚秒级(译者注:即不到一秒的时间之内)就处理完上百万的文档请求。
Solr In Action 中文版 第一章(三)的更多相关文章
- Solr In Action 中文版 第一章(四、五)
1.1 功能概览1. 4 最后,让我们再依照以下的分类.高速的过一下Solr的主要功能: ·用户体验 ·数据建模 ·Solr 4的新功能 在本书中.为你的用户提供良好的搜索体验 ...
- Netty In Action中文版 - 第一章:Netty介绍
本章介绍 Netty介绍 为什么要使用non-blocking IO(NIO) 堵塞IO(blocking IO)和非堵塞IO(non-blocking IO)对照 Java NIO的问题和在Nett ...
- Java Persistence with MyBatis 3(中文版) 第一章 MyBatis入门
本章将涵盖以下话题: ž MyBatis是什么? ž 为什么选择MyBatis? ž MyBatis安装配置 ž 域模型样例 1.1 MyBatis是什么 MyBatis是一个简化和实现了Ja ...
- Akka in action (第一章 介绍Akka)
在本章 概述Akka 了解Actors和Actor系统 Akka的适用范围 在第一章中,会介绍给你Akk的个方面,它能做什么,与现有的解决方案有那些不同.重点关注Akka有哪些功能和使用范围和强大的并 ...
- 总结sql用法及基础语法 第一章 三范式
第一范式(1NF)设置了一个有组织的数据库非常基本的规则: 定义所需要的数据项,因为它们成为在表中的列.放在一个表中的相关的数据项. 确保有数据没有重复的组. 确保有一个主键. PRIMARY KEY ...
- Tensorflow官方文档中文版——第一章
第一示例: import tensorflow as tf import numpy as np x_data=np.float32(np.random.rand(,))#随机输入 y_data=np ...
- 自译Solr in action中文版
文件夹 Part 1 初识 SOLR 1 Solr 简单介绍 2 開始熟悉 Solr 3 Solr 核心概念 4 配置 Solr 5 建立索引 6 文本分析 Part 2 Solr 核心功能 7 发起 ...
- Java Persistence with MyBatis 3(中文版) 第二章 引导MyBatis
MyBatis最关键的组成部分是SqlSessionFactory,我们可以从中获取SqlSession,并执行映射的SQL语句.SqlSessionFactory对象可以通过基于XML的配置信息或者 ...
- 【转】apue《UNIX环境高级编程第三版》第一章答案详解
原文网址:http://blog.csdn.net/hubbybob1/article/details/40859835 大家好,从这周开始学习apue<UNIX环境高级编程第三版>,在此 ...
随机推荐
- CSS 3中细线边框如何实现?
在app应用开发中,我们常常都需要用到css3来设置应用的样式.由于app都是在移动设备上进行展示,所以边框描边的线一般都小于1px,而以往我们使用的都是1px及以上的.那么问题来了,对于小于1px的 ...
- 使用PowerShell登陆多台Windows,测试DCAgent方法
目标: 需要1台PC用域账户远程登陆10台PC,每台登陆后的PC执行发送敏感数据的操作后,再logoff. 在DCAgent服务器上,查看这10个用户每次登陆时,DCAgent是否能获取到登陆信息(I ...
- RSA解密报错java.security.spec.InvalidKeySpecException的解决办法
java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: IOException : algid p ...
- Topcoder SRM 606 div1题解
打卡! Easy(250pts): 题目大意:一个人心中想了一个数,另一个人进行了n次猜测,每一次第一个人都会告诉他实际的数和猜测的数的差的绝对值是多少,现在告诉你所有的猜测和所有的差,要求你判断心中 ...
- Gradle for Android(一)
Gradle是一种基于Groovy的动态DSL,而Groovy语言是一种基于jvm的动态语言.这里只分享实际开发中会用到的场景,您不需要去学习Groovy语言,知道Java的您是很容易阅读Groovy ...
- YYH的营救计划(NOIP模拟赛Round 6)
题目描述 “咚咚咚……”“查水表!”原来是查水表来了,现在哪里找这么热心上门的查表员啊!YYH感动的热泪盈眶,开起了门…… YYH的父亲下班回家,街坊邻居说YYH被一群陌生人强行押上了警车!YYH的父 ...
- 和菜鸟一起学c之gcc编译过程及其常用编译选项【转】
转自:http://blog.csdn.net/eastmoon502136/article/details/8162626 版权声明:本文为博主东月之神原创文章,未经博主允许不得转载. 上篇文章,知 ...
- POCO库中文编程参考指南(5)Poco::Net::SocketAddress
1 枚举 最大地址长度,这个与Poco::Net::IPAddress中的定义可以类比,不过这里指的是`struct sockaddr_in6 enum { MAX_ADDRESS_LENGTH = ...
- 原生JavaScript实现jQuery的hasClass,removeClass,addClass,toggleClass
介绍: 1.hasClass:判断DOM元素是否存在类. 2.addClass:为的DOM元素添加类. 3.removeClass:删除DOM元素的类. 4.toggleClass:如果DOM元素存在 ...
- js-禁止微信H5页面点击右上角菜单时出现“复制链接”,且分享仅支持微信分享
禁止微信H5页面点击右上角菜单时出现“复制链接”,这个问题已经影响到我很久很久了,起码有2年了, 昨天写H5活动的时候,需求有一个是:可分享,但是禁止复制活动链接, 这一下,就逼我务必好好研究研究了. ...