SpringCloud(二)Docker、Spring AMQP、ElasticSearch

文章目录

  • Docker
    • Docker与虚拟机
    • Docker架构
      • 镜像、容器、镜像托管平台
      • Docker架构
      • Docker实践
  • Spring AMQP
    • 简单使用案例
    • 工作队列- WorkQueue
    • 发布订阅服务
      • FanoutExchange
      • DirectExchange
      • TopicExchange
    • 消息转换器
  • ElasticSearch
    • 倒排索引
    • IK分词器
      • IK分词拓展与停用字典
    • 操作索引库
      • mapping映射属性
      • 创建索引库
      • 查询、删除、修改索引库
    • 文档操作
      • 新增、查询、删除文档
      • 修改文档
    • RestClient
      • 使用案例
      • 操作文档案例
    • DSL查询文档

Docker

Docker是一个快速交付应用、运用应用的技术:
1、Docker可以将程序及其依赖、运行环境一起打包为一个镜像,可以迁移到任意的Linux操作系统。
2、运用时利用沙箱机制形成隔离容器,各个容器之间互不干扰。
3、启动、移除都可以通过一行命令完成,方便快捷。

Docker要解决的问题:
没有Docker时:
在这里插入图片描述

有Docker时:
在这里插入图片描述
Docker怎么解决不同Linux操作系统的问题呢?
在这里插入图片描述
在这里插入图片描述
总结:
在这里插入图片描述

Docker与虚拟机

  • Docker是将应用程序所依赖的环境库函数、包含操作系统的库函数都打包为一个容器。
  • 虚拟机则是通过Hypervisor技术来模拟硬件系统,使得上层应用感觉运行在一个新的操作系统中。
  • Docker的性能接近原生,硬盘占用一般为MB级,启动时间为秒级,而虚拟机性能则较差,硬盘占用一般为GB,启动时间为分钟级。
  • Docker是一个系统进程;而虚拟机是运行在操作系统中的操作系统。
  • Docker体积小,启动速度快,性能好,虚拟机体积大,启动速度慢,性能一般。

在这里插入图片描述

Docker架构

镜像、容器、镜像托管平台

镜像: Docker将应用程序及其所需要的依赖、环境、配置等文件打包在一起,称为镜像。
**容器:**镜像中的应用程序运行后形成的进程就是容器,只是Docker会给容器做隔离,对外不可见。
DockerHub:DockerHub是一个Docker镜像的托管平台,这样的平台称为Docker Register。国内也有类似于DockerHub的公开服务,比如阿里云镜像库等。

Docker架构

在这里插入图片描述

在这里插入图片描述

Docker实践

Spring AMQP

  • AMQP(Advanced Message Queuing Protocol)用于在应用程序之间传递业务消息的开放标准,该协议与语言和平台无关,是一种标准。
  • Spring AMQP是基于AMQP协议定义的一套API规范,提供了模板来发送和接收消息,包含了两部分内容:
    • spring-amqp是基础抽象
    • spring-rabbit是底层的默认实现

简单使用案例

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

工作队列- WorkQueue

在这里插入图片描述

在这里插入图片描述

消息发布者:约每秒发送50条消息

消息接收者:消费者1每秒消费50条,消费者2每秒消费5条。
在这里插入图片描述
结果:
消费者1消费偶数序号的消息,很快就处理完毕,约1秒。

在这里插入图片描述
消费者2消费奇数序号的消息,耗时约5秒才完成。
在这里插入图片描述

消息被平均的分配给了两个消费者,没有考虑消费者的具体消费能力。这是消息队列默认的消息预取机制导致的结果,消费者1和2都预取了25条消息。

通过修改配置文件,更改消息预取配置,预取数设置为1.
在这里插入图片描述
结果:
消费者1消费了大量的消息,能者多劳,在约1秒内,消费掉了所有的消息。

在这里插入图片描述
在这里插入图片描述

发布订阅服务

发布订阅模式与之前的案例区别就是允许将同一个消息发送给多个消费者,实现方式就是加入了exchange(交换机)。
在这里插入图片描述

