
ES+MQ+MONGO
文章平均质量分 91
仰望星空的尘埃
https://github.com/a422478514
我未曾见过一个早起、勤奋、谨慎、诚实的人抱怨命运不好;良好的品格,优良的习惯,坚强的意志,是不会被假设所谓的命运击败的。
展开
-
ES搜索优化
今天来了解下 Elasticsearch(以下简称 ES) 中的 Query 和 Filter。在 ES 中,提供了 Query 和 Filter 两种搜索:Query Context:会对搜索进行相关性算分 Filter Context:不需要相关性算分,能够利用缓存来获得更好的性能举一个栗子,比如需要搜索一场电影,包含以下信息:评论中包含了烧脑,评分高于 8 分,同时上映时间在 2010 到 2020 之间。所以这个搜索包括了三个判断逻辑,针对三个不同的字段进行查询,如果需要满足这样转载 2021-06-08 18:45:50 · 1261 阅读 · 0 评论 -
从面试角度一文学完 Kafka
Kafka 是一个优秀的分布式消息中间件,许多系统中都会使用到 Kafka 来做消息通信。对分布式消息系统的了解和使用几乎成为一个后台开发人员必备的技能。今天就来从常见的 Kafka 面试题入手,和大家聊聊 Kafka 的那些事儿。思维导图讲一讲分布式消息中间件问题 什么是分布式消息中间件? 消息中间件的作用是什么? 消息中间件的使用场景是什么? 消息中间件选型? 消息队列分布式消息是一种通信机制,和 RPC、HTTP、RMI 等不一样,消息中转载 2020-10-22 11:54:50 · 237 阅读 · 0 评论 -
kafka为什么那么快
无论 kafka 作为 MQ 也好,作为存储层也罢,无非就是两个功能(好简单的样子),一是 Producer 生产的数据存到 broker,二是 Consumer 从 broker 读取数据。那 Kafka 的快也就体现在读写两个方面了,下面我们就聊聊 Kafka 快的原因。1. 利用 Partition 实现并行处理我们都知道 Kafka 是一个 Pub-Sub 的消息系统,无论是发布还是订阅,都要指定 Topic。Topic 只是一个逻辑的概念。每个 Topic 都包含一个或多个 Par转载 2020-08-09 11:21:38 · 466 阅读 · 0 评论 -
kafka是push还是pull
BrokerKafka集群包含一个或多个服务器,这种服务器被称为brokerTopic每条发布到Kafka集群的消息都有一个类别,这个类别被称为topic。(物理上不同topic的消息分开存储,逻辑上一个topic的消息虽然保存于一个或多个broker上但用户只需指定消息的topic即可生产或消费数据而不必关心数据存于何处)Partitionparition是物理上的概念,每个topic包含一个或多个partition,创建topic时可指定parition数量。每个partition对转载 2020-07-09 09:41:05 · 1594 阅读 · 0 评论 -
消息队列之 RabbitMQ
关于消息队列,从前年开始断断续续看了些资料,想写很久了,但一直没腾出空,近来分别碰到几个朋友聊这块的技术选型,是时候把这块的知识整理记录一下了。市面上的消息队列产品有很多,比如老牌的 ActiveMQ、RabbitMQ ,目前我看最火的 Kafka ,还有 ZeroMQ ,去年底阿里巴巴捐赠给 Apache 的 RocketMQ ,连 redis 这样的 NoSQL 数据库也支持 MQ 功能。总之这块知名的产品就有十几种,就我自己的使用经验和兴趣只打算谈谈 RabbitMQ、Kafka 和 Active转载 2020-06-29 15:38:35 · 193 阅读 · 0 评论 -
spring-rabbitmq优雅关机
1、添加一个jvm关闭状态标识status2、在rmq的消费者端代码创建aop切面,过滤onMessage方法,并添加判断status如果处于关闭状态则执行reject+requeue逻辑。(可以适当延时执行,防止消息循环通知)3、注册个JVM关闭的钩子...原创 2020-06-28 20:03:55 · 1775 阅读 · 0 评论 -
RabbitMQ镜像队列实现原理
一、镜像队列使用1.镜像队列作用 RabbitMQ默认集群模式,并不包管队列的高可用性,尽管队列信息,交换机、绑定这些可以复制到集群里的任何一个节点,然则队列内容不会复制,固然该模式解决一项目组节点压力,但队列节点宕机直接导致该队列无法应用,只能守候重启,所以要想在队列节点宕机或故障也能正常应用,就要复制队列内容到集群里的每个节点,须要创建镜像队列。2.策略设置镜像队列设置可以基于策略设置,策略设置可以通过如下两种方法:(1)RabbitMQ 管理后台(2)rabbitmqctl 设置转载 2020-06-28 17:53:59 · 1270 阅读 · 0 评论 -
Spring-RabbitMQ配置详解
一、virtual-hostvhost是rabbitmq分配权限的最小细粒度。比如我们可以为一个用户分配一个可以访问哪个或者哪一些vhost的权限。但是不能为用户分配一个可以访问哪一些exchange,或者queue的权限,因为rabbitmq的权限细粒度没有细化到交换器和队列,他的最小细粒度是vhost(vhost中包含许多的exchanges,queues,bingdings)。所以如果exchangeA 和queueA 只能让用户A访问,exchangeB 和queueB 只能让用户B访...原创 2020-06-28 17:05:49 · 2563 阅读 · 0 评论 -
十四、Spring集成RabbitMQ
前面几篇讲解了如何使用rabbitMq,这一篇主要讲解spring集成rabbitmq。 首先引入配置文件org.springframework.amqp,如下 <dependency> <groupId>org.springframework.amqp</groupId> <ar...转载 2019-04-10 11:12:48 · 329 阅读 · 0 评论 -
十三、rabbitMQ远程调用
前言:前面我们讲解的都是本地服务器,现在如果需要远程计算机上运行一个函数,等待结果。这就是一个不同的故事了,这种模式通常被称为远程过程调用或者RPC。本章教程我们使用RabbitMQ搭建一个RPC系统,一个客户端和一个可扩展的RPC服务器,现在我们开始吧。Callback queue一般做rpc在RabbitMQ是比较容易的,一个客户端发送一个请求信息和一个响应信息的服务器回复,为了得...转载 2019-04-10 11:11:47 · 205 阅读 · 0 评论 -
十二、rabbitMQ采用不同的交换机规则
在上一篇我们都是采用发送信息到队列然后队列把信息在发送到消费者,其实实际情况并非如此,rabbitMQ其实真正的思想是生产者不发送任何信息到队列,甚至不知道信息将发送到哪个队列。相反生产者只能发送信息到交换机,交换机接收到生产者的信息,然后按照规则把它推送到对列中,交换机是如何做处理他接收到的信息,并怎么样发送到特定的队列,那么这一篇主要是讲解交换机的规则。一:发布/订阅在上一篇说到的队列...转载 2019-04-10 11:10:59 · 186 阅读 · 0 评论 -
十一、java简单的实现RabbitMQ
前言:在这里我将用java来简单的实现rabbitMQ。下面我们带着下面问题来一步步的了解和学习rabbitMQ。1:如果消费者连接中断,这期间我们应该怎么办2:如何做到负载均衡3:如何有效的将数据发送到相关的接收者?就是怎么样过滤4:如何保证消费者收到完整正确的数据5:如何让优先级高的接收者先收到数据一:"Hello RabbitMQ"下面有一幅图,其中P表示生产者,...转载 2019-04-10 11:09:26 · 158 阅读 · 0 评论 -
二、kafka消息与同步机制
如上图所示:Producer根据指定的partition方法(默认round-robin、hash等),将消息发布到指定topic的partition里面;kafka集群接收到Producer发过来的消息后,将其持久化到硬盘,并保留消息指定时长(可配置),而不关注消息是否被消费;Consumer从kafka集群pull数据,并控制获取消息的offset。下面讨论以下Kafka如何确保消息在...原创 2018-10-23 16:10:46 · 3175 阅读 · 0 评论 -
三、可靠消息服务
人们一般用MQ只是实现了最大努力通知模型。我们最近尝试实现一种事务消息解决方案。接上文:分布式事务?No, 最终一致性 - 知乎专栏我们希望这个方案是轻量级的,能实际解决目前业务痛点。本文几乎看不到任何理论分析,只谈做什么,怎么做。因为涉及到一些内部资料,有所省略。实现事务消息核心是需要有一个支持消息重试的MQ。经调研,我厂有个自研的基于Redis的延时MQ服务。我们暂且叫他Del...原创 2018-06-07 14:02:13 · 2763 阅读 · 0 评论 -
四、ActiveMq---JMS的实现
目录: 一:JMQ的两种消息模式 1.1:点对点的消息模式 1.2:订阅模式二:点对点的实现代码 2.1:点对点的发送端 2.2:点对点的接收端三:订阅/发布模式的实现代码 3.1:订阅模式的发送端 3.2:订阅模式的接收端四:发送消息的数据类型 4.1:传递javabean对象 4.2:发送文件五:Activ...原创 2018-05-01 21:50:52 · 258 阅读 · 0 评论 -
五、Mongo常用命令
1:启动和停止Mongodb 1)从命令行启动 执行mongod,启动MongoDB服务器,mongod有很多可配置的启动选项,可以使用mongod --help查看所有选项 --dbpath:指定数据目录,默认是/data/db下,每个mongod进程都需要独立的数据目录,加入有3个mongod实例,就必须要有3个独立的数据目录。当mongod启动时,会在数据目...原创 2018-08-24 11:23:41 · 1091 阅读 · 0 评论 -
六、Mongo数据库操作命令
一、数据库常用命令二、Collection聚集集合三、用户相关 四、聚集集合查询 五、索引六、修改、添加、删除集合数据七、语句块操作 八、其他 MongoDB文档常用操作一、增删改查二、索引:三、固定集合(capped collection)四、备份(mongodump)和恢复(mongorestore)五、导入(mongoimpor...原创 2018-08-24 11:25:20 · 870 阅读 · 0 评论 -
七、MongoTemplate使用介绍
一、mongo实体类的映射实体类/* *功能:用户 *@author:victor.z *@date:2018/8/17 下午5:37 *@version:1.0 */@Document(collection="user")public class User implements Serializable { @Id private String id; ...原创 2018-08-27 17:07:50 · 9416 阅读 · 0 评论 -
八、ES倒排索引
如何快速检索?Elasticsearch 是通过 Lucene 的倒排索引技术实现比关系型数据库更快的过滤。特别是它对多条件的过滤支持非常好,比如年龄在 18 和 30 之间,性别为女性这样的组合查询。倒排索引很多地方都有介绍,但是其比关系型数据库的 b-tree 索引快在哪里?到底为什么快呢?笼统的来说,b-tree 索引是为写入优化的索引结构。当我们不需要支持快速的更新的时候,可以用预...原创 2019-01-16 20:08:10 · 1187 阅读 · 0 评论 -
九、消息队列总结
前言:关于消息队列应该大家都不陌生,在实际的项目中消息队列也无处不在,今天我和大家分享一下关于消息队列的问题。1、消息队列定义消息队列大家又经常称为MQ(message queue),从字面的含义来看就是一个存放消息的容器。2、消息队列应用场景2.1、异步处理2.2、系统解耦2.3、流量削峰3、消息队列顺序性 提到mq那么我们必然会讨论mq顺序性...转载 2019-04-10 11:06:02 · 445 阅读 · 0 评论 -
十、rabbitMQ的安装和配置
在Windows下进行rabbitMQ的安装第一步:软件安装如果安装rabbitMQ首先安装基于erlang语言支持的OTP软件,然后在下载rabbitMQ软件进行安装(安装过程都是下一步,在此不在说了)第二步:环境变量配置如果上面完成安装以后要进行环境变量的配置,首先配置ERLANG_HOME如下图(变量值就是你按照otp软件的路径)然后在配置RABBITMQ_SERVE...转载 2019-04-10 11:07:11 · 116 阅读 · 0 评论 -
一、Kafka概念入门
Kafka是分布式发布-订阅消息系统。它最初由LinkedIn公司开发,之后成为Apache项目的一部分。Kafka是一个分布式的,可划分的,冗余备份的持久性的日志服务。它主要用于处理活跃的流式数据。在大数据系统中,常常会碰到一个问题,整个大数据是由各个子系统组成,数据需要在各个子系统中高性能,低延迟的不停流转。传统的企业消息系统并不是非常适合大规模的数据处理。为了已在同时搞定在线应用(消息)...原创 2018-10-23 16:06:40 · 243 阅读 · 0 评论