SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

这篇具有很好参考价值的文章主要介绍了SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Docker

我们发现在微服务中有一个令人头疼的问题——部署,用Docker去解决这个部署难题

(一)初识Docker-什么是docker

1、项目部署的问题

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

2、Docker

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

扔到一台机器上,它们的依赖难道没有干扰吗?不会,docker将打包好的程序放到一个隔离容器去运行,使用沙箱机制,避免互相干扰,之间不可见,这样就解决了混乱依赖的问题
但仅限于同一个操作系统,比如centos和ubuntu

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈
SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈
那么一个ubuntu上的应用为什么不能在centos上运行呢?
SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈
那针对这个问题,docker干了什么事呢?
SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈
这样,docker就解决了跨系统问题。你可以认为,docker打包好的程序包,可以运行在任何一个linux内核的操作系统

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

3、总结

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

(二)初识Docker-Docker和虚拟机的差别

1、Docker与虚拟机

上节课我们已经学习了Docker的原理,我们知道Dokcer可以实现一个应用在不同的linux操作系统上去运行和部署
而我们虚拟机也可以达到类似的效果
它们的实现有什么差别呢?
SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

虚拟机是在一个系统中装了另外的一个系统,所以当应用执行时,它会以为自己在一台真实的电脑上,因此它会先去调用这个内置的操作系统,而它再与我们Hypervisor进行交互,再把信息传递给了我们外部操作系统,外部操作系统再去调用计算机硬件,于是我们的应用执行就完成了。但由于经过了层层传递,因此它的性能相对来讲要差一些
Docker就不同了,我们知道,Docker它的应用在执行时是直接调用操作系统内核的,所以它的执行性能是会比虚拟机性能要好很多的

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

2、总结

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

docker是一个系统进程:因为直接与操作系统内核进行交互

(三)初识Docker-Docker架构

1、镜像和容器

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

镜像就是硬盘中的文件

镜像都是只读的,也就是说容器运行过程中不能往镜像中写东西。可以基于镜像创建容器,容器可以从中读数据但不能写数据。
那么将来mysql容器往哪里写数据data呢?只要拷贝一份文件到自己的独立文件系统中,这就是隔离的一个特性。这样在自己的空间里写,不会对别的容器产生影响,也不会对镜像产生影响。包括将来记日志logs也是如此
只有这样,我们的镜像才能放心大胆的交给别人去使用,因为这样镜像不会被干扰也不会被影响

那么Docker如何共享给别人去使用呢?

2、Docker和DockerHub

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

那么我们该如何利用Docker完成镜像构建或者是从远端拉取镜像呢?又该如何去运行容器呢?这就需要了解Docker的架构了

3、docker架构

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

客户端:如果就在本地来发,用“命令”就可以了,如果将来是远程操作docker,就用restapi发

比如我们这里就是本地发,docker build,docker pull,docker run

一般nginx、mysql这种建议直接从官方拉取,只有一些我们自己的微服务或者自己需要去做一些深度定制,才需要构建
因此我们一般使用docker,主要就是向docker server发命令,得到镜像

4、总结

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

(四)初识Docker-Docker的安装

1、安装docker

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈
SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈
macos m1上安装Docker直接在官网或者homebrew下载即可,然后在偏好配置中更换国内镜像源

(五)使用Docker-镜像命令

1、镜像相关命令

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

2、镜像操作命令

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈
docker images --help

3、从DockerHub中拉取一个nginx镜像并查看

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

docker pull nginx

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

4、利用docker save将nginx镜像导出磁盘,然后再通过load加载回来

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈
SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

这个nginx.tar文件不存在,将来它会自动创建

以上说明我们导出成功了

那接下来我们还要演示导入

首先把本地的这个镜像删除
SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈
SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈
然后通过docker images查看发现已经没有了

接下来我们通过load来加载这个nginx.tar文件

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈
SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

5、总结

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

(七)使用Docker-容器命令介绍

1、容器相关命令

怎么样基于镜像去创建容器,完成容器的各种操作

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

docker run 不仅可以创建容器,而且还可以让容器处于运行状态

(八)使用Docker-容器命令案例1

1、案例:创建运行一个Nginx容器

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

端口映射的作用:把本来给外界完全隔离开来的容器开一个小窗口,让你透过它来访问

容器端口往往取决于这个应用本身,一般不会变,像这个nginx一般都是80。可变的是宿主机端口

