自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(116)
  • 问答 (1)
  • 收藏
  • 关注

原创 Kafka之存储设计

消费者读取的数据都是已经被确认的可靠数据,避免处理未确认数据带来的复杂性和错误。Kafka的压缩过程是定期进行的,时间间隔和触发条件可以通过配置参数来调整。水位线(HW)是 Kafka 中每个分区的一个偏移量,它表示已经被所有同步副本(leader 和 follower)确认并复制的最高偏移量。Kafka 日志文件中的内容并不是简单的按行排列的消息,而是采用了批处理(batch)的方式来存储消息。数据可靠性:HW 确保了在系统发生故障时,数据不会丢失,并且消费者读取到的数据是可靠的。

2024-07-22 21:19:02 1607 1

原创 Kafka Producer之事务性

事务性可以防止跨会话幂等性失效,同时也可以保证单个生产者的指定数据,要么全部成功要么全部失败,。不可以多个生产者共用相同的事务ID。

2024-07-22 21:17:23 562

原创 Kafka Producer之幂等性

幂等性通过消耗时间和性能的方式,解决乱序和重复问题。但是只能保证。

2024-07-18 21:32:50 1057 1

原创 Kafka Producer之数据重复和乱序问题

为了可靠性,Kafka有消息重试机制,但是同时也带来了2大问题。

2024-07-18 21:32:15 802

原创 Kafka Producer之ACKS应答机制

无论哪一种,有一个关键的步骤叫做回调,也就是ACKS应答机制。异步发送的效率高,但是不安全,同步发送安全,但是效率低。其中ACKS也分为3个等级。

2024-07-17 22:17:07 1131

原创 Kafka Producer发送消息流程之消息异步发送和同步发送

按照流程图,上一条消息需要从生产者一直流转,多个步骤,到数据收集器,到Sender,最后还要等待回调确认,才可以开始下一条消息的流转。Kafka默认就是异步发送,在Main线程中的多条消息,没有严格的先后顺序,Sender发送后就继续下一条,异步接受结果。Main线程中,对于多条数据,下一条消息的发送并不等待上一条消息的确认,而是继续发送。消息有严格的先后顺序,下一条消息必须等到上一条消息的回调确认后,再发送,这是一个。可以看到先是main线程循环发送完了多条数据,然后再异步收到通知。

2024-07-17 22:15:28 1492

原创 Kafka Producer发送消息流程之Sender发送线程和在途请求缓存区

线程将消息批次发送到broker后,这些请求会存储在在途请求缓存区中,直到收到broker的确认响应。线程会将这些批次按目标broker进行组织,因为一个broker通常负责多个分区的消息处理。:如果某个请求在指定时间内没有收到响应,生产者会根据配置的重试机制重新发送这些请求。线程工作流程中,如果一次任务中包含了来自多个分区的批次,并且这些批次涉及到多个broker,那么。通过这些配置,Kafka生产者可以在不同的网络条件和负载下优化消息发送的效率和可靠性。响应中包含了每个分区的消息是否成功写入的信息。

2024-07-17 22:14:25 1108

原创 Kafka Producer发送消息流程之分区器和数据收集器

