自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(287)
  • 资源 (6)
  • 收藏
  • 关注

原创 kafka配置消费者重要参数

这个属性的默认值为5分钟。如果消费者没有在session.timeout.ms指定的时间内发送心跳给群组协调器,则会被认为已“死亡”,协调器就会触发再均衡,把分区分配给群组里的其他消费者。它的默认值是latest,意思是说,如果没有有效的偏移量,那么消费者将从最新的记录(在消费者启动之后写入Kafka的记录)开始读取。如果使用轮询策略为消费者C1和消费者C2分配分区,那么消费者C1将分配到主题T1的分区0和分区2以及主题T2的分区1,消费者C2将分配到主题T1的分区1以及主题T2的分区0和分区2。

2024-05-22 00:07:37 946

原创 Elasticsearch检索的原理

也就是说,假设一个索引中有5个主分片,每个分片一个副本分片,则一共10个分片(5主分片+5副本分片),一次搜索请求会由5个分片来完成(这5个分片可能是主分片,也可能是副本分片)。它是一个用于负载平衡的策略,可以适应不同的请求类型和当前系统状态的变化,并选择最佳的副本分片来响应请求。举例来说,对于需要更多资源的请求,自适应副本选择策略可以选择资源更充足的副本分片,而对于需要更快响应的请求,它可以选择负载更轻的副本分片。3)选择要在查询中使用的索引,根据路由机制选择待检索的分片(主分片或者副本分片)。

2024-05-20 06:31:57 330 1

原创 Elasticsearch段合并的原理

自动刷新流程每秒会创建一个新的段(由动态配置参数refresh_interval决定),导致短时间内段数量暴增。而段数目太多会带来众多问题,包含但不限于如下几点。❑资源消耗:每一个段都会消耗文件句柄、内存和CPU运行周期。❑搜索变慢:每个搜索请求都必须轮流检查每个段,所以段越多,搜索也就越慢。Elasticsearch通过在后台进行段合并来解决上述问题。小段被合并到大段,这些大段再被合并到更大的段。段合并的时候会将那些旧的已删除文档从文件系统中清除。

2024-05-20 06:27:04 884 1

原创 ElasticSearch 查询优化之skipped shards

生产环境中大数据量的查询可以通过skipped shards 时间来过滤分片来提高查询效率。通过timeDate可以跳过149个分片。待查询的分片数大于 128。

2024-05-19 15:28:59 220 1

原创 Elasticsearch8.x 向量搜索实现图搜图及文搜图

【代码】Elasticsearch8.x 向量搜索实现图搜图及文搜图。

2024-05-19 15:19:15 223

原创 Elasticsearch写入的核心概念

也就是说,新插入的文档在刷新到段(内存中)之前是不能被搜索到的,如图所示。使用倒排索引的坏处是更新了词典词库后,老的索引不能生效,如果要使其可搜索,则必须重建整个索引或者借助reindex操作迁移索引。为了防止Elasticsearch集群宕机造成数据丢失,为了保证可靠存储,一个文档被索引之后,Elasticsearch就会将其添加到内存缓冲区,并且同时写入事务日志文件(translog)中。❑如果设置了副本,则数据会先写入主分片,主分片再同步到副本分片,同步操作会加重磁盘IO负担,间接影响写入性能。

2024-05-17 06:37:45 559

原创 Elasticsearch的并发控制策略

这两个参数共同提供了一种强大的控制机制,确保只有当所提供的版本信息与文档的最新状态一致时,才会执行写入操作。

2024-05-16 07:42:14 425

原创 elasticsearch如何定位红色或黄色的索引

在这个例子中,它被设置为n(节点名称)、index(索引名)、shard(分片编号)、prirep(是否为主分片)、state(分片状态)、sto(存储方式)、sc(分片大小)、unassigned.reason(未分配原因)和unassigned.details(未分配详细信息)。该API用于查询集群中的所有分片信息,包括节点名称、索引名、分片编号、是否为主分片、分片状态、存储方式、分片大小、未分配原因和详细信息,并按照存储方式和索引名称进行排序。为此,让集群进一步返回给定分片的当前分配情况和逻辑。

