你知道的越多,你不知道的越多

点赞再看,养成习惯

GitHub https://github.com/JavaFamily上已经收录有一线大厂面试点脑图、个人联系方式和技术交流群,欢迎Star和指教

前言

这是帅丙真实事件,大家都知道很多公司都是有故障等级这么一说的,这就是敖丙在公司背的P0级故障,敖丙差点因此被解雇,事情经过十分惊心动魄,我的心脏病都差点复发

事故等级主要针对生产环境,划分依据类似于bug等级。

P0属于最高级别事故,比如崩溃,页面无法访问,主流程不通,主功能未实现,或者在影响面上影响很大(即使bug本身不严重)。

P1事故属于高级别事故,一般属于主功能上的分支,支线流程,核心次功能等,后面还有P2,P3等,主要根据企业实际情况划分。

正文

敖丙之前也负责公司的商品搜索业务,因为业务体量增速太快了,商品表中的商品数据也很快跃入千万级别,查询的RT(response time 响应时间)也越来越高了,而且产品说需要根据更多维度去查询商品

因为之前我们都是根据商品的名称去查询的,但是电商其实都会根据很多个维度去查询商品。

就比如大家去淘宝的查询的时候就会发现,你搜商品名称、颜色、标签等等多个维度都可以找到这个商品,就比如下图的搜索,我只是搜了【帅丙】你会发现,名字里面也没有连续的帅丙两个字,有帅和丙的出来了

大家知道的传统的关系型数据库都是用什么 name like %帅丙% 这样的方式查询的,而且查询出来的结果肯定只能是name里面带帅丙的对吧。

那你还想搜别的字段比如什么尺寸、关键词、价格等等,都能搜到帅丙,这相当于是多个维度的了,传统的关系型数据库做不到呀。

做技术选型的时候,帅丙第一时间想到了搜索引擎。

当时市面是比较流行的有:Apache LuceneElasticsearchSolr

搜索引擎我后面会讲ELK(Elasticsearch、Logstash、Kibana)Canal,我呀真的是太宠你们了,这样会不会把你们惯坏了。

帅丙我呀,噼里啪啦一顿操作,最后得出结论:

相对来讲,如果考虑静态搜索,Sorl相对更合适。

如果考虑实时,涉及到分布式,Elasticsearch相对合适。

那我们商品还是要实时的呀,你后台改了价格啥的,是不是都要实时同步出去,不然不是炸了嘛。

看到这,我想可爱的你和帅丙心中都有了答案:Elasticsearch这是个神一样的引擎。

我这里就做一个简单的介绍就好了,细节的点我们后面去他的章节讲,啥都写了,敖丙哪里有这么多素材写文章?

ElasticSearch是一个基于Lucene的搜索服务器。

它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。

Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。

ElasticSearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。

根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。

看过敖丙之前文章的朋友都知道,我们做技术选型之前,要做什么呀,