自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(75)
  • 资源 (1)
  • 收藏
  • 关注

原创 你真的了解Pulsar的消息保留、积压、TTL策略吗

任何东西都有生命周期,就像沙丁鱼罐头🥫也会过期一样,咱们的消息本身也是有生命周期的,因此像Pulsar这样的流平台/消息队列也提供了Retention、Backlog和TTL机制。

2024-04-01 09:51:48 1783

原创 Pulsar从入迷到入魔之路

系统学习Pulsar的大纲。

2024-03-16 11:23:43 605

原创 启程Pulsar:深入剖析高速启动引擎,揭秘消息中间件巨兽的诞生

PulsarService是Pulsar服务启动的核心类,其内置了七大重要的对象如下图BrokerService: 核心是启动Netty,处理客户端的TCP连接,同时通过多个Map容器维护例如Topic信息、Topic归属信息等等,除此之外还启动一批定时线程定期检测(消息过期、压缩、客户端活跃等)LoadManager: 负责处理Broker服务的负载均衡WebService: 对外提供HTTP服务,例如管理流的操作(元数据)等。

2024-09-18 18:05:34 862

原创 管理流创建schema流程源码解析

相信大家对schema创建的流程已经很清楚了,再次简单归纳下客户端根据用户定义的结构信息创建对应的Schema对象,并将结构信息以HTTP请求发给服务端服务端检测并根据Schema兼容策略做相对应的处理,一般情况下会调用Bookkeeper创建Ledger以及EntryBookkeeper将此Schema数据持久化到磁盘,相当于Schema信息会被Bookkeeper当作一条消息进行存储这基本上就是全部内容,当然细节感兴趣的小伙伴可以自行跟踪代码,相信你会有更多收获~

2024-08-01 16:28:04 701

原创 PulsarClient源码解析

pulsar服务是经典的C/S架构,由客户端和服务端构成。服务端提供处理读写请求服务,客户端负责发起读写请求。pulsar将客户端按照读写分成了生产者和消费者,但是无论怎么分,它们本质上都是Pulsar客户端并有很多相同的地方,本篇就针对客户端进行分析。

2024-07-17 15:28:00 996

原创 【Go教程】全网最经典、易懂、适合入门学习的学生成绩管理系统设计与实现

通过上面一套组合拳打下来,相信你对go的基础知识以及设计系统都有一定的了解,如果可以希望可以基于自己的理解实现一个,因为实践才是检验真理的唯一标准。基于Go开发出学生成绩管理系统(或者其他系统)并不是终点,只是一个起点,准备好用这门优雅的语言去打开属于你的新世界吧~ 😋。

2024-04-28 14:30:48 838

原创 编程本源

而内心世界里,我仿佛就是一个无所不能的魔法师🧙‍♀️,一挥动魔法棒🪄,高楼大厦拔地而起,再念一段咒语,山川河流、各个形态的动物都随我所想的模样出现,最后大喝一声,“启动~”,这个“世界”就仿佛被赋予了生命力一样活了过来,河流唱着歌从高山流下来,经过嬉闹的丛林,丛林里小鹿在跟蝴蝶🦋嬉闹,此时池边蛰伏已久的鳄鱼🐊正准备扑向小鹿,只听我大喝一声,“停~”,整个世界就像按下了暂停键,所有东西都停止在那一刻,于是乎我敲着键盘重新编码鳄鱼的行为,鳄鱼不需要捕食其他动物也能存活,只需要通过呼吸和喝水也能获得足够能量。

2024-04-28 14:23:39 754

原创 【小白版】最简单的 goland 自定义package 教程

直奔主题,针对小白无法正确使用自定义的package包进行讲解。

2024-04-25 19:56:07 304 1

原创 深入探索生产者拦截器的使用以及源码设计

在软件设计中,为了方便能够应对不同的场景,一般在一些容易有差异的环节会考虑允许用户自定义逻辑,拦截器就是其中的一种实现方式,像Spring、Kafka、Pulsar等都支持这种方式。流程简化起来就如下图,客户端跟服务端的写消息请求和接收请求都要先通过一遍拦截器,因此用户都过自定义拦截器逻辑就能以一种无侵入、规范化的方式来改动消息发送以及处理响应的行为。

2024-04-19 11:17:12 1137

原创 记录方式重新打开人生

最后,我祝愿大家身体健康、万事顺心,如果不行的话那就祝愿大家都有面对、解决痛苦的能力,以及过上高效、快意的人生~

2024-04-19 10:55:58 270

原创 主动触发Bundle分裂服务端流程源码解析