如果想访问容器,应该访问容器所在的那台服务器
SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈
查看本机ip地址:ifconfig 找到 en0后,如果是iPv4就找 inet

run后返回的一长串字符串就是容器的id,全局唯一,起到标识的作用

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈
SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈
SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈
-f 持续跟踪日志

ctrl+c停止输出日志

2、总结

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

(九)使用Docker-容器命令案例2

1、案例:进入Nginx容器,修改HTML文件内容,添加“传智教育欢迎您“

那么如何进入到容器内部,修改文件呢?
SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈
SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

容器的内部其实有一套自己的文件系统
它看起来好像跟linux系统的目录一样,但其实它是一个阉割版

我们现在要找nginx在哪个目录:dockerhub上找
SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈
index.html就是我们要修改的首页了

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

vi不成功:镜像封装时只是应用程序所需要的必备的函数库

那么我们如何修改文件呢?

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈
utf-8,来支持中文

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈
SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈
通过 exit 从容器中退出;然后停掉这个容器 docker stop mn
SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈
注意 docker ps 默认只能查看运行容器
SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈
这就是为什么我们ps没有看到这个挂掉了的容器的原因,除非我们加上 -a
SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈
如果我们想再启动,docker start mn
SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈
然后再删除这个容器

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

2、总结

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

(十一)使用Docker-数据卷命令

1、数据卷

docker容器中所有的数据、文件都是和容器耦合在一起的,因此给我们带来很多问题

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈
SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

比方说,我现在在这个容器的html目录里写了点东西,那么这些东西会立即写到宿主机文件系统里;而反过来,如果说我在宿主机文件系统里对html文件夹中的某一个文件进行修改,那么这种修改也立即会反映到容器内的这个目录里去

又创建了一个新的容器,我希望它的配置能够共享过来,怎么办呢?我可以让新的这个容器的conf目录也来挂载conf数据卷,也就是说,两个容器可以挂在同一个卷上。这个时候,原来在conf目录中做的一切修改,这个新的容器也能看到

容器删了,数据卷不会跟着删。将来,再来一个新的容器,只要接着挂载在这两个数据卷上,就可以共享以前旧的数据

2、操作数据卷

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

3、案例:创建一个数据卷,并查看数据卷在宿主机的目录位置

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

4、总结

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

(十二)使用Docker-数据卷挂载案例1

1、挂载数据卷

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

2、案例:创建一个nginx容器,修改容器内的html目录内的index.html内容

之前我们是进到容器里面去改,这次我们通过数据卷挂载去改
SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈
创建了以后,我们要知道它挂载的目录在哪里,所以我们要查看数据卷的信息
SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈
找到了数据卷的挂载点目录
SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈
Mac下没有找到目录的需要先:

docker run -it --privileged --pid=host debian nsenter -t 1 -m -u -n -i sh

如果要退出这个,直接输入exit即可
SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈
ls后发现下面有两个文件。这时我们仍然没有进入到容器内,这说明我们已经将容器的usr/share/nginx/html挂载到了宿主机的真实目录下了
那现在我们想修改它就很容易了

vi index.html

保存完了后,我们期待这个东西立即跑到容器内,
SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈
cat后发现修改成功了,再去页面看一下
SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈
我们刚刚在完成数据卷挂载时,我们的数据卷是提前创建好的。那想象一下,如果数据卷不存在,它会不会也能成功呢?
SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈
先把这个容器和未使用的数据卷都删除,然后再创建

现在这个卷是不存在的,我们直接去创建,行不行呢?
SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈
这个卷自动创建出来了

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈
而且我们在浏览器中查看,发现已经自动恢复了

这说明我们在做数据卷挂载时,这个数据卷不存在,docker非常知道,它能自动帮你把这个卷创建出来

3、总结

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

(十三)使用Docker-数据卷挂载案例2

1、创建并运行一个MySQL容器,将宿主机目录直接挂载到容器

刚才演示了如何将数据卷挂载到容器目录
事实上不仅仅是数据卷,我们的宿主机目录可以直接与容器进行挂载

