随笔分类 - 分布式专题
分布式相关组件
摘要:可视化管理工具kafka-manager 安装及基本使用可参考:https://www.cnblogs.com/dadonggg/p/8205302.html 生产环境机器部署规划 JVM参数设置 kafka是scala语言开发,运行在JVM上,需要对JVM参数合理设置,修改bin/kafka-st
阅读全文
摘要:Kafka设计原理架构图: Kafka核心总控制器Controller 在Kafka集群中会有一个或者多个broker,其中有一个broker会被选举为控制器(Kafka Controller),它负责管理整个集群中所有分区和副本的状态。 当某个分区的leader副本出现故障时,由控制器负责为该分区
阅读全文
摘要:Kafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性就是可以实时的处理大量数据以满足各种需求场景:比如基于hadoop的批处理系统、低延迟的实时系统、Storm/Spark流
阅读全文
摘要:相关性和相关性算分 搜索是用户和搜索引擎的对话,用户关心的是搜索结果的相关性。 是否可以找到所有相关的内容 有多少不相关的内容被返回了 文档的打分是否合理 结合业务需求,平衡结果排名 如何衡量相关性: Precision(查准率)―尽可能返回较少的无关文档 Recall(查全率)–尽量返回较多的相关
阅读全文
摘要:ES倒排索引原理 当数据写入 ES 时,数据将会通过 分词 被切分为不同的 term,ES 将 term 与其对应的文档列表建立一种映射关系,这种结构就是 倒排索引。如下图所示: 为了进一步提升索引的效率,ES 在 term 的基础上利用 term 的前缀或者后缀构建了 term index, 用于
阅读全文
摘要:cat API: /_cat/allocation #查看单节点的shard分配整体情况 /_cat/shards #查看各shard的详细情况 /_cat/shards/{index} #查看指定分片的详细情况 /_cat/master #查看master节点信息 /_cat/nodes #查看所
阅读全文
摘要:ElasticSearch安装运行 环境准备 运行Elasticsearch,需安装并配置JDK 设置$JAVA_HOME 各个版本对Java的依赖 https://www.elastic.co/support/matrix#matrix_jvm Elasticsearch 5需要Java 8以上的
阅读全文
摘要:全文检索: 数据分类: 结构化数据: 固定格式,有限长度 比如mysql存的数据非结构化数据:不定长,无固定格式 比如邮件,word文档,日志半结构化数据: 前两者结合 比如xml,html 搜索分类: 结构化数据搜索: 使用关系型数据库非结构化数据搜索:顺序扫描、全文检索 设想一个关于搜索的场景,
阅读全文
摘要:红锁算法 redis集群状态下的问题: 客户端A从master获取到锁 在master将锁同步到slave之前,master宕掉了。 slave节点被晋级为master节点 客户端B取得了同一个资源被客户端A已经获取到的另外一个锁。 安全失效! 解决集群下锁失效,参照redis官方网站针对redlo
阅读全文
摘要:基于redis实现锁机制 环境准备: 引入依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency
阅读全文
摘要:基于mysql实现锁机制 改造库存扣减情况从mysql中扣减: 新建数据库distributed以及创建库存表: /* Navicat MySQL Data Transfer Source Server : centos Source Server Version : 50716 Source Ho
阅读全文
摘要:背景介绍: 在应用开发中,特别是web工程开发,通常都是并发编程,不是多进程就是多线程。这种场景下极易出现线程并发性安全问题,此时不得不使用锁来解决问题。在多线程高并发场景下,为了保证资源的线程安全问题,jdk为我们提供了synchronized关键字和ReentrantLock可重入锁,但是它们只
阅读全文
摘要:分布式锁 01_环境准备 02_基于mysql实现锁机制 03_基于redis实现锁机制 04_Redisson分布式锁使用 ElasticSearch专题 01_ElasticSearch介绍 02_ElasticSearch安装 03_ElasticSearch基本使用 04_ElasticSe
阅读全文
摘要:(1)安装ik分词器 IK分词器下载地址https://github.com/medcl/elasticsearch-analysis-ik/releases 将ik分词器上传到服务器上,然后解压,并改名字为ik unzip elasticsearch-analysis-ik-5.6.8.zip m
阅读全文
摘要:Elasticsearch 安装 (1)docker镜像下载 docker pull elasticsearch:5.6.8 (2)安装es容器 docker run -di --name=changgou_elasticsearch -p 9200:9200 -p 9300:9300 elasti
阅读全文
摘要:Zookeeper 01 Zookeeper安装 02 Zookeeper命令操作 03 JavaAPI操作 04 分布式锁 05 集群
阅读全文
摘要:1、为什么使用消息队列? 考察点: (1)消息队列都有哪些使用场景? (2)然后你项目里具体是什么场景? (3)说说你在这个场景里用的消息队列是什么? 先说一下消息队列的常见使用场景吧,其实场景有很多,但是比较核心的有3个:解耦、异步、削峰 (1)解耦: 现场画个图来说明一下,A系统发送个数据到BC
阅读全文
摘要:消息可靠性的保障 消息补偿机制 这个图看起来好像很复杂,其实只做到了三件事情: 发消息 收到消息确认 检查比对是不是收到消息了 详细说明消息补偿流程 1.发生业务操作,业务数据写入数据库 2.生产者将消息发送给MQ的队列Q1 3.发送了一条与step2中一摸一样的延迟消息到对了Q3 4.消费者监听Q
阅读全文
摘要:摘要:实际生产应用中都会采用消息队列的集群方案,如果选择RabbitMQ那么有必要了解下它的集群方案原理 一般来说,如果只是为了学习RabbitMQ或者验证业务工程的正确性那么在本地环境或者测试环境上使用其单实例部署就可以了,但是出于MQ中间件本身的可靠性、并发性、吞吐量和消息堆积能力等问题的考虑,
阅读全文
摘要:过期时间TTL 过期时间TTL表示可以对消息设置预期的时间,在这个时间内都可以被消费者接收获取;过了之后消息将自动被删除。RabbitMQ可以对消息和队列设置TTL。目前有两种方法可以设置。 第一种方法是通过队列属性设置,队列中所有消息都有相同的过期时间。 第二种方法是对消息进行单独设置,每条消息T
阅读全文