FanoutExchange

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
交换机绑定完毕后,可以在rabbit mq的前台看到绑定关系:
在这里插入图片描述

消费者:
在这里插入图片描述
发送者向交换机发送消息:
在这里插入图片描述

DirectExchange

DirectExchange通过bindingKey比对,决定是否想队列发送消息。

如果多个队列绑定了相同的key,那么DirectExchange是可以模拟出FanOutExchange的效果的。
在这里插入图片描述

在本次案例中,我们在注解@RabbitListener中声明Exchange、Queue、RoutingKey,因为每次通过@Bean的形式声明绑定关系会比较繁琐。

在这里插入图片描述
直接在消费者端@RabbitListener中声明队列、交换机和绑定关系:
在这里插入图片描述
启动后,在Rabbit前台可以看到交换机和队列均已生成:

在这里插入图片描述
在这里插入图片描述

TopicExchange

TopicExchange与DirectExchange最大的区别在于,Topic 是基于话题匹配,可以使用通配符,匹配BindingKey。
在这里插入图片描述
在这里插入图片描述
TopicExchange与DirectExchange声明的方式基本是一致的:
在这里插入图片描述

消息转换器

在使用SpringAMQP时,发送消息的参数类型为Object,因此可以发送任意类型的消息,但是SpringAMQP默认使用的是JDK自带的序列化方式,序列化效率低。
在这里插入图片描述
使用json序列化之后:
发送一个Map对象:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

ElasticSearch

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

倒排索引

什么是文档和词条?

  • 每一条数据就是一个文档
  • 对文档中的内容进行分词,得到的词语就是词条。

什么是正向索引和倒排索引?

  • 基于文档id创建索引,查询词条时必须先找到文档,而后判断是否包含词条。
  • 对文档内容分词,对词条创建索引,并记录词条所在的文档的信息,查询时先根据词条查询到文档id,而后获取到文档。

在这里插入图片描述
在这里插入图片描述

IK分词器

在这里插入图片描述

IK分词拓展与停用字典

IK分词器基于自有的字典进行分词,然后网络热门词汇都是实时更新的,还有些时候,需要对敏感词进行过滤,这时就需要用到IK分词器的拓展和停用字典。

例如下边的例子中,“白嫖”、“奥利给”等新兴词汇没有被收录IK分词器的词典,因此没有成功被分词。

在这里插入图片描述

在这里插入图片描述

在ElasticSearch的配置文件中设置拓展字典路径:
在这里插入图片描述
在ext.dir添加:
在这里插入图片描述
在stopword.dir添加:
在这里插入图片描述

操作索引库

mapping映射属性

  • mapping映射对文档进行约束,比如字符串类型,分为text(可分词的文本)和keyword(精确值,包含国家名、品牌名、ip等)。

  • mapping映射属性虽然没有数组类型,但是每个类型的字段都允许对应多个值,视为该类型的数组。

  • index:默认为true,即为每个属性字段都添加倒排索引,实际上有些字段是无需索引的,比如ip,那么就可以将其设置为false。

在这里插入图片描述

创建索引库

PUT
在这里插入图片描述

查询、删除、修改索引库

在这里插入图片描述

在这里插入图片描述

文档操作

新增、查询、删除文档

在这里插入图片描述

修改文档

在这里插入图片描述
在这里插入图片描述

RestClient

在这里插入图片描述

使用案例

步骤一导入数据模型:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

将Client作为成员变量,使用@BeforeEach,给Client成员赋值,主要就是连接上ES的服务器ip。

使用@AfterEach,在结束时释放掉Client。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

操作文档案例

文档操作的基本步骤:

  1. 初始化RestHighLevelClient
  2. 创建XxxRequest,XXX是index(新建文档)、Get(查询)、Update(更新)、Delete(删除)
  3. 准备参数(Index和Update时需要)
  4. 发送请求。调用RestHighLevelClient#.xxx()方法,xxx是index、get、update、delete。

在这里插入图片描述
从数据库查询一条酒店信息,并新增文档到ES:
在这里插入图片描述
根据id查询文档:
在这里插入图片描述
根据id修改酒店数据:

