3.高并发教程-基础篇-之分布式全文搜索引擎elasticsearch的搭建(代码片段)

齐泽西 齐泽西     2022-11-13     437

关键词:

高并发教程-基础篇-之分布式全文搜索引擎elasticsearch的搭建

如果大家看了我的上一篇《2.高并发教程-基础篇-之nginx+mysql实现负载均衡和读写分离》文章,如果能很好的利用,那么其实已经可以轻松日抗千万级别的访问量了,但是如果业务涉及查询比较多,查询条件比较丰富,又或者我就想要查询的响应更快点,那么在mysql上面去做优化,其实比较辛苦,有没有更好的解决方案呢?答案是肯定的!它就是我们今天的主角,分布式全文搜索引擎elasticsearch.

技巧提示:mysql集群层主要提供核心业务逻辑的读写以及数据的冗余备份;elasticsearch负责前端的查询和展示。比如,用户的所有写操作都是在mysql的master服务器上面完成;然后通过主从机制,把数据同步至多个mysql从机,然后通过从机把数据同步至elasticsearch.因为有多个mysql从机,所有同步的时候划分合适数量的表分担至各个从机去同步,这样既可以减轻各个mysql服务器的压力,又可以更加高效同步。同步工具这里推荐logstash,大家自行搜索了解,如果遇到坑可以留言。

一、架构图

服务器准备:3台,ubuntu16.04系统+elasticsearch-6.2.4
slave1:192.168.1.191 ES集群master
slave2:192.168.1.192 ES集群slave
slave3:192.168.1.193 ES集群slave
[注意:nginx方向代理和mysql集群的配置这里不做说明,大家可以看我的之前的文章]

二、elasticsearch配置(分别在三台服务器上面进行如下操作)

1.java环境配置:

    *请自行前往java官方下载java,然后解压至合适目录
    vim /etc/profile加入如下内容:
    #java
    export JAVA_HOME=/home/qizexi/data/java #这个改为你java的解压目录
    export JAVA_CLASS=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/jre/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export PATH=$PATH:$JAVA_HOME/bin
    保存,退出
    source /etc/profile
    java -version看到如下内容即是java安装成功
    ---------------------------------------
    java version "1.8.0_141"
    ---------------------------------------
        

 

2.账号准备:

    elasticsearch不允许以root账号运行,所以我们可以添加一个es用户来负责运行elasticsearch
    useradd es
    passwd es

    将elasticsearch-6.2.4的安装目录变更为es用户
    chown -R es:es elasticsearch-6.2.4

    改变ulimit的1024的限制
    vim /etc/security/limits.conf
    * hard nofile 100000
    * soft nofile 100000
    * hard nproc 100000
    * soft nproc 100000
    保存退出
    source /etc/security/limits.conf
    切换es用户(su es)之后运行
    ulimit -n可以看到
    100000
    说明成功,否则可以重启生效:)

    改变max_map_countd的限制:
    vim /etc/sysctl.conf修改如下配置:
    vm.max_map_count=262144
    保存退出
    运行:sysctl -p
        

 

3.主服务器配置(191):

    cd 到elasticsearch-6.2.4的解压目录
    vim config/elasticsearch.yml修改如下内容:
    cluster.name: my-app
    node.name: master
    network.host: 192.168.1.191
    http.port: 9200
    discovery.zen.ping.unicast.hosts: ["192.168.1.191", "192.168.1.192", "192.168.1.193"]
    保存,然后使用es账号启动即可.
    su es
    bin/elasticsearch -d
    su root
    netstat -tlnp看到如下内容即是成功(有可能过几秒钟才能看到):
    ------------------------------------------------------
    192.168.1.191:9200
    192.168.1.191:9300
        

 

4.配置从服务器(192,193):

    cd 到elasticsearch-6.2.4的解压目录
    vim config/elasticsearch.yml修改如下内容:
    cluster.name: my-app
    node.name: slave1 #193服务器改为slave2
    network.host: 192.168.1.192 #193服务器改为192.168.1.193
    http.port: 9200
    discovery.zen.ping.unicast.hosts: ["192.168.1.191", "192.168.1.192", "192.168.1.193"]
    保存,然后使用es账号启动即可.
    su es
    bin/elasticsearch -d
    su root
    netstat -tlnp看到如下内容即是成功(有可能过几秒钟才能看到):
    -------------------------------------------------------
    192.168.1.192:9200 #192上面看到是193
    192.168.1.192:9300 #192上面看到是193
        

 

5.查看集群的状态:

    curl -XGET \'http://192.168.1.191:9200/_cat/nodes?v\'
    看到三个节点即可成功:
    ip            heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
    192.168.1.191           25          55   0    0.00    0.01     0.00 mdi       *      master
    192.168.1.192           22          97   5    0.70    0.34     0.17 mdi       -      slave1
    192.168.1.193           20          75  30    0.54    0.14     0.05 mdi       -      slave2
        

分布式全文检索引擎之elasticsearch(代码片段)

...个分布式可扩展的实时搜索和分析引擎,一个建立在全文搜索引擎ApacheLucene(TM)基础上的搜索引擎.当然Elasticsearch并不仅仅是Lucene那么简单,它不仅包括了全文搜索功能,还可以进行以下工作: 查看详情

elasticsearch基础教程

概念Elasticsearch是一个开源的搜索引擎,建立在一个全文搜索引擎库 ApacheLucene? 基础之上。然而,Elasticsearch不仅仅是Lucene,并且也不仅仅只是一个全文搜索引擎。 它可以被下面这样准确的形容:一个分布式的实时文档... 查看详情