新建类实现接口,key是字符串数字,奇数送到分区0,偶数送到分区1。@Override@Override> map) {新建一个存在多分区的Topic。//创建producer//指定拦截器//指定分区器i < 10;i++) {//创建record"test1","key"+i,"我是你爹"+i//发送record//关闭producer。

2024-07-16 20:53:19 632

原创 Kafka Producer之拦截器

新建ProducerRecord类后,传入topic、key、value等数据构建Record之后,距离发送至kafka集群还需要经历若干过程。拦截器列表,对数据进行过滤,更改等行为,处理异常不会导致流程终止。可以看到value是复制了2次,成功。根据元数据选择分区和Broker。进入数据发送缓存区,批次发送。获取Kafka集群元数据。

2024-07-16 20:52:07 804

原创 关于Kafka Topic分区和Replication分配的策略

/定义kafka集群配置//创建Admin管理员对象//定义Topic属性// 分区0,Leader副本在3上,第二个副本在1上。//创建Topictest4不过在手动分配时,确实需要了解每个broker的负载情况,以便做出更优的分配策略。你可以使用Kafka的类来获取集群的状态信息。

2024-07-14 20:24:04 759

原创 Docker Compose部署Kafka集群并在宿主机Windows连接开发

广播给客户端的地址是localhost:19092、localhost:29092、localhost:39092,也就是windows上的客户端通过localhost:19092访问broker,这会被docker的-p映射到对应容器的9092,被。是broker注册在zookeeper或者controller broker里面的元数据,当消费者或者生产者使用Bootstrap-Server去连接kafka集群时,集群会返回元数据等信息到客户端,客户端会根据每个broker提供的。即允许非加密的通信。

2024-07-14 20:18:22 1354 1

原创 Kafka基础组件图推演

虽然每个分区的同步过程是独立的,但每个Broker会为它所管理的每个分区(无论是Leader还是Follower)启动相应的复制线程,这些线程负责处理具体的同步任务。每个分区的Leader和Follower之间的同步是独立进行的。是Kafka的网络通信框架的一个核心部分,负责管理和调度网络请求。一个Broker成功竞选为新的Controller Broker后,会从Zookeeper读取最新的集群元数据。在Broker2和Broker3上处理从Broker1接收的复制请求,将消息写入它们各自的日志文件。

2024-07-11 19:18:32 1026

原创 Kafka基础框架图推演

新的分区从创建时开始是空的,只有在后续生产者发送消息时,才会向这些新的分区写入数据。一旦生产者获取了这些元数据,它就知道每个分区的Leader Broker是谁,从而可以将消息直接发送到正确的Leader Broker。在Kafka中,生产者将消息发送到Broker时,Broker的第一个操作就是将消息记录到磁盘中,以确保消息的持久性和可靠性。:分区的多副本下,负责同步Leader的数据的分区所处的broker。:分区的多副本下,负责处理所有的读写请求的分区所处的broker。:分区可以存在多副本。

2024-07-11 19:17:31 779

原创 docker部署简单的Kafka

这些命令将使 ZooKeeper 和 Kafka 容器在同一个 Docker 网络中运行,并确保它们可以相互通信。如果可以成功列出 Kafka 主题,则表示 Kafka 和 ZooKeeper 正常运行。通过以上步骤,可以确认 ZooKeeper 和 Kafka 容器是否正常运行并相互通信。然后,运行 ZooKeeper 容器并将其连接到。最后,运行 Kafka 容器并将其连接到。选择一组兼容性好的版本。

2024-07-03 16:51:46 894 1

原创 Hexo结合多个主题扩展为Gallery画廊并实现文章加密

当前PC环境中有Node和Git。版本可以参考Hexo文档。文章中出现的yourusername为Github用户名,your-repo为仓库名。

2024-06-25 19:36:27 610

原创 Typora + Hexo 图片路径问题(Typedown)

当一篇名为xxx.md的文章引用1.png图片时,默认让1.png保持在xxx文件夹下,那么md中即可使用。而typora中,或者Typedown中,复制图片时,一般使用。被注释掉了是不会打印日志对比前后修改的,没注释的会。但是如果你是typedown就会发现,不支持解析。,那么只有每次写的时候手动选择同级同名文件夹了。Hexo上对于图片在md中的引用,使用了。配置,来更好的管理图片。

2024-06-23 21:40:30 940

原创 Nginx基础概念和常用操作

这意味着,nginx 把所有对服务器根路径的请求,代理到 /usr/share/nginx/html 目录下,并且把 index.html 或 index.htm 作为默认页面。后,数据在内核空间中直接从一个文件描述符传输到另一个文件描述符,避免了在用户空间和内核空间之间的多次拷贝,从而提高了传输效率。后,Nginx 会尝试将数据块一次性发送到网络,而不是逐个包地发送,从而减少包的数量,提高传输效率。可以看到配置文件位于。在不断刷新页面会发现,反向代理是以“轮询”的方式,将请求分发到3个web服务之一的。

2024-06-23 21:39:43 1100

原创 爬取优快云博文到本地(包含图片,标签等信息)

这里进行一定的改进,可以更准确获取时间,也可以选择图片的存放方式是否集中或分离到每篇文章的同名文件夹,以适应部分md扩展语法,比如。项目原作者:https://gitee.com/liushili888/csdn-is—mark-down。很多情况下,我们需要将优快云中的文章转化为markdown文档,直接复制全文是不可以的,优快云不支持。改进后仓库地址:https://github.com/Xiamu-ssr/csdnToMD。

2024-06-20 21:44:30 710

原创 实现Hexo新建博文时自带随机默认封面

前提是选择的主题在中支持cover和thumbnail,主题之间对于这两个属性的定义可能并不用,如果不适用,只需要根据逻辑修改脚本即可。

2024-06-20 17:18:04 952

原创 如何优雅的使用Github Action服务来将Hexo部署到Github Pages

文章添加编辑后,现在只需要推送到仓库,那么github不仅会保存你的Hexo个人博客源码,还会自动更新个人博客静态页面到gh-pages,由此触发github-page功能来更新你的个人博客网站。,随后在左边栏目就可以看到新Hexo Utils的新菜单,只要你的VSCode当前打开的文件夹是hexo的根目录,那么插件就会自动识别到,当你对md文件使用“侧边预览”时,图片就正常显示了。缺少仓库地址,所以把请求地址复制一份,并在后面添加上仓库名即可,这需要修改_config.yml中修改url字段。

2024-06-20 17:14:22 1435

原创 22种常用设计模式示例代码

仓库地址参考教程。

2024-06-18 16:28:24 764 1

原创 深入探讨5种单例模式

以下是不同单例模式实现方式的特性对比表格。表格从线程安全性、延迟加载、实现复杂度、反序列化安全性、防反射攻击性等多个方面进行考量。

2024-06-05 21:51:10 580

原创 基于Ruoyi-Cloud-Plus重构黑马项目-学成在线

毕设:基于主流微服务技术栈的在线教育系统的设计与实现文档地址:plus-doc。

2024-05-22 15:06:08 842

原创 Navicat导出表结构到Excel或Word

到Excel中,自己写好表头,然后粘贴,就复制到Excel了。从Excel全选数据,就可以直接复制到Word。在查询结果中,Ctrl+A全选,然后复制。

2024-05-08 19:44:32 2125

原创 Vue3 v3.4之前如何实现组件中多个值的双向绑定?

官方给的例子是关于el-input的,如下。但是@input不是所有组件标签都有的属性啊,有没有一种通用的办法呢?

2024-04-28 20:55:44 844 2

原创 ruoyi-cloud-plus添加一个不要认证的公开新页面

并且每个模块都有可能需要open一些controller,不需要认证。那么我们进行统一设定,比如课程模块,url前缀为。但是后端是有网关和认证模块的,虽然前端页面可以不用登陆了,但是如果这个页面还需要从后端获取数据,那么后端对应的。就都是被公开的端点。于是在gateway只需要把。在view目录下创建一个页面的vue代码,比如。在nacos中修改gateway的配置文件,把。,至此这个页面已经不用登录就可以访问了。以新增一个公开的课程搜索页面为例。在course模块中,新建一个。重启网关和课程模块即可。

2024-04-22 20:24:27 919 1

原创 Vue3炫酷商品卡牌 组件设计

感谢来自BinaryMoon-CSS 艺术之暗系魔幻卡牌的博文。💕接口类型组件源码使用示例

2024-04-22 13:12:53 1420 1

原创 SpringBoot和Axios数据的传递和接收-Restful完全版

在 Spring Boot(及一般的 HTTP 服务开发)中,将请求分为“GET 体系”和“POST 体系”可能会导致一些混淆,因为每种 HTTP 方法(GET、POST、PUT、PATCH、DELETE 等)都设计有其独特的用途和语义。不过,如果我们从“如何获取请求中的数据”这个角度来看,可以有一种比较宽泛的分类方式,尤其是关注于数据是通过 URL 还是请求体传递。但在你的例子中,由于是通过 axios 发送请求,并且当你在请求的 params 中包含一个数组时,axios 会将数组转换为。

2024-04-09 23:26:05 3355 3

原创 视频分块上传Vue3+SpringBoot3+Minio

前端将完整的视频文件分割成多份文件块,依次上传到后端,后端将其保存到文件系统。前端将文件块上传完毕后,发送合并请求,后端拿取文件块,合并后重新上传到文件系统。前端遍历文件块,每次上传之前,先询问文件块是否存在,只有不存在的情况下,才会上传。前端分割视频文件前,先询问此视频是否已经存在,存在则不再上传,后端之间返回视频信息。前端看起来就像是被秒传了。可以写一个定时任务,遍历没有后缀的文件块,判断其创建时间距离当前是否足够久,是则删除。

2024-04-05 16:56:50 3776 4

原创 Redis基础文档-01-安装

【代码】Redis基础文档-01-安装。

2024-04-03 11:42:39 206

原创 Docker部署MySQL8主从模式

​。

2024-04-02 17:17:56 377

原创 Java - JVM

所以,当我们说“方法区”时,从概念上讲,它是JVM的一个独立逻辑部分,但在HotSpot JVM的具体实现中,直到Java 7为止,它是作为堆内存结构的一个部分(即永久代)来实现的,永久代是堆的一个物理部分。💡从Java 8开始,HotSpot JVM去除了永久代的概念,引入了元空间(Metaspace),并且元空间是在本地内存中,而不是在堆内存中。因此,在Java 8及以后的版本中,方法区的实现从永久代变为了元空间,方法区(现在通常指的是元空间)与堆内存是完全分开的。元空间的概念仍然在JVM内存模型中。

2024-03-05 14:31:40 1065

原创 Java - 锁

如果加锁的时间过长,其他用户长时间无法访问,影响程序的并发访问性,同时这样对数据库性能开销影响也很大,特别是长事务而言,这样的开销往往无法承受。通常情况下,自旋锁适用于锁被持有时间短、锁的竞争不激烈的情况下,能够有效提高并发性能。阻塞锁,可以说是让线程进入阻塞状态进行等待,当获得相应的信号(唤醒,时间) 时,才可以进入线程的准备就绪状态,准备就绪状态的所有线程,通过竞争进入运行状态。锁升级是Java虚拟机对锁状态的动态调整过程,旨在根据实际的锁竞争情况和线程行为来选择最适合的锁策略,以提高程序的并发性能。

2024-02-23 16:02:07 802

原创 Redis之缓存击穿问题解决方案

缓存击穿就是大量并发访问同一个热点数据,一旦这个热点数据缓存失效,则请求压力都来到数据库。

2024-02-21 17:42:47 592

原创 Redis之缓存雪崩问题解决方案

缓存雪崩,指大量的缓存失效,大量的请求又同时落在数据库。主要的一种诱因是key设置的过期时间都一样。

2024-02-21 16:03:41 721

原创 Redis之缓存穿透问题解决方案实践SpringBoot3+Docker

当一种请求,总是能越过缓存,调用数据库,就是缓存穿透。比如当请求一个数据库没有的数据,那么缓存也不会有,然后就一直请求,甚至高并发去请求,对数据库压力会增大。如果key具有某种规则,那么可以对key增加校验机制,不符合直接返回。Redisson布隆过滤器逻辑修改,当数据库没有此数据,以null为value,也插入redis缓存,但设置较短的过期时间。

2024-02-21 14:55:10 749

原创 Spring AMQP(3.1.1)设置ConfirmCallback和ReturnsCallback

Slf4j//交换机//支付通知队列//支付结果通知消息类型//声明交换机,且持久化// 三个参数:交换机名称、是否持久化、当没有queue与其绑定时是否自动删除//支付通知队列,且持久化//交换机和支付通知队列绑定@Bean。

2024-02-16 23:01:49 1002 1

原创 支付宝沙箱版模拟网站在线完整支付流程(无营业无费用)内网穿透+局域网测试

系统处于开发阶段时,无需营业执照,无需任何费用,沙箱模拟网站在线完整支付流程。手机网站支付快速接入alipay.trade.query(统一收单交易查询)异步通知说明。

2024-02-16 17:01:55 3122

原创 SpringBoot后端Long数据传到前端js精度损失问题

在对应的字段上添加注解,将。对应的结果接收上使用。

2024-02-16 10:06:42 746

原创 微服务OAuth 2.1认证授权Demo方案(Spring Security 6)

书接上文微服务OAuth 2.1认证授权可行性方案(Spring Security 6)三个微服务以下是授权相关数据库。当我们知道,我们就可以知道这个用户可以访问哪些资源,并把这些权限(也就是里的字段)写成数组,写到的负载部分的字段中。当用户携带此JWT访问具有修饰的资源时,我们解析出中的字段,判断是否包含指定的权限,以此来完成所谓的的“授权”。这里需要注意几点这里需要注意几点这样,微服务颁发的,现在就会包含字段。示例如下三、gateway微服务代码1. 统一处理CORS问题这里需要注意几点

2024-02-13 23:00:26 3872 1

空空如也

空空如也

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

TA关注的人

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