摘要: kafka详解(二)--kafka为什么快 Kafka 有多快呢?我们可以使用 OpenMessaging Benchmark Framework 测试框架方便地对 RocketMQ、Pulsar、Kafka、RabbitMQ 等消息系统进行对比测试,因为暂时没有测试条件(后续补上),我直接用这篇文章的测试结果(Benchmarking Kafka vs. Pulsar vs. RabbitMQ: Which is Fastest?),可以看到,在某种条件下,Kafka 写入速度比 RabbitMQ 快 15 倍,比 Pulsar 快 2 倍,在最高吞吐量下仍保持低延迟。那么,为什么 Kafka 可以那么快呢?这里我先简单总结,后面会展开分析。 1. **从磁盘中顺序读写 event**。 2. **通过批处理减少大量小 I/O**。 3. **从文件到 socket 之间数据零拷贝**。 4. **基于分区的横向扩展**。 阅读全文
posted @ 2022-10-13 16:21 子月生 阅读(1041) 评论(3) 推荐(1) 编辑
摘要: kafka详解(一)--kafka是什么及怎么用 我准备开一个新的系列,希望可以帮助大家更简单、更连贯、更系统地了解 kafka。这是系列的第一篇,主要讲kafka是什么?如何使用kafka。 阅读全文
posted @ 2022-08-31 09:02 子月生 阅读(3827) 评论(2) 推荐(3) 编辑
摘要: 配置中心的设计-nacos vs apollo 前面我们分析了携程的 apollo(见 详解apollo的设计与使用),现在再来看看阿里的 nacos。和 apollo 一样,nacos 也是一款配置中心,同样可以实现配置的集中管理、分环境管理、即时生效等等。不过,nacos 还具备了服务发现的功能。这篇博客将重点分析 nacos 和 apollo 在设计上的差异。 阅读全文
posted @ 2022-06-05 18:06 子月生 阅读(2923) 评论(3) 推荐(2) 编辑
摘要: 我的JAVA面试题备忘录 以下是我收集的一些问题,有的是网上摘录的,有的是自己参加面试被问到的,有的是工作或学习时遇到的,等等。 为什么要记录这些呢? 一方面,我相信,这样做对我自己的技术提升是有帮助的。在全文结构上我尽量**使问题连贯地形成知识体系**,而不是堆积的碎片,而且,每个问题我会尽量地给出答案。 另一方面,我希望,有大佬可以指出我的错误。因为我的答案不一定对,尤其那些带 * 的问题。 这份资料将会持续更新,如果有其他问题也可以留言讨论。欢迎交流,共同进步。 阅读全文
posted @ 2022-05-03 17:58 子月生 阅读(592) 评论(0) 推荐(0) 编辑
摘要: spring内嵌cglib包,这里藏着一个大坑 问题发现 2022-01-21 早上 9 点,订单系统出现大面积的“系统未知错误”报错,导致部分用户无法正常下单。查询后台日志,可以看到大量的 duplicate class attempt。 java.lang.LinkageError-->loader (instance of org/spri 阅读全文
posted @ 2022-01-24 11:21 子月生 阅读(1622) 评论(4) 推荐(1) 编辑
摘要: 如何设计一个更通用的查询接口 临近放假,手头的事情没那么多,老是摸鱼也不好,还是写写博客吧。 今天来聊聊:如何设计一个通用的查询接口。 从一个场景开始 首先,我们从一个简单的场景开始。现在,我需要一个订单列表,用来查询【我的订单】,支持分页,且支持高级搜索。 整个查询流程 我们先来设计下整个查询的流程,我认为大致如下图。简单来说 阅读全文
posted @ 2022-01-19 14:31 子月生 阅读(2568) 评论(5) 推荐(2) 编辑
摘要: 简单的2021年终总结 当大家开开心心跨年的时候,我在补年终总结。 小时候恨不得时间过得快一点,现在不这么想了。 我的 2021年,都是平静、反复的一天天,没有出书、没有开源、没有跳槽、没有升官。没错,这可能是你看过的最 low、最不争气的总结,很抱歉给各位大佬拖后腿了。 写博客的话,我是认真的。今年总共写了 15 篇,中 阅读全文
posted @ 2021-12-31 21:25 子月生 阅读(294) 评论(8) 推荐(2) 编辑
摘要: 简单聊聊mysql的脏读、不可重复读、幻读 最近,在一次 mysql 死锁的生产事故中,我发现,关于 mysql 的锁、事务等等,我所知道的东西太碎了,所以,我试着用几个例子将它们串起来。具体做法就是通过不断地问问题、回答问题,再加上“适当”的比喻,来逐步构建脑子里的“知识树”。 需要提醒一下,这篇博客并不适合小白,因为你需要先了解排它锁、共享锁、事务,最重要的是你需要知道事务中的锁是什么时候加上、什么时候打开的。而这篇博客更多的是希望把这些碎片化的知识给连接起来。 阅读全文
posted @ 2021-12-24 13:38 子月生 阅读(1866) 评论(4) 推荐(4) 编辑
摘要: 如何使用原生的Hystrix 前面已经讲完了 Feign 和 Ribbon,今天我们来研究 Netflix 团队开发的另一个类库--Hystrix。 从抽象层面看,**Hystrix 是一个保护器**。它可以保护我们的应用不会因为某个依赖的故障而 down 掉。 目前,官方已不再迭代 Hystrix,一方面是认为 Hystrix 已经足够稳定了,另一方面是转向了更具弹性的保护器(而不是根据预先配置来启用保护),例如 resilience4j。当然,停止迭代并不是说 Hystrix 已经没有价值,它的很多思想还是值得学习和借鉴。 阅读全文
posted @ 2021-11-18 13:45 子月生 阅读(470) 评论(0) 推荐(1) 编辑
摘要: 对应`{"success":true,"message":"操作成功","data":"OK"}`这种 Response 结构,大家应该并不陌生吧,但是呢,最近对接了一个校验接口,让我开始怀疑我是否真的了解 response,所以,希望能了解各位同行的看法。 阅读全文
posted @ 2021-11-14 17:14 子月生 阅读(2268) 评论(40) 推荐(1) 编辑