- 博客(71)
- 资源 (1)
- 收藏
- 关注
原创 SpringBoot开启多端口探究--基于多ApplicationContext
前面探讨了management端口开启,grpc端口开启,本文继续探讨在SpringApplication中开启多个端口的方式之多ApplicationContext, 相比management端口基于多WebServer实例, 多ApplicationContext的颗粒度更大,也会略显粗暴,优点是简单。
2024-09-08 10:37:37
655
原创 SpringBoot开启多端口探究--开启gRPC端口
本文介绍了SpringBoot下开启gRPC端口的两种方案,前者仅由容器管理声明周期,后者由框架负责对象的配置,生成和生命周期,开发者可以更多关注自身业务。实际工作中如何处理,还请读者“量体裁衣”。
2024-08-18 10:48:31
1040
原创 SpringBoot开启多端口探究--开启management端口
从中有几个点值得借鉴:1. 独立的ApplicationContext可以作为资源隔离的一种方式,同时又不完全失去与parent的联系;2. 条件初始化在SpringBoot自动配置中的广泛应用;3. WebApplicationContext与ApplicationContext的区别在于WebServerFactory是否存在,以及RequestHandlerMapping+必要的注解识别,有了这点发现,做API隔离可用的方案也会更加丰富;
2024-07-28 11:11:36
2061
原创 SpringBoot服务数据热更新方案参考
本文介绍了基于SpringBoot的服务数据热更新思路,落地细节,后续问题以及潜在约束,作为一种热更新方案供各位看官参考。
2024-06-23 10:43:48
696
原创 深入Kafka client
本文讨论了Kafka发送消息的三种语义at-least-once, at-most-once, exact-once,并针对exact-once的单分区实现(幂等控制)和跨分区实现(事务消息)做简要介绍, 希望能帮助你梳理出Kafka broker端对消息发送QoS实现的基本脉络, 为进一步学习打基础。
2024-03-03 09:17:00
1205
1
原创 深入Kafka broker
本文深入Kafka broker节点内部, 探讨Kafka协议设计,延迟操作和组控制器的设计与实现, 结合之前的存储结构,建立起Kakfa broker的整体结构框架。
2024-01-20 10:48:24
1251
1
原创 Topic和Partition
对于一个topic而言, 其相关的文件数量=分区*副本因子。而所有的副本中, 通常第一个副本为优先副本, 而实际对外提供读写服务的是leader副本。通过优先副本选举, 将优先副本重新选举为leader副本。站在集群视角, leader副本数量影响broker的负载, 我们需要重新调整分区数量, 或指定副本位置来平衡负载。
2023-12-03 09:54:06
224
原创 Producer
本文介绍了Kafka Producer发送数据中涉及的线程和各自的职责,重点介绍了与应用直接相关的Interceptor, Serializer和Partitioner。
2023-11-12 10:55:55
1021
原创 Redis哨兵模式
本文介绍Redis主从模式的问题和官方推荐的解决方案之一--哨兵模式, 并介绍了哨兵模式下的典型拓补结构和Failover过程, 希望能帮助你对Redis高可用和Failover有更进一步的认识.
2023-08-27 11:13:37
251
原创 Redis Replication
本文介绍了Redis Replication的作用,以及相关的阶段和具体实现,希望能帮助你更好地理解Redis Replication的实现,感谢您的阅读。
2023-08-27 09:26:45
1324
原创 Redis Pipeline&Script
本文从pipeline的背景开始,介绍了pipeline的具体实现、与Shell pipeline的区别,以及与Script对比,希望能帮助你更好地理解和使用Redis。
2023-07-16 10:55:19
644
原创 Netty系列文章
1. Netty网络应用基础2. Java I/O3. IO/模型4. 网络应用编解码5. Netty Pipeline6. Netty EventLoopGroup&EventLoop7. Netty ThreadLocal&FastThreadLocal8. Netty Future&Promise9. Netty内存管理–(旧)PoolChunk&伙伴分配10. Netty内存管理–内存池空间规格化SizeClasses11. Netty内存管理–PoolChunk&PoolSubP
2023-07-09 10:40:47
296
原创 List, Set, Ordered-Set&Hash
本文对Redis中除String外的4种数据类型从基本特点,使用场景和底层实现三个角度做小结。
2023-07-02 10:36:15
292
原创 Netty ObjectPool
本篇咱们讨论了对象池的作用是复用对象,基于并发集合+保鲜控制这种全局实例的常规实现,最终重点介绍了Netty中基于线程颗粒度的MpscQueue+Handle的特别实现,希望帮助你建立起Netty对象池的全局视角。
2023-05-14 11:48:11
681
原创 Netty内存管理--内存分配器PooledByteBufAllocator
本篇聊聊直接使用的内存分配器PooledByteBufAllocator基于实际场景做了一些额外的优化。
2023-04-30 16:24:39
1138
原创 Netty内存管理--内存池PoolArena
想必你已知道了Netty中的内存规格化(SizedClass), Page和SubPage级别的内存分配, 但是具体使用者不应该关心应该申请page还是subpage。而且从过去的经验来说, 申请page/subpage的数量也是个动态值, 如果申请使用完之后就释放那使用内存池的意义就不大。Netty的实现中引入了分配器和内存池。其中分配器面向使用者, 解决统一申请问题。内存池负责完成内存的申请和复用管理
2023-04-30 16:20:28
1086
原创 内存管理--PoolChunk&PoolSubPage
想必你已知道内存池实现需要兼顾分配效率和空间利用率, 通过对实际业务的观察你会发现, 通常小内存的申请和回收是比较频繁的, 大内存使用相对较少。比如创建16个元素以内的链表或者顺序表比较常见, 有160个元素的比较少。因此, 针对大小内存申请分开考虑是个不错的注意。在Netty 4.1.73中就把尺寸分为2个大类, Normal和Small。其中small级别的分配是在normal的基础上进行。相当于分配都是按page分配, 但是针对小于page颗粒度的内存又多了一些独立管理。
2023-04-30 15:56:38
1455
原创 Netty内存管理--内存池空间规格化SizeClasses
内存池类似于一个内存零售商, 从操作系统中申请一整块内存, 然后对其进行合理分割, 将分割后的小内存返回给程序。
2023-04-30 15:54:03
1269
原创 Netty内存管理--(旧)PoolChunk&伙伴分配
本篇Netty中内存内存规格化,对应的管理颗粒Chuank和Page,以及Chunk中Page的分配与回收过程。
2023-04-17 20:35:40
558
原创 细说ThreadLocal&FastThreadLocal
细聊JDK中的ThreadLocal具体实现和Netty中FastThreadLocal所做的优化
2023-04-02 10:45:43
625
原创 Netty pipeline
本文介绍了Netty pipeline对链接创建, IO处理和消息处理的过程,并进一步探讨了pipeline的结构的特点。
2023-03-19 10:50:39
633
原创 网络应用编解码
本文从业务编解码和传输编解码两个方面讨论网络应用中的编解码问题。其中应用编解码层面本文讨论了评价方式和场景特点, 在传输编解码层面讨论了典型问题和解决方案。最后, 本文分享了Netty中对编解码的支持和以及部分个人使用经验。
2023-03-12 11:52:18
317
原创 Java I/O
关于IO, 想必你听过很多中I/O方式, 但是不同的场景下说法不同。有的是OS视角的, 有的是JDK本身支持的, 有的是纯实现视角。但是作为一个developer, 我希望你能先搞清楚上下文之后, 再去理解内容, 否则容易抬杠。这个上下文有横向和纵向两个维度。纵向维度包括JDK底层, JDK上层包装库, 开发框架(如Netty)等。横向的比如在JDK底层实现中支持BIO和NIO, 在JDK上层包装库维度支持BIO、NIO和AIO。开发框架Netty中包含BIO, NIO和OIO。
2023-02-26 11:41:46
380
原创 Debug Python project managed by poetry under VSCode in attach mode
【代码】Debug Python project managed by poetry under VSCode in attach mode。
2022-11-30 10:29:12
760
原创 RPC client之OpenFeign
本文我们一起看看SpringCloud中的OpenFeign组件,探讨下其整体结构和带给我的启发。内容涵盖启用Feign,创建代理对象,到最终响应处理的整个过程。以上就是今天要讲的内容,本文介绍了OpenFeign在SpringBoot环境下如何启用@FeignClient注解,对应的BeanDefinition是如何注册的,BeanInstance是如何生成的,并简单分析了基于Feign的RPC调用过程。从内容上来看,基本覆盖了FeignClient的骨架内容。
2022-09-18 11:02:16
1829
原创 FeignClient 数据请求方式小结
基于SB/SC做微服务化改造,服务之间的HTTP请求大多是基于FeignClient来完成。本文对个人工作中遇到的使用方式做一个小结。本文对FeignClient在使用过程中遇到几种方式做了小结,期待对你有所帮助。...
2022-08-21 10:53:37
2743
2
原创 对ByteBuf设计的感想
最近以ByteBuf作为入口,开始了Netty的学习,在这里对个人的想法、看法做一个总结。本文总结了自己对ByteBuf设计实现上的一些感想,希望对你有所帮助。如果你能给我带来更多输入,欢迎交流。
2022-08-14 09:57:24
128
原创 聊聊CentOS系统调用
本文从计算机组成,操作系统角度结合个人经验分析系统调用,帮助你理解系统调用。系统调用指的是对操作系统暴露的API的调用。至于为什么调用OS的API,是因为OS提供了一个应用进程运行的基础,大多数程序离开操作系统是无法运行的。系统调用是怎么产生的呢?在编程语言层面,如果是需要操作系统支持的函数,其底层实现上会包装OS的API,最终以编程语言的普通函数一样暴露给开发者。因此,最终是否发生系统调用与进程要完成的任务有关。......
2022-07-31 15:12:04
298
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人