在这里插入图片描述
根据id删除文档:
在这里插入图片描述
批量导入酒店数据到ES:
在这里插入图片描述
在这里插入图片描述

DSL查询文档

DSL(Domain Specific Language),一种特定领域的查询语言,用于构建复杂的查询和聚合操作。

在Elasticsearch中,可用DSL语法来定义查询和过滤条件,以及执行聚合操作。
DSL语法具有JSON格式(敲重点,要考),因此它非常易于阅读和编写。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/149011.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

批量剪辑技巧:视频去色处理,让色彩焕然一新!

你是否曾经遇到过这样的问题:大量视频需要处理,但色彩总是达不到你的要求?现在,我们将向你展示如何通过批量剪辑技巧,轻松去除视频原色,让色彩焕然一新! 首先,我们要进入【视频剪辑…

(粗糙的笔记)动态规划

动态规划算法框架: 问题结构分析递推关系建立自底向上计算最优方案追踪 背包问题 输入: n n n个商品组成的集合 O O O,每个商品有两个属性 v i v_i vi​和 p i p_i pi​,分别表示体积和价格背包容量 C C C 输出: …

Linux学习之悟空派上实现OLED的无线网IP及CPU温度显示【守护进程】

起因 最近各种网购平台似乎都在推送99元的悟空派全志H3的开发板,出于好奇就买了一块来试试水,由于这块板子基本上和orangepi-Zero的硬件结构一模一样,所以设备树、boot这些就用orangepi现成的部件了。 因为本人比较喜欢使用SSH操作&#xff…

回归预测 | MATLAB实现PSO-SVR粒子群优化支持向量机回归多输入单输出预测

回归预测 | MATLAB实现PSO-SVR粒子群优化支持向量机回归多输入单输出预测 目录 回归预测 | MATLAB实现PSO-SVR粒子群优化支持向量机回归多输入单输出预测预测效果基本介绍模型描述程序设计预测效果 <

【MyBatis-Plus】快速精通Mybatis-plus框架—快速入门

大家在日常开发中应该能发现&#xff0c;单表的CRUD功能代码重复度很高&#xff0c;也没有什么难度。而这部分代码量往往比较大&#xff0c;开发起来比较费时。 因此&#xff0c;目前企业中都会使用一些组件来简化或省略单表的CRUD开发工作。目前在国内使用较多的一个组件就是…

华为云云耀云服务器L实例评测|安装搭建学生成绩管理系统

1.前言概述 华为云耀云服务器L实例是新一代开箱即用、面向中小企业和开发者打造的全新轻量应用云服务器。多种产品规格&#xff0c;满足您对成本、性能及技术创新的诉求。云耀云服务器L实例提供丰富严选的应用镜像&#xff0c;实现应用一键部署&#xff0c;助力客户便捷高效的在…

全排列[中等]

优质博文&#xff1a;IT-BLOG-CN 一、题目 给定一个不含重复数字的数组nums&#xff0c;返回其所有可能的全排列。你可以按任意顺序返回答案。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3] 输出&#xff1a;[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 示例…

JAVA面经整理(8)

一)为什么要有区&#xff0c;段&#xff0c;页&#xff1f; 1)页是内存和磁盘之间交互的基本单位内存中的值修改之后刷到磁盘的时候还是以页为单位的索引结构给程序员提供了高效的索引实现方式&#xff0c;不过索引信息以及数据记录都是记录在文件上面的&#xff0c;确切来说是…

【牛客网-面试必刷TOP 101】01链表

BM1 反转链表 解题思路 第一种方法&#xff1a;借助栈 1. 栈的特点是先进后出&#xff0c;用stack来存储链表&#xff0c;之后新建一个头节点&#xff0c;按出栈顺序拼接形成新的链表。 2. 注意&#xff0c;最后一个节点的next要赋值null 3. 空间复杂度O(N), 时间复杂度O(N)J…

ThemeForest – Canvas 7.2.0 – 多用途 HTML5 模板

ThemeForest 上的 HTML 网站模板受到全球数百万客户的喜爱。与包含网站所有页面并允许您在 WP 仪表板中自定义字体和样式的 WordPress 主题不同&#xff0c;这些设计模板是用 HTML 构建的。您可以在 HTML 编辑器中编辑模板&#xff0c;但不能在 WordPress 上编辑模板&#xff0…