区别是什么呢?
都是以-v开头,
之前数据卷挂载,前半部分是数据卷名称,现在改成了宿主机目录了
还有一个差别,目录挂载还允许将宿主机文件与容器文件做挂载。这种情况下,宿主机文件的内容会直接覆盖容器内文件的内容,这个是数据卷中没有的功能

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈
要满足的要求就是:1.把数据目录挂载到mysql到数据目录;2.把配置文件挂载到mysql的配置文件;3.设置mysql的密码
SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈
SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈
然后将hmy.cnf(mysql的默认配置文件)放到conf下

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

-e 环境变量,
MYSQL_ROOT_PASSWORD即mysql的root的密码

-d后台运行

还缺了端口和数据卷的挂载

docker run \
--name mysql \
-e MYSQL_ROOT_PASSWORD=123 \
-p 3306:3306 \
-v /Users/XXX/Downloads/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf \
-v /Users/XXX/Downloads/mysql/data:/var/lib/mysql \
-d \
mysql:5.7.25

2、数据卷挂载的方式对比

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

3、总结

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

(十四)自定义镜像-镜像结构

在上一节中我们已经学习了如何去拉取一个镜像,如何基于镜像去创建与运行容器,不过我们之前所操作的所有镜像都是由dockerhub官方制作的镜像,那我们将来自己写微服务代码,能不能让dockerhub官方帮我们制作镜像?显然不能
因此,我们将来的微服务一定要自己制作镜像
所以我们来学习如何基于dockerfile来自定义镜像

1、镜像结构

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈
SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

2、总结

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

(十五)自定义镜像-Dockerfile

1、什么是dockerfile

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

2、基于ubuntu镜像构建一个新镜像,运行一个java项目

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈
这个“.”代表的是dockerfile所在的目录,docker build构建时得告诉它dockerfile在哪里
SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

如果不成功,docker logs -f web看问题出在哪里
SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈
但是这样很麻烦,为什么不将前n层提前构建好作为一个镜像先放在那,以后我都在这个基础上再去构建,就方便多了

事实上,java:8-alpine镜像已经帮我们做了这些事情,

3、基于java:8-alpine镜像,将一个Java项目构建为镜像

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈
比2中省略了非常多,
SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

4、总结

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

(十六)DockerCompose-初始化Compose

之前的所有部署都是我们手动一个个去完成的,但是在实际生产环境下,我们微服务的个数可是非常多的。所以我们一定需要有一种集群部署的手段,这就是DockerCompose

1、什么是DockerCompose

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈
Compose文件是把docker run命令集合进来了,第一种mysql的对比:
SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈
这里dockercompose中的mysql没有配端口,因为它是一个微服务集群部署,在微服务集群中,mysql仅仅是构建给集群内的服务用的,那端口就不需要暴露,内部能访问就行了

第二种web的对比:
SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈
dockercompose中没有制定镜像,而是用了build构建镜像,.表示从当前目录构建镜像,一旦创建完,就有镜像可以创建容器了

所以dockercompose就是把docker run的各种参数转化成指令

2、安装DockerCompose

Docker Desktop已经自带DockerCompose,不需要再额外安装
SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

3、总结

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

(十七)DockerCompose-部署微服务

1、将之前学习的cloud-demo微服务集群利用DockerCompose部署

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

3中怎么才能让打包名叫app.jar呢?比如查看user-service的pom.xml,最下面有一个build,其实就是在做项目打包,finalName为app,就是打包之后的名称为app:
SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈
都叫app会冲突吗?不会,因为它们各自有自己的文件夹

最后,先在生命周期中clean一下,然后再重新打包package,然后就会出现一个target目录,下面就有app.jar

要部署的微服务有gateway、orderservice、userserivce、mysql、nacos
SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈
可以看到,只有网关暴露了端口,10010,剩下的都没有暴露端口,一样的道理,微服务地址不应该暴露在外界

(十八)Docker镜像仓库

1、常见镜像仓库服务

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

2、私有镜像仓库搭建

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈
SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈
SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈
SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈文章来源地址https://www.toymoban.com/news/detail-423616.html

