Java实战
文章平均质量分 93
java实战总结
阿丸笔记
微信公众号:阿丸笔记。
Java知识图谱:https://github.com/saigu/JavaKnowledgeGraph
展开
-
线上kafka消息堆积,consumer掉线,怎么办?
最近处理了一次线上故障,具体故障表现就是kafka某个topic消息堆积,这个topic的相关consumer全部掉线。整体排查过程和事后的复盘都很有意思,并且结合本次故障,对kafka使用的最佳实践有了更深刻的理解。好了,一起来回顾下这次线上故障吧,最佳实践总结放在最后,千万不要错过。原创 2022-11-14 13:48:51 · 885 阅读 · 1 评论 -
Java SPI 和 API,傻傻分不清?
最近新写了一个中间件「运行时动态日志等级开关」,其中使用Java SPI机制实现了自定义配置中心,保证良好的扩展性。项目地址,走过路过可以点个star :)https://github.com/saigu/LogLevelSwitch在使用过程中,突然发现SPI其实和日常写API接口,然后进行implements实现非常相似,那SPI到底和普通API实现有啥区别呢?带着这个问题,我们一起来梳理下SPI机制吧。本文预计阅读时间10分钟,将围绕以下几点展开:什么是 SPI 机制原创 2022-05-27 10:00:17 · 283 阅读 · 0 评论 -
写了个开源小中间件——运行时动态日志等级开关
a middleware project for log level change during application runtime原创 2022-04-18 10:20:06 · 298 阅读 · 0 评论 -
记一次异步处理导致Jetty Request对象泄漏
最近排查一个bug,发现了一系列有意思的东西,对「自定义线程池」、「Jetty线程模型」都有了一些新的认识。原创 2022-01-11 00:46:31 · 357 阅读 · 0 评论 -
用ThreadLocal来优化下代码吧
最近接手了一个老项目,看到一个很有意思的现象。这个项目中大量的方法入参都会带上user信息,比如这样它的意图是希望在方法内使用user的信息,但是如此大范围的传递用户信息,第一感觉就是不优雅。那有什么办法可以优化一下呢?我们第一反应是,可以存一个全局变量,在初始位置将用户信息存入全局变量,然后在需要的地方去get一下。那在WEB应用中,每个请求都是一个独立线程,怎么去标记呢?可以用线程的id去作为map的key,将该请求的用户信息作为map的value。咦?很熟悉的感觉。没错,Java已原创 2020-09-30 14:20:43 · 898 阅读 · 1 评论 -
线上问题排查,一不小心踩到阿里的 arthas坑了
最近帮新来的校招同学排查一个线上问题,问题本身不是很难,但是过程中踩到了一个arthas的坑,挺有意思的。同时,也分享下在排查过程中使用的一些比较实用的工具,包括tcpdump、arthas、simpleHTTPServer等,希望能对大家有所帮助。1.问题描述新开发的一个功能,简单来说,就是读取数据库的数据展示在前台。本地启动服务调试,用postman调用api,返回数据显示正常,数据中的中文也正常。但是部署到线上环境后,通过chrome浏览器调用和postman调用接口,返回的非中文数据正常,原创 2020-10-27 13:55:34 · 3417 阅读 · 15 评论 -
亿级大表分库分表实战总结(万字干货,实战复盘)
分库分表的文章网上非常多,但是大多内容比较零散,以讲解知识点为主,没有完整地说明一个大表的切分、新架构设计、上线的完整过程。因此,我结合去年做的一个大型分库分表项目,来复盘一下完整的分库分表从架构设计 到 发布上线的实战总结。1.前言为什么需要做分库分表。这个相信大家多少都有所了解。海量数据的存储和访问成为了MySQL数据库的瓶颈问题,日益增长的业务数据,无疑对MySQL数据库造成了相当大的负载,同时对于系统的稳定性和扩展性提出很高的要求。而且单台服务器的资源(CPU、磁盘、内存等)总是有限的,原创 2020-11-16 16:52:22 · 1113 阅读 · 1 评论