医疗器械标准目录汇编2022版共178页(文中附下载链接!)

为便于更好地应用医疗器械标准&#xff0c;国家药监局医疗器械标准管理中心组织对现行1851项医疗器械国家和行业标准按技术领域&#xff0c;编排形成《医疗器械标准目录汇编&#xff08;2022版&#xff09;》 该目录汇编分为通用技术领域和专业技术领域两大类&#xff0c;通用…

ChatGPT付费创作系统V2.3.4独立版 +WEB端+ H5端 + 小程序最新前端

人类小徐提供的GPT付费体验系统最新版系统是一款基于ThinkPHP框架开发的AI问答小程序&#xff0c;是基于国外很火的ChatGPT进行开发的Ai智能问答小程序。当前全民热议ChatGPT&#xff0c;流量超级大&#xff0c;引流不要太简单&#xff01;一键下单即可拥有自己的GPT&#xff0…

14链表-环形链表、龟兔赛跑算法

目录 LeetCode之路——141. 环形链表 分析&#xff1a; 解法一&#xff1a;哈希表 解法二&#xff1a;龟兔赛跑 LeetCode之路——141. 环形链表 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针…

优化方法的应用(optimtool.example)

import optimtool as oo from optimtool.base import np, sp, pltpip install optimtool>2.4.2优化方法的应用&#xff08;optimtool.example&#xff09; import optimtool.example as oeLasso问题&#xff08;Lasso&#xff09; oe.Lasso.[函数名]([矩阵A], [矩阵b], [因…

矩阵的c++实现(2)

上一次我们了解了矩阵的运算和如何使用矩阵解决斐波那契数列&#xff0c;这一次我们多看看例题&#xff0c;了解什么情况下用矩阵比较合适。 先看例题 1.洛谷P1939 【模板】矩阵加速&#xff08;数列&#xff09; 模板题应该很简单。 补&#xff1a;1<n<10^9 10^9肯定…

QGIS文章四——对遥感影像进行土地类型分类

关于土地类型分类&#xff0c;按照性质、用途、利用现状有不同的分类标准。 一、按照国家土地性质分类标准&#xff0c;一般分五类:商业用地、综合用地、住宅用地、工业用地和其他用地。 二、按照用途进行土地分类&#xff1a;可以分为农用地、建设用地和未利用土地&#xff0c…

专题一:双指针【优选算法】

双指针应用场景&#xff1a; 数组划分、数组分块 目录 一、移动0 二、复写0 从后向前 三、快乐数 链表带环 四、盛水最多的容器 单调性双指针 五、有效三角形个数 单调性双指针 六、和为s的两个数字 七、三数之和 细节多 需再练 一、移动0 class Solution { public:void move…

【iptables 实战】9 docker网络原理分析

在开始本章阅读之前&#xff0c;需要提前了解以下的知识 阅读本节需要一些docker的基础知识&#xff0c;最好是在linux上安装好docker环境。提前掌握iptables的基础知识&#xff0c;前文参考【iptables 实战】 一、docker网络模型 docker网络模型如下图所示 说明&#xff1…

如何禁用Windows 10快速启动(以及为什么要这样做)

如果您不想启用Windows 10快速启动&#xff0c;则可以相对轻松地禁用它。 快速启动是一项功能&#xff0c;首先在 Windows 8 中作为快速启动实现&#xff0c;并延续到 Windows 10&#xff0c;让您的 PC 更快地启动&#xff0c;因此得名。虽然这个方便的功能可以通过将操作系统…

MySQL 事务隔离级别与锁机制详解

目录 一、前言二、事务及其ACID属性三、并发事务处理带来的问题四、事务隔离级别4.1、隔离级别分类4.2、查看当前数据库的事务隔离级别:4.3、临时修改数据库隔离级别&#xff08;重启MySQL后恢复到配置中的级别&#xff09; 五、表数据准备六、MySQL常见锁介绍5.1、锁分类5.2、…