2024-05-16 07:21:12 777

原创 elasticsearch使用Ngram实现任意位数手机号搜索

当对keyword类型的字段进行高亮查询时,若值为123asd456,查询sd4,则高亮结果是<em>123asd456<em>。那么,有没有办法只对sd4高亮呢?用一句话来概括问题:明明只想查询ID的一部分,但高亮结果是整个ID串,此时应该怎么办?Ngram是一种基于统计语言模型的算法。Ngram基本思想是将文本里面的内容按照字节大小进行滑动窗口操作,形成长度是N的字节片段序列。此时每一个字节片段称为gram。

2024-05-15 06:39:40 725

原创 Elasticsearch分词及其自定义

业务需求是这样的:有一个作者字段,比如Li,LeiLei;Han,MeiMei以及LeiLei Li……现在要对其进行精确匹配。对此,你有什么想法?你可能会考虑用自定义分词的方式,通过分号分词。但是这样的话,如果检索Li,LeiLei,那么LeiLei Li就不能被搜索到,而我们希望LeiLei Li也被搜索到。并且对于这种分词,Li,LeiLei中间不加逗号也不能匹配到。但是为什么在映射里面添加停用词也是无效的呢?

2024-05-15 05:59:27 1071

原创 Elasticsearch解决字段膨胀问题