微服务实用篇6-分布式搜索elasticsearch篇2(代码片段)

今天我们继续学习分布式搜索引擎elasticsearch,今天主要学习四个模块,分别为DSL查询文档,搜索结果处理,RestClient查询文档,还有最好演示一个旅游案例。下面开始今天的学习吧。目录一、DSL查询文档1.1、DSL... 查看详情

java开发之高并发必备篇——线程基础

​​提到高并发,这几年几乎是火遍编程界的网络名词了。无它,随着现在互联网的高速发展特别是电商平台类的应用快速发展,互联网服务内容也越来越丰富,用户越来越多,淘宝、天猫、京东、“拼夕夕... 查看详情

java基础语法测试题和答案,看这篇足矣了!

三大内容:Java并发编程Java高并发编程高并发系统设计Java并发编程1.概览2.进程与线程3.Java线程4.共享模型之管程5.共享模型之内存6.共享模型之无锁7.共享模型之不可变8.共享模型之工具并发编程—模式篇:并发编程—应用... 查看详情

elasticsearch入门

...ene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,使用RESTfulweb暴露接口。它有许多特性,比如以下几个属性:1.实时数据2.实时分析3.分布式设计4.高可用性5.全文搜索6.面向文档索引索引Index是es中的一个 查看详情

分布式全文检索引擎之elasticsearch(代码片段)

...个分布式可扩展的实时搜索和分析引擎,一个建立在全文搜索引擎ApacheLucene(TM)基础上的搜索引擎.当然Elasticsearch并不仅仅是Lucene那么简单,它不仅包括了全文搜索功能,还可以进行以下工作:  分布式实时文件存储,并将每一个... 查看详情

分布式爬虫之elasticsearch基础1(代码片段)

一:搜索引擎elasticsearch介绍  Elasticsearch 是一个全文搜索引擎,可以快速地储存、搜索和分析海量数据。二:应用场景海量数据分析引擎站内搜索引擎数据仓库三:安装我们可以到Elasticsearch的官方网站下载Elasticsearch... 查看详情

微服务分布式高并发都不懂,你拿什么去跳槽?

...服务架构BAT互联网架构这些年的演进分析 国内外常见分布式系统架构状况介绍 微服务架构指南:领域驱动设计DDD模型 SpringCloud1-2实战篇Config分布式配置中心Eureka注册与发现机制Ribbon客户端负载均衡Hystrix服务熔断组件Fe... 查看详情

30岁转行程序员,高并发系统基础篇,分布式部署设计?

...展分而治之是一种常见的高并发系统设计方法,采用分布式部署的方式把流量分流开,让每个服务器都承担一部分并发和流量。2、缓存一般的持久化存储都是使用磁盘作为存储介质的,而普通磁盘数据由机械手臂、... 查看详情

高并发和大型网站架构相关

...  2:通过网站的架构处理高并发业务: 一:分布式部署服务器:1:控制层、业务层、数据层、个人中心、列表分布式部署。2:使用缓存:memcache或则Redis;3:使用消息队列ActiveMq;4:使用全文检索(nosql数据库);5:文件... 查看详情

全文搜索之mysql与elasticsearch搜索引擎

参考技术AMySQL支持全文索引和搜索功能。在MySQL中可以在CHAR、VARCHAR或TEXT列使用FULLTETXT来创建全文索引。FULLTEXT索引主要用MATCH()...AGAINST语法来实现搜索:MySQL的全文搜索存在以下局限:通常来说MySQL自带的全文搜索使用起来局限... 查看详情

搜索模板elasticsearch

...)、分布式(可扩展)的搜索和分析引擎,基于Lucene全文搜索引擎工具包,算法基于倒排索引算法(eg:一篇文章根据字典进行分词,然后根据字典进行倒排,倒排即在内存中存入某个字典,并且保存每个字典对应的文档,查找时... 查看详情

大流量高并发量网站的之解决方案

...3、CPU周期优化方法:扩充内存4、内存带宽二、大流量高并发量网站的解决方案1、确认服务器硬件是否足够支持当前的流量。2、使用memcache缓存技术,将动态数据缓存到内存中,动态网页直接调用这些文件,而不必在访问数据库... 查看详情

高并发场景之rabbitmq

...Redis队列也不能完全解决问题,因为使用Redis要自己实现分布式锁 这次我们来了解一下一个专门处理队列的组件:RabbitMQ,这个东西天生支持分布式队列。下面我们来用Ra 查看详情

550elasticsearch详细入门教程系列-分布式全文搜索引擎elasticsearch2023.03.31

...sticsearch简介&安装1.1、Elasticsearch是什么?1.2、全文搜索引擎1.3、Elasticsearch的应用案例1.4、Elasticsearch的下载、安装、运行1.5、有关restful二、参考链接一、Elasticsearch简介&安装1.1、Elasticsearch是什么?TheElasticStack,包括El... 查看详情

全文搜索之elasticsearch

概述Elasticsearch (ES)是一个基于 Lucene 的开源搜索引擎,它不但稳定、可靠、快速,而且也具有良好的水平扩展能力,是专门为分布式环境设计的。特性安装方便:没有其他依赖,下载后安装非常方便;只用修改几个... 查看详情

java700多个g架构师项目实战,高并发集群分布式,大数据高可用,视频教程获取方式

学习思路:1、先学习第一套或者第二套架构师课程,帮助没有基础或基础学得不好的同学建立架构师思维,整套需要全部学习,很重要!!2、根据工作需要,分别去学习第二套、第三套里的实战课程里的知识点,不需要全部全... 查看详情