Namespace下的Topic是分Bundle进行管理的,每个Namespace都是一个哈希环,而Bundle负责管理环上某个范围上的Topic。通过这种方式可以更好的进行Topic的管理。当某个Bundle上负责的Topic越来越多时,会导致负责该Bundle的Broker节点压力变大。因此Pulsar还提供了Bundle分裂的机制,这个机制支持自动触发以及手动触发,今天这篇文章就从源码的角度分析手动触发Bundle分裂时服务端会发生什么。

2024-04-16 18:53:58 811

原创 关于系统数据缓存的思考以及设计

在工作中只要我们观察和思考,就会发现其实是存在不少值得完善的地方,此时应该考虑对它们进行完善,否则如果长期维护一个“丑陋”的系统,你的思维、以及审美也会随之跟着降低,以至于久而久之就觉得这种设计也挺好的,甚至后续再有类似的场景时你还是会选择这种设计。工作的本质也是一场修行,在对系统进行改进完善的过程也是自我完善的过程,简称“借物得道”,同时如果读者针对这个场景有更合适的设计也欢迎在下方一起讨论。

2024-04-16 10:17:12 837 1

原创 论大数据服务化发展史

以上是我对大数据服务化粗糙的认知,输出出来是希望能引发一些思考🤔,当然写的过程中也引发了我自己的不少思考。这个过程中虽然存在一点批判,但绝不是针对具体的个人,而是针对目前常见的一些流程设计,单纯觉得有些设计可以变得更“美”一些。如果对服务化感兴趣的伙伴可以去针对性的学习专业的知识来改善工作内容,本篇文章仅仅是唠嗑,存在很多瑕疵,但我始终相信,多人沟通讨论可以构建设计一个更加完美的设计,因此如果能引发其他人的共鸣或者不同想法💡其实都是好事。

2024-04-04 20:12:01 1340 1

原创 莽就完事了第二弹!

这是我最近两个月关于“莽”比较大的感悟,虽然文章质量有下滑,但我觉得有时候该抓一放一,对于此时的我来说坚持输出远胜于用很多时间打磨一两片文章。因此我会在“莽”的过程中尽量提升质量,读者如果有其他的建议也希望在评论中一起进行讨论。

2024-04-04 08:15:00 331

原创 Pulsar服务端处理消费者请求以及源码解析

可以看到Pulsar里大量使用了异步回调处理,这样的设计在高并发场景大幅提升服务的性能,尽可能的避免了存在瓶颈的地方。不过带来的另一影响是,代码跟踪起来相对来说容易“迷路”,因此掌握好异步设计的逻辑是很有必要的,可以帮助我们更好的跟踪Pulsar的代码。

2024-04-03 09:49:53 697

原创 Apache Pulsar源码解析之Lookup机制

以上就是Pulsar的Lookup机制的实现流程,在寻址的过程中,需要阅读的伙伴具备一致性哈希的知识,因为Pulsar的Topic归属就是引入了一致性哈希算法来实现的。

2024-04-03 09:47:31 884

原创 Pulsar源码解析之TTL

以上就是Pulsar中TTL的实现源码流程,我在这个过程中尽量省略了一些非必要的逻辑,主要是跟踪了主线,像一些地方也是值得跟踪的,感兴趣的伙伴可以自行跟踪。同时在这里我们可以看到,TTL过程只移动了游标位置并不涉及到数据的删除,说明在Pulsar的设计中将两者进行了分离,这是一种很好的职责设计思路,各自负责自己的一那部分。一方面在程序维护时可以避免改动引起一些相关性不那么大的影响,另一方面对于程序执行的整体性能来说也是比较高效的。

2024-04-02 09:42:00 609

原创 认知觉醒读书笔记之三重大脑(一)

这类文章可能读起来会有点觉得像是傲慢的说教之类的,如果有类似的感觉我感到很抱歉,这并不是我的本意,我从过去到现在即使是将来在这方面都有要不断完善的地方,写出来一方面是给大家分享我的见解,另一方面自己也会时常回头看看、反思这块相关的内容并指导我自己更好的前行。最后跟大家分享文章中我很喜欢的一句话:习惯之所以难以改变,就是因为它是自我巩固的——越用越强,越强越用。要想从既有的习惯中跳出来,最好的方法不是依靠自制力,而是依靠知识。

2024-04-02 09:39:46 569

原创 一封写给年末自己的信

不知不觉一年又快结束了,今天写了不少文章,那就专门写一份给自己的信。

2024-04-01 09:48:09 553

原创 Pulsar源码解析之PersistentTopic类