"host": {Flattened的本质是将原来一个复杂的Object或者Nested嵌套多字段类型统一映射为扁平的单字段类型。这里要强调的是:不管原来内嵌多少个字段、内嵌多少层,利用Flattened类型都能一下“拉平”

2024-05-14 07:01:36 937

原创 elasticsearch 动态映射

在以上实战中,对应第一种情况,Object对象可以添加新的属性,添加了last字段。举例:string类型匹配为text和keyword两种类型,但实际用户极有可能只期望排序和聚合的keyword类型,或者只需要存储text类型,如网页正文内容只需要全文检索,不需要排序和聚合操作。答:boolean类型、float类型、long类型、Object类型、Array类型、date类型、字符串类型。获取映射发现,create_date是text和keyword组合类型,不是我们期望的date类型。

2024-05-14 06:41:25 703

原创 Elasticsearch映射定义

映射类似于关系型数据库中的Schema(模式)。Schema在关系型数据库中是指库表包含的字段及字段存储类型等基础信息。映射定义由两部分组成:元字段、数据类型字段。

2024-05-13 18:04:21 496

原创 基于docker 的elasticsearch冷热分离及生命周期管理

我们可以清晰看到,插入第6条数据会触发max_docs:5的条件,原来的索引my-index-20250709-000001会继续保留,而新写入的第6条数据滚动到了新索引my-index-20250709-000002中。目前采用冷热集群架构,其中热节点使用SSD,并具有良好的索引和搜索性能,将数据保存4天后推送到温节点中,并使用HDD进行存储。某客户的线上业务场景如下:系统每天增加6TB日志数据,高峰时段的写入和查询频率都很高,导致Elasticsearch集群压力大,经常出现查询缓慢的问题。

2024-05-13 07:50:12 1356 1

原创 基于docker安装flink

注意:当你在流式查询上使用这种模式时,Flink 会将结果持续的打印在当前的控制台上。如果流式查询的输入是有限数据集,那么 Flink 在处理完所有的输入数据之后,作业会自动停止,同时控制台上的打印也会自动停止。滚动窗口可以定义在事件时间(批处理、流处理)或处理时间(流处理)上。Tableau模式(tableau mode)更接近传统的数据库,会将执行的结果以制表的形式直接打在屏幕之上。表格模式(table mode)在内存中物化结果,并将结果用规则的分页表格的形式可视化展示出来。

2024-05-09 08:47:58 373

原创 基于K8S构建Jenkins持续集成平台

NFS(Network File System),它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。我们可以利用NFS共享Jenkins运行的配置文件、Maven的仓库依赖文件等Jenkins-Master在构建Job的时候,Kubernetes会创建Jenkins-Slave的Pod来完成Job的构建。我们选择运行Jenkins-Slave的镜像为官方推荐镜像:jenkins/inbound-agent:4.13.3-1。

2024-05-05 10:07:44 1223 2

原创 Jenkins集成Kubernetes 部署springboot项目

在尝试用kubernetes的yml文件启动pipeline服务时,会出现Kubernetes无法拉取镜像的问题,这里需要在kubernetes所在的Linux中配置Harbor服务信息,并且保证Kubernetes可以拉取Harbor上的镜像。配置Jenkins的目标服务器,可以将yml文件传输到K8s的Master上。设置执行kubectl的脚本到Jenkinsfile。将pipeline.yml配置到Gitlab中。

2024-05-04 10:24:08 611 2

原创 Jenkins流水线部署springboot项目

之前采用Jenkins的自由风格构建的项目,每个步骤流程都要通过不同的方式设置,并且构建过程中整体流程是不可见的,无法确认每个流程花费的时间,并且问题不方便定位问题。Jenkins的Pipeline可以让项目的发布整体流程可视化,明确执行的阶段,可以快速的定位问题。并且整个项目的生命周期可以通过一个Jenkinsfile文件管理,而且Jenkinsfile文件是可以放在项目中维护。所以Pipeline相对自由风格或者其他的项目风格更容易操作。

2024-05-03 21:33:00 949 2

原创 centos 部署harbor并整合jenkins发布springboot

前面在部署项目时,我们主要采用Jenkins推送jar包到指定服务器,再通过脚本命令让目标服务器对当前jar进行部署,这种方式在项目较多时,每个目标服务器都需要将jar包制作成自定义镜像再通过docker进行启动,重复操作比较多,会降低项目部署时间。我们可以通过Harbor作为私有的Docker镜像仓库。让Jenkins统一将项目打包并制作成Docker镜像发布到Harbor仓库中,只需要通知目标服务,让目标服务统一去Harbor仓库上拉取镜像并在本地部署即可。

2024-05-03 12:06:06 906

原创 jenkins 部署springboot 项目

基于Jenkins拉取GitLab的SpringBoot代码进行构建发布到测试环境实现持续集成基于Jenkins拉取GitLab指定发行版本的SpringBoot代码进行构建发布到生产环境实现CD实现持续部署。

2024-05-03 09:04:42 786

原创 docker 构建 gitlab、jenkins

Jenkins最主要的工作就是将GitLab上可以构建的工程代码拉取并且进行构建,再根据流程可以选择发布到测试环境或是生产环境。Jenkins最强大的就在于插件,Jenkins官方提供了大量的插件库,来自动化CI/CD过程中的各种琐碎功能。Jenkins应用广泛,大多数互联网公司都采用Jenkins配合GitLab、Docker、K8s作为实现。准备好GitLab仓库中的项目,并且通过Jenkins配置项目的实现当前项目的。一般是GitLab上的代码经过大量的测试后,确定发行版本,再发布到生产环境。

2024-05-01 22:40:54 764

原创 Springboot基于健康检查服务预热

用于服务启动之后,健康检查完成才会给服务流量。

2024-05-01 17:39:42 407 1

原创 rocketmq源码之consumer

文章目录2.5 Consumer2.5.1 消息消费概述2.5.2 消息消费初探2.5.3 消费者启动流程2.5.4 消息拉取1)PullMessageService实现机制2)ProcessQueue实现机制3)消息拉取基本流程1.客户端发起拉取请求2.消息服务端Broker组装消息3.消息拉取客户端处理消息4.消息拉取总结4)消息拉取长轮询机制分析2.5.5 消息队列负载与重新分布机制2.5.6 消息消费过程2.5.7 定时消息机制2.5.8 顺序消息2.5.9 小结2.5 Consumer2.5.

2022-05-19 20:00:00 346 1

