设为首页 收藏本站
查看: 3223|回复: 0

[经验分享] Lily:基于Solr、HBase、Zookeeper云计算上的内容仓库

[复制链接]

尚未签到

发表于 2015-7-16 12:59:25 | 显示全部楼层 |阅读模式
  Lily是什么
  Lily是一个可扩展的数据仓库。用于数据的存储和搜索。Lily是一个分布式系统,她并不是白手起家的,她依赖于两个已有的OpenSource软件,一个是HBase, 另一个是SOLR. 同时Lily对于使用者提供自己的操作接口,称作Lily API.
  Lily的优势在于她强大的搜索能力,无论是文本匹配还是全文索引,通通都能搞定。但我觉得Lily在获取这些优势的同时付出了相当大的代价,最主要的代价就是系统的复杂性。想想看,为了能够使用Lily,你需要安装并维护以下系统:HDFS, HBase, Zookeeper, SOLR, Lily. 这些系统任何一个都可能让Operation Team抓狂,更不用说他们混在一起了。
  Lily的架构
  1.总体架构
  Lily使用分布式的架构,这包括两方面:1) Lily拥有多个Node,不同的Node完成不同的工作,相互合作共同完成任务。2) Lily拥有多个Node,每个Node都完成一样的工作,这样可以保证可扩展性和容错性。
  Lily的大致架构可用这张图来表示:
DSC0000.png
  先将这张图分成左右两边,左边是Lily的系统,右边是Lily依赖的系统,从上至下是HBase, HDFS, SOLR, Zookeeper. 后面我们会分析每个Lily Node的内部结构,现在我们先来分析一下Lily的每个依赖:
  Zookeeper, 每个Lily Node用Zookeeper来发布自己的存在,就好像HBase RegionServer一样。Client可以从Zookeeper获取当前有多少个Lily Node在提供服务。
  SOLR,为全文索引提供服务,具体的使用方法是Lily Node将插入的内容同步输出到SOLR Node,SOLR自己生成全文索引,Client直接call SOLR(不经过Lily Node)获取搜索结果。
  HDFS,它和Lily Node其实没有直接联系,换句话说Lily可以忽视他的存在。HDFS的作用就是存储HBase的数据,或者直接供Client使用,但这和Lily没什么关联。
  HBase,和Lily Node的联系最为紧密,Lily Node作为中间层,接到Client的写入请求以后将数据写入HBase,并加上自己的数据以实现Secondary Index. 这个实现可以说和GMS很相似,但Lily的设计更为复杂。
  2. Lily Node的内部结构
  多个Lily Node组成了Lily的系统,我们通过观察每个Node内部的结构来了解Lily的工作原理。这张图描述了每个Lily Node的内部结构:
DSC0001.png
  这张图稍微有点复杂,我们略过依赖的module,看看Lily Node内部有哪些module: Repository, WAL, MQ(Message Queue), Indexer, LinkIndex.
  Repository:
  这个是Client操作的入口,Client使用基于Avro的协议(类似于PB)操作Repository,而Repository使用HBase标准的java API操作HBase. 除了基本的HBase操作,Repository还有添加Secondary Index信息的任务。为了保证Index信息和原始信息的最终一致性,需要用到WAL. Repository在每次操作的最开始写WAL log, 然后原始操作,写WAL, 再Index操作,写WAL. 一步一标记,失败了就把没做的事情重做一遍. 都做完了写入MQ, 将任务转交个后续处理模块.
  WAL:
  前面已经介绍过了,这个模块是保证最终一致性用的. 它和HBase的WAL没什么联系,实现方式也不同。不过我觉得如果想让WAL有保证的化应该将log写入分布式文件系统中,比如HDFS. 但Lily的做法貌似更绝,使用HBase的一个Table来存储WAL,简单,但是加大了依赖性,而且可能会产生更多相互依赖的问题。
  Message Queue:
  为什么要有Message Queue?因为有些操作不需要当时完成,丢到MQ里面由后续模块异步慢慢完成好了, 比如说将新的内容同步到SOLR. 因此MQ产生了,如何实现?还是老办法,用HBase里面的一个Table来实现。
  Indexer:
  Indexer的主要功能是同步SOLR,进而实现全文索引。因为操作SOLR使用的是公开的API,且Lily不管查询工作,所以Indexer也不会很复杂。
  LinkIndex:
  根据Index来查找具体类容的模块,Repository和Indexer都会用到,具体实现细节还需要研究源码才能得知.
  总结
  说到这里大家对于Lily因该已经有大概的认识了. 我这里总结一下Lily的优缺点.
  优点:支持多种搜索,设计上没有大的缺陷.
  缺点:复杂,管理困难,client必须使用Lily的API才能享受其功能,对于HBase相当依赖却又不能融入其中。
  对于我们来说也许做一个轻量级的Secondary Index真的有些意义。
  
  来源:http://www.spnguru.com/2011/02/lily%E6%9E%B6%E6%9E%84%E7%AE%80%E4%BB%8B/
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-87322-1-1.html 上篇帖子: [solr] 下篇帖子: Solr学习笔记(一)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表