本文主要强调PersistentTopic类的重要性、聊聊它都负责哪些事情以及大概实现,具体每个细节展开都能单独写一篇文章,这个敬请期待~

2024-03-27 21:12:56 1124

原创 克服欲望的永远不是自律,而是更高级的欲望

在人生的每个阶段,我好像都有遇到那种天然就知道自己该做什么事情并且极度“自律”的人,上学那会就有同学雷打不动的学习,哪怕没人监督也照样认真学习。与之相比的我感觉就像是这个世界的NPC一样,做事三分热度,感兴趣的时候也能热血沸腾狠狠学一段时间,但是大部分时候还是想偷懒,一直以来觉得是自己自控力问题导致自己不够自律,也会是不是给自己定制计划并设置奖惩,但最后都不了了之。你是否也有同样的经历并且苦恼呢。

2024-03-21 19:15:22 317

原创 一文彻底搞懂Producer端流程以及原理

生产者写数据的流程到这里基本就结束了,怎么样,是不是没想象中那么可怕?也许你对1、客户端对象创建 2、生产者对象创建 3、消息发送这三步之间的关系还有点迷迷糊糊,那就请允许我给你举个例子,1、客户端对象创建相当于一座新城市的创建,打好城市的地基,2、生产者对象创建相当于在这个地基的基础上建起了城市,发电厂等等,最重要的是修建其通往其他各个城市的交通要道,最后的3、消息发送相当于这个新城市的居民们乘坐高铁去其他的城市。这么说相信你一定已经明白了~如果还有其他疑问欢迎在下面的评论区一起讨论。

2024-03-21 15:41:21 964

原创 总要有一次,为自己疯狂

我们在每一刻都会面临无数个选择,我们在过去无数个选择中的选定绘制出了如今的生活,而站在未来十年、二十年的角度,选择的自己也是一个起点,从现在开始的每一个决定都会不断的改善未来的自己。简单来说就是“种一棵树最好的时间是十年前,其次是现在”,因此从现在这一刻开始,让咱们为了自己感兴趣的事情,疯狂一次吧。

2024-03-16 11:52:32 419

原创 Pulsar IO实战

纸上得来终觉浅,绝知此事要躬行。学习不能仅仅停留在纸面上或者理论,脱离使用去探讨设计或者源码都是不切实际的。因此今天一起体验了一把Pulsar IO,除此之外Pulsar还提供了非常丰富的跟其他系统交互的Connector,详细可以看上面发的下载地址并尝试使用自己感兴趣的Connector感受下实操的快乐~

2024-03-13 19:50:27 945

原创 Pulsar消息路由深入剖析

在有些业务场景,我们需要将自己的业务逻辑“融入”路由策略,因此像Pulsar、Kafka等消息中间件都是支持用户进行路由规则的自定义的。这里为了好玩,咱们尝试将数据按照 1:2:3:4 等比例分别落在四个分区如何?说干就干,自定义路由也是比较简单的,只需要实现Pulsar MessageRouter接口的choosePartition方法即可,实现逻辑如下count++;return 3;

2024-03-13 19:44:34 1018

原创 Pulsar Schema使用原理介绍

关于Pulsar Schema,咱们要想想以下几个问题。

2024-03-09 17:45:12 1031

原创 Worker调度管理器原理解析

以上就是Pulsar中Worker的调度过程,这里主要是以Worker独立部署的方式进行讲解的,基于Broker启动的Worker感兴趣的朋友可以自行跟踪下代码。

2024-03-05 19:42:49 1289

原创 万物皆可模块化分解

上面就是模块化的好处,原本看似不可能完成的东西通过模块化分解后都是可以完成的。因此在这里想表达的是,虽然学海无涯,但是对于咱们热爱的事情,可以利用好这个方式,将要做的大任务或者要学习的大的方向进行分解,然后在逐个攻克一个个小单元,因此不用害怕任何事情,大胆折腾起来。

2024-03-05 19:38:58 384

原创 Pulsar3.2 Function的介绍与使用

基于Function接口实现自己的逻辑,打包编译成jar包/***/@Override基于该jar包启动function启动客户端监听test1-output-topic往Topic test1-input-topic 里写入数据消费者打印启动function有时候会遇到下面这个问题,一般都是function命名冲突导致的,修改yaml配置里name在重新create下就可以了。

2024-02-28 18:59:17 1145

原创 一副皮囊的使命

最后与各位读者分享一句话:人有两次生命的诞生,一次是你肉体出生;而另一次,是你灵魂的觉醒。

2024-02-28 14:44:33 782

原创 一文弄明白KeyedProcessFunction函数