原创 rocketmq源码之消息存储

文章目录2.4.1 消息存储核心类2.4.2 消息存储流程2.4.3 存储文件2.4.4 存储文件内存映射1)MappedFileQueue2)MappedFile3)TransientStorePool2.4.5 实时更新消息消费队列与索引文件1)转发到ConsumerQueue2)转发到Index2.4.6 消息队列和索引文件恢复1)存储文件加载2)正常恢复3)异常恢复2.4.7 刷盘机制同步刷盘异步刷盘2.4.8 过期文件删除机制2.4.9 小结2.4.1 消息存储核心类private fina

2022-05-18 21:30:00 487

原创 rocketmq源码分析之Producer

文章目录1.3.1 方法和属性1)主要方法介绍1.3.2 启动流程1.3.3 消息发送1)验证消息2)查找路由3)选择队列4)发送消息1.3.4 批量消息发送消息生产者的代码都在client模块中,相对于RocketMQ来讲,消息生产者就是客户端,也是消息的提供者。1.3.1 方法和属性1)主要方法介绍//创建主题void createTopic(final String key, final String newTopic, final int queueNum) throws MQCl

2022-05-17 14:01:22 522

原创 idea 源码启动rocketmq

文章目录1.1 环境搭建1.1.1 源码拉取1.1.2 导入IDEA1.1.3 调试1)启动NameServer2)启动Broker3)发送消息4)消费消息2.1 rocketmq dashboard搭建1.1 环境搭建依赖工具JDK :1.8+MavenIntelliJ IDEA1.1.1 源码拉取从官方仓库 https://github.com/apache/rocketmq clone或者download源码。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(i

2022-05-16 21:15:00 596

原创 rocketmq相关总结

文章目录1.1 消息存储1.1.1 存储介质1.1.3 消息的存储和发送1)消息存储2)消息发送1.1.4 消息存储结构1.1.5 刷盘机制1)同步刷盘2)异步刷盘1.2 高可用性机制1.2.1 消息消费高可用1.2.2 消息发送高可用1.2.3 消息主从复制1.3 负载均衡1.3.1 Producer负载均衡1.3.2 Consumer负载均衡1)集群模式1.4 消息重试1.4.1 顺序消息的重试1.4.2 无序消息的重试1)重试次数2)配置方式1.5 死信队列1.5.1 死信特性1.5.2 查看死信信息

2022-05-16 20:00:00 221

原创 rocketmq源码分析之NameServer、Broker

文章目录1.2.1 架构设计1.2.2 启动流程步骤一步骤二步骤三1.2.3 路由管理1.2.3.1 路由元信息1.2.3.2 路由注册1)发送心跳包2)处理心跳包1.2.3.3 路由删除1.2.3.4 路由发现1.2.4 小结1.2.1 架构设计消息中间件的设计思路一般是基于主题订阅发布的机制,消息生产者(Producer)发送某一个主题到消息服务器,消息服务器负责将消息持久化存储,消息消费者(Consumer)订阅该兴趣的主题,消息服务器根据订阅信息(路由信息)将消息推送到消费者(Push模式)或者

2022-05-16 18:15:01 1198

原创 Netty内存分配之ByteBuf

文章目录1.1初始认识ByteBuf1.1.1 ByteBuf的基础结构1.1.2 ByteBuf的基本分类1.2 ByteBufAllocator内存管理器1.3 非池化内存内存分配1.3.1 堆内内存的分配1.1初始认识ByteBufByteBuf主要负责把数据从底层I/O读到ByteBuf,然后传递给应用程序,应用程序处理完成之后再把数据封装成ByteBuf写回I/O。1.1.1 ByteBuf的基础结构我们来看netty * +-------------------+------

2022-05-05 15:16:37 1362

原创 netty 优化与源码