到了这里,关于SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Springcloud】分布式搜索elasticsearch

    先看下翻译: elasticsearch是一款非常强大的 开源搜索引擎 ,可以帮助我们 从海量数据中快速找到需要的内容 以下是生活中ES的使用场景: 项目在运行的时候会产生海量的日志信息,而elasticsearch结合kibana、Logstash、Beats,也就是elastic stack( ELK ),即ELK技术栈。被广泛应用在

    2024年02月08日
    浏览(41)
  • SpringCloud学习路线(10)——分布式搜索ElasticSeach基础

    一、初识ES (一)概念: ES是一款开源搜索引擎,结合数据可视化【Kibana】、数据抓取【Logstash、Beats】共同集成为ELK(Elastic Stack),ELK被广泛应用于日志数据分析和实时监控等领域,ES是核心组件。 (二)作用: 高效查询搜索内容。 (三)发展史: 1、底层实现是 Lucene ,

    2024年02月15日
    浏览(38)
  • SpringCloud学习路线(13)——分布式搜索ElasticSeach集群

    前言 单机ES做数据存储,必然面临两个问题: 海量数据的存储 , 单点故障 。 如何解决这两个问题? 海量数据的存储问题: 将索引库从逻辑上拆分为N个分片(shard),存储到多个节点。 单点故障问题: 将分片数据在不同节点备份(replica) 缺点是什么? 造成资源的消耗的

    2024年02月15日
    浏览(36)
  • Springcloud中间件-----分布式搜索引擎 Elasticsearch

    该笔记是根据黑马程序员的课来自己写了一遍的,b站有对应教程和资料 第一部分 第二部分 第三部分 预计看完跟着练习5小时足够 1.1.1.elasticsearch的作用 elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能,可以帮助我们从海量数据中快速找到需要的内容 例如:

    2024年02月08日
    浏览(60)
  • SpringCloud学习路线(11)——分布式搜索ElasticSeach场景使用

    一、DSL查询文档 (一)DSL查询分类 ES提供了基于JSON的DSL来定义查询。 1、常见查询类型: 查询所有: 查询出所有的数据,例如,match_all 全文检索(full text)查询: 利用分词器对用户输入内容分词,然后去倒排索引库中匹配。例如: match_query multi_match_query 精确查询: 根据精

    2024年02月16日
    浏览(39)
  • SpringCloud学习路线(12)——分布式搜索ElasticSeach数据聚合、自动补全、数据同步

    一、数据聚合 聚合(aggregations): 实现对文档数据的统计、分析、运算。 (一)聚合的常见种类 桶(Bucket)聚合: 用来做文档分组。 TermAggregation: 按照文档字段值分组 Date Histogram: 按照日期阶梯分组,例如一周一组,一月一组 度量(Metric)聚合: 用以计算一些值,比如

    2024年02月15日
    浏览(44)
  • SpringCloud Alibaba 之 Config配置中心,Redis分布式锁详解

    目录 1.服务配置中心 1.1 服务配置中心介绍  1.2 Nacos Config 实践 1.2.1 Nacos config 入门案例  1.2.2  Nacos 配置动态刷新 1.2.3 配置共享 1.2.4 nacos 几个概念   2.分布式锁 2.1 分布式锁介绍  2.2 Redisson  2.2.1 Redisson 实践  2.2.2 Redisson 原理   首先我们来看一下,微服务架构下关于配置文件

    2024年02月04日
    浏览(43)
  • 分布式搜索引擎(Elastic Search)+消息队列(RabbitMQ)部署(商城4)

    1、全文搜索 Elastic search可以用于实现全文搜索功能,例如商城中对商品搜索、搜索、分类搜索、订单搜索、客户搜索等。它支持复杂的查询语句、中文分词、近似搜索等功能,可以快速地搜索并返回匹配的结果。 2、日志分析 Elastic search可以用于实现实时日志分析,例

    2024年02月04日
    浏览(50)
  • Python爬虫分布式架构 - Redis/RabbitMQ工作流程介绍

    在大规模数据采集和处理任务中,使用分布式架构可以提高效率和可扩展性。本文将介绍Python爬虫分布式架构中常用的消息队列工具Redis和RabbitMQ的工作流程,帮助你理解分布式爬虫的原理和应用。 为什么需要分布式架构? 在数据采集任务中,单机爬虫可能面临性能瓶颈和资

    2024年02月11日
    浏览(44)
  • 【业务功能篇87】微服务-springcloud-本地缓存-redis-分布式缓存-缓存穿透-雪崩-击穿

      缓存的作用是减低对数据源的访问频率。从而提高我们系统的性能。 缓存的流程图 2.1 本地缓存   其实就是把缓存数据存储在内存中(Map String,Object ).在单体架构中肯定没有问题。 单体架构下的缓存处理 2.2 分布式缓存   在分布式环境下,我们原来的本地缓存就不是

    2024年02月10日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包