监听本机7777端口读取字符串将每个字符串用空格分隔,转成Tuple2实例,f0是分隔后的单词,f1等于1将Tuple2实例集合通过f0字段分区,得到KeyedStreamKeyedSteam通过自定义KeyedProcessFunction处理自定义KeyedProcessFunction的作用,是记录每个单词最新一次出现的时间,然后建一个十秒的定时器进行触发。

2024-02-21 19:51:37 1320

原创 压制es-hadoop这头野兽的方式来了~

以上就是整个问题的解决过程,我也相信一定有更好,更优雅的解决方式,如果你恰好有好的想法也可以给ES-Hadoop社区提供;但无论黑猫还是白猫,能抓到老鼠的才是好猫,通过方案三快速的解决的问题并且稳定运行了一年,给公司节省下扩容集群的成本,这在我这个菜鸡看来已经够了。如果你也比较赶时间的话,可以考虑直接试下我的jar包,希望能对您有帮助。

2024-02-21 19:09:54 995

原创 欲速则不达,慢就是快!

在最后,跟大家分享一句很喜欢的话,“如果有一天,你不再寻找爱情,只是去爱;你不再渴望成功,只是去做;你不再追求空泛的成长,只是开始修养自己的性情;你的人生一切,才真正开始”

2024-02-20 15:55:37 977

原创 五分钟搭建本地大数据集群

上述组件都是apache旗下的,通过此地址找到对应的版本下载使用即可 https://archive.apache.org/dist/hadoop/common/,但如果下载速度慢的话可以考虑通过这个地址进行加速下载 https://mirrors.tuna.tsinghua.edu.cn/apache/,后面这个地址仅用于学习,请勿用于商用。以上就是搭建一个简单的本地调试环境的流程,最好是都能手动操作一次,对这几个基础服务都有一定的了解。进行服务的后台启动。启动服务即可,通过指令查询可看到已经启动服务。

2024-02-17 16:08:58 575

原创 莽,就完事啦!

随着知识量的增加,有时会减低执行力。小时候很多东西不知道,但是就很莽,大胆的撬开电风扇,哪怕组装回来多了几个零件也很自豪;小时候好奇海的那边有什么,跟着小伙伴们沿着海岸线跑一下午都不觉得累。但是随着对这个世界的了解的增加,我们逐渐变得“理智”,喜欢的人还没开始去追就内心觉得反正也成功不了就放弃了,有些工作还没开始就觉得这个设计方案行不通甚至开发好的代码迟迟不上线,因为不发布就不会有问题等等呢个。为了避免失败,于是乎放弃所有开始,但是今天我想说的是,莽,就完事拉~

2024-02-04 22:35:17 417

原创 手写分布式存储系统v0.3版本

由于咱们的服务是分布式的,那从服务管理的角度来看肯定是要有一个机制来知道具体都有哪些实例可以提供服务。举个例子就是,张三家里在全国各地有不少火锅加盟店,那张三肯定要有一个方式知道这些火锅店加盟店的情况。例如上海又新开了一家加盟店,那么这家加盟店肯定要先通过某种方式联系张三,这样张三才能将配方以及食材供应给这家新的加盟店等等。疑问为什么不能通过域名映射的方式来做映射,客户端通过域名调用服务就好了为啥要专门做服务发现。

2024-02-04 17:42:08 2241

原创 手写分布式存储系统v0.2版本

上回说到手写分布式存储系统v0.1版本,已经实现了通过监听TCP端口并将数据写到本地磁盘的功能,今天咱们就继续往上面添砖加瓦

2024-02-02 20:12:45 1010

原创 哇塞,这几种Java文件读写性能差距居然这么大?

通过比较能看到在高频写数据到磁盘时,mmap的性能非常显著,有类似的场景时可以优先考虑mmap。当然最好是自己做下基准测试。

2024-02-02 20:03:03 511

原创 手写分布式存储系统v0.1版本

实现一个系统,设计是最过瘾的过程没有之一,类似你搭积木前在脑海设计构建一副大致的“雏形”,只有有了这个东西之后才能够指导最终实现的方向以及确保不会偏离的太差。

2024-02-01 10:09:23 488

原创 工作软技能第一弹,关于职场沟通、成长的那些事

在谈绩效后,我收获了一些心得,在此梳理出来,加深印象并且共勉

2024-01-25 23:08:42 878

es-hadoop二次开发包

es-hadoop二次开发包

2024-02-21

SpringMVC从无到有

SpringMVC框架从无到有,我已经解决了jar包冲突等问题,此资源是为了帮助更多的新人快速体验SpringMVC的快感

2017-04-06

空空如也

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

TA关注的人

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