文章目录1. 优化1.1 扩展序列化算法1.2 参数调优1)CONNECT_TIMEOUT_MILLIS2)SO_BACKLOG3)ulimit -n4)TCP_NODELAY5)SO_SNDBUF & SO_RCVBUF6)ALLOCATOR7)RCVBUF_ALLOCATOR1.3 RPC 框架1)准备工作2)服务器 handler3)客户端代码第一版4)客户端 handler 第一版5)客户端代码 第二版6)客户端 handler 第二版2. 源码分析2.1 启动剖析2.2 NioEventL

2022-05-02 11:13:46 250

原创 netty 进阶

文章目录1. 粘包与半包1.1 粘包现象1.2 半包现象1.3 现象分析1.4 解决方案方法1,短链接方法2,固定长度方法3,固定分隔符方法4,预设长度2. 协议设计与解析2.1 为什么需要协议?2.2 redis 协议举例2.3 http 协议举例2.4 自定义协议要素编解码器💡 什么时候可以加 @Sharable3. 聊天室案例3.1 聊天室业务介绍3.2 聊天室业务-登录3.3 聊天室业务-单聊3.4 聊天室业务-群聊3.5 聊天室业务-退出3.6 聊天室业务-空闲检测连接假死1. 粘包与半包1.

2022-04-27 22:22:55 302

原创 Netty入门

文章目录二. Netty 入门1. 概述1.1 Netty 是什么?1.2 Netty 的作者1.3 Netty 的地位1.4 Netty 的优势2. Hello World2.1 目标2.2 服务器端2.3 客户端2.4 流程梳理💡 提示3. 组件3.1 EventLoop💡 优雅关闭演示 NioEventLoop 处理 io 事件💡 handler 执行中如何换人?演示 NioEventLoop 处理普通任务演示 NioEventLoop 处理定时任务3.2 ChannelChannelFutureCl

2022-04-23 21:28:48 316

原创 NIO 基础总结

文章目录一. NIO 基础1. 三大组件1.1 Channel & Buffer1.2 Selector多线程版设计⚠️ 多线程版缺点线程池版设计⚠️ 线程池版缺点selector 版设计2. ByteBuffer2.1 ByteBuffer 正确使用姿势2.2 ByteBuffer 结构💡 调试工具类2.3 ByteBuffer 常见方法分配空间向 buffer 写入数据从 buffer 读取数据mark 和 reset字符串与 ByteBuffer 互转⚠️ Buffer 的线程安全2.4 S

2022-04-23 15:52:22 407

原创 单机canal监听binlog

文章目录简介环境部署MySQLCanal安装Canal客户端开发创建client_demo项目Maven依赖在canal_demo模块创建包结构开发步骤Canal消息格式转换为JSON数据简介基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是基于业务 trigger(触发器) 获取增量变更从 2010 年开始,业务逐步尝试数据库日志解析获取增量变更进行同步,由此衍生出了大量的数据库增量订阅和消费业务,

2022-04-11 09:12:52 807

原创 Apache Druid 总结

文章目录Druid架构与原理Druid系统架构详解索引服务Overlord节点MiddleManager节点Coordinator节点Historical节点Broker节点Druid数据存储数据存储数据分区SegmentSegment内部存储结构roll-up聚合位图索引Druid架构与原理Druid系统架构详解Druid有5种节点:OverlordMiddleManagerCoordinatorHistoricalBroker以下是这几个节点的主要功能:Overlord、Mid

2022-04-10 11:14:53 573

原创 es相关总结

选举策略读流程写流程常见优化总结

2022-03-27 21:56:55 2913

原创 kafka相关总结

文章目录Kafka的应用场景消息队列的两种模型Kafka中的重要概念事务消息生产者分区写入策略消费组Consumer Group Rebalance机制消费者的分区分配策略副本的ACK机制高级API(High-Level API)、低级API(Low-Level API)leader和followerAR\ISR\OSRleader选举Kafka读写流程Kafka的物理存储消息传递的语义性Kafka的消息不丢失数据积压数据清理&配额限速Kafka的应用场景异步处理系统解耦流量削峰日志处理

2022-03-10 18:05:50 216

原创 redis相关总结

文章目录Redis过期key是怎么样清理的?LRU算法LFU算法Redis的性能为什么这么高?Linux中IO模型一共有哪些?epoll水平触发和边缘触发的区别?同步与异步的区别是什么?阻塞与非阻塞的区别是什么?BIO,NIO,AIO有什么区别?如何解决Redis缓存穿透问题?如何解决Redis缓存击穿问题?如何解决Redis缓存雪崩问题?如何解决缓存与数据库的数据一致性问题?Redis过期key是怎么样清理的?惰性清除在访问key时,如果发现key已经过期,那么会将key删除。定时清理R

2022-03-06 21:34:03 797

原创 常见限流算法总结

文章目录概述固定窗口计数器算法滑动窗口计数器算法令牌桶算法漏桶算法限流算法对比Sentinel的限流与Gateway的限流有什么差别?概述限流算法常见的包括:计数器算法,又包括窗口计数器算法、滑动窗口计数器算法令牌桶算法(Token Bucket)漏桶算法(Leaky Bucket)固定窗口计数器算法固定窗口计数器算法概念如下:将时间划分为多个窗口,窗口时间跨度称为Interval,本例中为1000ms;每个窗口维护一个计数器,每有一次请求就将计数器加一,限流就是设置计数器阈值,本.

2022-03-05 19:24:01 407

原创 Sentinel使用总结

文章目录1.初识Sentinel1.1.雪崩问题及解决方案1.1.1.雪崩问题1.1.2.超时处理1.1.3.仓壁模式1.1.4.断路器1.1.5.限流1.1.6.总结1.2.服务保护技术对比1.3.Sentinel介绍和安装1.3.1.初识Sentinel1.3.2.安装Sentinel1.4.微服务整合Sentinel2.流量控制2.1.簇点链路2.1.快速入门2.1.1.示例2.1.2.练习:2.2.流控模式2.2.1.关联模式2.2.2.链路模式1)添加查询商品方法2)查询订单时,查询商品3)新增订

2022-03-05 16:32:41 770 1

apache-skywalking-apm-6.5.0.tar.gz

随着微服务架构的流行,一些微服务架构下的问题也会越来越突出,比如一个请求会涉及多个服务,而服务本身可能也会依赖其他服务,整个请求路径就构成了一个网状的调用链,而在整个调用链中一旦某个节点发生异常,整个调用链的稳定性就会受到影响,所以会深深的感受到 “银弹” 这个词是不存在的,每种架构都有其优缺点 。

2020-04-03

lombok-plugin-0.28-2019.3.zip

Lombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法。官方地址:https://projectlombok.org/,github地址:https://github.com/rzwitserloot/lombok

2020-01-27

Navicat.for.MongoDB.12.1.7.rar

Navicat for MongoDB 的高效图形用户界面,用于管理和开发 MongoDB 数据库。它能连接本地或远程的 MongoDB 服务器,以及与 MongoDB Atlas、阿里云、腾讯云和华为云兼容。为管理、监控、查询和可视化数据提供了卓越的功能,轻松提高日常 MongoDB 操作的效率。

2020-01-06

Navicat for MySQL v12.0.29.zip

1.Navicat for MySQL支持创建工具或编辑器数据模型工具 2.支持数据传输/导入/导出、数据或结构同步等 3.Navicat for MySQL支持查询参数 4.Navicat for MySQL支持SSH密钥等 5.界面设计直观简洁,兼容性强 6.专业:适合专业人士,也非常适合入门新手使用

2020-01-05

Xshell.zip

Xshell [1] 是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。Xshell 通过互联网到远程主机的安全连接以及它创新性的设计和特色帮助用户在复杂的网络环境中享受他们的工作。 Xshell可以在Windows界面下用来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的。除此之外,其还有丰富的外观配色方案以及样式选择。

2020-01-05

redis集群搭建所需要文件

搭建redis少走弯路,就来这里吧。搭建redis少走弯路,就来这里吧。

2017-11-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除