- 博客(61)
- 资源 (6)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 SkyWalking链路追踪上下文TraceContext的traceId生成的实现原理剖析
SkyWalking通过字节码增强技术实现,结合依赖注入和控制反转思想,以SkyWalking方式将追踪身份traceId编织到链路追踪上下文TraceContext中。是不是很有趣,很有意思!!!
2024-03-04 20:54:42
2902
7
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 ReactiveRedisTemplate自动配置定义和序列化方式选择-spring-data-redis
Spring-Boot的Redis自动配置类,RedisReactiveAutoConfiguration和RedisAutoConfiguration,组件ReactiveRedisTemplate和RedisTemplate默认使用JDK序列化方式,在现实业务场景中很难使用,其存储的值可读性差且又长。我觉得不是很合理,意味着使用它们的用户都需要自己重新自定义。
2023-12-03 18:31:15
2053
1
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Spring Boot实现HTTP大文件断点续传分片下载-大视频分段渐进式播放
服务端如何将一个大视频文件做切分,分段响应给客户端,让浏览器可以渐进式地播放。Spring-Boot实现HTTP分片下载断点续传,从而实现H5页面的大视频播放问题,实现渐进式播放,每次只播放需要播放的内容就可以了,不需要加载整个文件到内存中。
2022-10-19 19:34:17
3768
21
原创 Logback日志异步打印接入指南,输出自定义业务数据
随着应用的请求量上升,日志输出量也会成线性比例的上升,给磁盘IO带来压力与性能瓶颈。应用也遇到了线程池满,是因为大量线程卡在输出日志。为了缓解日志同步打印,会采取异步打印日志。这样会引起日志中的追踪id丢失,不能基于追踪id查询相关日志,给问题解决带来新的挑战。使用MdcUtil传递用户id、教练id、优惠券id、商品id、交易订单id、支付订单id、物流订单id、api、responseTime、responseCode、追踪id等,从用户、教练、营销、商品、交易、物流等维度观测用户的实操路径。
2024-07-17 12:28:22
295
原创 度量监控平台,研发的助手
【背景】1.指标度量遥测数据准确、多维度和可观测2.统一管控台入口(SLS/ARMS日志查询,OpenTelemetry/SkyWalking,Grafana)3.Trace、Metric、Log (链路、指标、日志)【目标】1.快速排障,解决问题的助手2.整体联动,降低使用成本3.梳理排查路径,逆向思维反推问题,提效
2024-07-03 15:05:05
356
原创 APP客户端接口本地缓存,降低请求量和请求峰值,减少云资源成本
针对资源位、评价等静态信息在xx点高峰时进行缓存,达到的目标。在成本预算控制下,云资源成本和WAF都受限于请求峰值。出于业务和数据安全考虑,公司希望接入阿里云的WAF,但一年价格和成本较高。
2024-06-23 00:54:59
943
原创 应用排行榜度量维度收集,挖掘度量遥测数据的深层价值,支撑业务决策
围绕度量遥测数据构建可视化产品,看板与监控告警。【目标】提升服务稳定性提高资源利用率,降低云成本(降本)业务梳理与架构治理度量维度
2024-06-22 23:43:57
647
原创 【Arthas案例】应用包含两个相同全限定类名StaticLoggerBinder,引起log4j.Level类找不到异常
【3分钟内解决问题】两个不同的GAV依赖冲突,包含相同全限定类名,引起ClassNotFoundException【案例1】某应用依赖两个GAV不同的jar,但包含两个相同全限定类名StaticLoggerBinder,引起log4j.Level类找不到异常1.完整的异常调用栈【从案发现场找线索】2.关键的异常日志3.案发现场的源代码4.解决方法
2024-06-15 20:18:27
698
原创 Spring框架是如何查找方法上的异步任务注解@Async
Spring框架层面,查找方法上的注解的原理与机制是一样的。在方法层面,Spring框架已经找到子类的@Async注解,原因是查找注解会搜索整棵类型继承树,包括超类和实现的接口。
2024-06-12 23:06:51
622
2
原创 Spring异步任务@Async的默认线程池执行器是如何初始化的
Spring异步任务@Async的默认线程池执行器,是从哪里来?是如何初始化的?【结论】异步任务@Async的默认线程池执行器是通过TaskExecutionAutoConfiguration#applicationTaskExecutor自动注入的。
2024-06-03 12:16:29
904
原创 Kubernetes配置-为Pod和容器管理资源
Kubernetes 文档概念配置当你定义 Pod 时可以选择性地。最常见的可设定;此外还有其他类型的资源。当你为 Pod 中的 Container 指定了时, kube-scheduler 就利用该信息决定。当你为 Container 指定了时,kubelet 就可以。kubelet 还会为容器预留所 request(请求) 数量的系统资源,供其使用。
2024-05-30 18:22:12
614
原创 问题带来多少成长,看你挖得有多深多痛
本文从实际工作中遇到的一个Redis访问超时问题出发,探究背后Spring、Lettuce和Netty的工作原理,并利用Arthas等调试工具,分析了EventLoop线程对连接处理的重要性,以及在处理Pub/Sub事件时避免阻塞操作的必要性。通过观察不同版本环境下的行为差异,加深了对JDK版本和程序环境适配的理解,为今后排查类似问题积累了宝贵经验。力是相互的,成长与痛苦也是相互的。知其然,知其所以然。
2024-04-22 22:50:46
1043
1
原创 【实战】RocketMQ消息灰度方案-消息逻辑隔离
消息隔离的原则灰度场景1.灰度消息只由灰度节点消费2.灰度消息可以由正常节点消费消息逻辑隔离的灰度方案
2024-04-21 23:55:45
910
原创 Dubbo应用可观测性升级指南与踩坑记录
应用从dubbo-3.1.*升级到dubbo-*:3.2.*最新稳定版本,提升应用的可观测性和度量数据准确性。1. dubbo版本发布说明2. 应用修改点3. 踩过的坑
2024-04-17 19:06:06
1715
2
原创 从API到Agent:洞悉LangChain工程化设计
本文作者试着从工程角度去理解LangChain的设计和使用。大家可以将此文档作为LangChain的“10分钟快速上手”手册,希望帮助需要的同学实现AI工程的Bootstrap。
2024-04-17 18:35:47
810
原创 【Arthas案例】某应用依赖两个GAV-classifier不同的snakeyaml.jar,引起NoSuchMethodError
【3分钟内解决问题】多个不同的GAV-classifier依赖冲突,引起NoSuchMethodErrorMaven依赖的三坐标体系GAV(G-groupId,A-artifactId,V-version)classifier通常用于区分从同一POM构建的具有不同内容的构件物(artifact)。它是可选的,它可以是任意的字符串,附加在版本号之后。警察抓犯人,收集线索是破案的关键所在。
2024-04-05 01:19:25
983
原创 分布式链路追踪与云原生可观测
分布式链路追踪系统历史Dapper,大规模分布式系统的跟踪系统大规模分布式系统的跟踪系统:Dapper设计给我们的启示阿里巴巴鹰眼技术解密京东云分布式链路追踪在金融场景的最佳实践分布式链路追踪在字节跳动的实践可视化全链路日志追踪 - 美团技术团队
2024-04-03 11:35:57
1353
原创 Java异常体系结构核心解析-Throwable
Java异常体系结构,是一种分层/层次结构树模型。异常的根类是 java.lang.Throwable,核心数据结构/模型和实现都在于此类。了解她们对理解异常信息很关键。其子类 java.lang.Exception、java.lang.RuntimeException、java.lang.Error 都是标签类。
2024-02-24 21:54:35
434
1
原创 Java-8函数式编程设计-Functional-Interface
我自己的理解,函数式编程对用户最大的价值是促使开发者养成模块化编程的习惯,代码可读性和维护性提高很多。通过阅读JDK 8的和包源码,意在理解Java的函数式接口设计。读后自己的理解:Java函数式编程的核心是,可在已有的接口上进行积木拼插组合,形成完整地类型转换系统。最基础的数学函数包括一元函数、谓词、二元函数、运算符计算,对应的Java接口分别是Function、Predicate、BiFunction、BinaryOperator。
2024-02-24 21:37:09
688
原创 从Spring-Boot-Starters学习如何治理maven依赖版本冲突问题
做中间件对接业务的同学,肯定对jar依赖冲突问题印象深刻。Spring Boot Starters 实质上是Maven依赖和插件模块化管理,其设计初衷是解决jar依赖冲突问题。Spring Boot Starters 文档罗列了所有starter,包括starter名称、描述以及POM。
2024-02-23 14:55:37
434
1
原创 Spring-Boot常见的应用属性配置集
深入之前先用好,用好之前先全面了解功能。全面了解功能可以从官方文档的**配置参数选项**作为切入点。
2024-02-23 14:41:52
258
1
原创 一文详解 Java 限流接口实现
消息中间件就是采用漏桶限流的思想。能看出作者有深入地思考与沉淀👍令牌桶算法、消息队列,业务使用消息队列与漏桶算法的主要区别:1.容量资源:消息队列,存储容量足够大;漏桶算法,桶的容量有限;2.时效:消息队列,异步处理;漏桶算法,同步处理;3.灵活性:与漏桶算法相比,消息队列提供了更大的灵活性。例如,可以动态地调整消费数量。
2024-01-17 10:50:27
311
原创 使用RedisCacheWriter#clean在线异步地批量扫描匹配删除缓存数据-spring-data-redis
生产环境,某云的某个业务Redis实例,触发内存使用率,连续 3 次 平均值 >= 85 %告警。运维同学告知,看看需要怎么优化或者升级配置?分享了其实例RDB的内存剖析链接。通过内存剖析详情发现,存在某类未设置过期时间且无用的keys,其内存占用约3.8GB,内存占比25%。内存占比挺大,有确定的成本经济收益。做事有动力啦!
2023-12-18 01:06:40
1393
2
原创 如何进行高效的代码审查
这篇文章详细讨论了如何进行高效的代码审查,包括作者和审查者应遵循的指导原则。文章强调了尊重审查者的时间,自我审查代码,将大的更改列表分解为小的、逻辑上的单元,自动化简单的任务,限制代码更改的范围,优雅地接受批评,最小化审查回合之间的延迟,明确地沟通响应,不忘记文档等。同时,审查者也需要验证代码是否必要、设计得当,是否易读、清晰,**注释是否解释了“为什么”**而不是“做什么”,代码是否过于复杂,是否遵循风格指南,是否经过充分的测试和文档记录等,对代码审查实战具有极大的参考价值。
2023-08-04 15:58:47
122
1
原创 AI对话交互场景使用WebSocket建立H5客户端和服务端的信息实时双向通信
WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接,并进行双向数据传输。
2023-06-03 01:36:58
1578
原创 Arthas在线诊断Docker容器应用业务问题
Java 应用诊断利器Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常、监测方法执行耗时、类加载信息等,大大提升线上问题排查效率。
2023-01-13 15:52:04
1087
1
原创 分布式系统可观测性之应用业务指标监控
2017 年的分布式追踪峰会(2017 Distributed Tracing Summit)结束后,Peter Bourgon 撰写了总结文章《Metrics, Tracing, and Logging》系统地阐述了这三者的定义、特征,以及它们之间的关系与差异。 文中将可观测性问题映射到了如何处理指标(metrics)、追踪(tracing)、日志(logging)三类数据上。
2022-11-27 20:58:57
662
原创 Go修改ENV代理GoProxy解决运行官方样例代码无法获得模块的问题
Go修改ENV代理GoProxy解决运行官方样例代码无法获得module的问题
2022-11-11 11:51:22
2210
原创 Spring Boot之执行器端点Actuator-Endpoint实现剖析
本文从Spring Boot源码层面剖析执行器端点的实现原理。整体实现思路是将端点(Endpoint)适配委托给MVC层策略端点(MvcEndpoint),再通过端点MVC适配器(EndpointMvcAdapter)将端点暴露为HTTP请求方式的MVC端点,最后分别使用端点自动配置(EndpointAutoConfiguration)和MVC方式暴露端点的配置(EndpointWebMvcManagementContextConfiguration)来注入端点组件和端点处理程序映射组件、MVC端点注册表组
2017-03-12 23:34:05
13609
2
原创 【线上问题】线上服务器内存使用量已达到90%报警-内存泄漏
2016-05-06中午11:56,收到“[sentry2]2016-05-06 11:56:09 xxxxxxhost xxx.xxx.xxx.xxx 内存使用已达到90.18%”报警。首先在脑海浮现的,应该哪里出现内存泄漏了。一、确认问题马上到 Sentry 监控系统查看了该服务的“服务器监控”指标,发现其中2台机器的内存使用量都超过了90%,另外2台尽然没有监控数据(以前是...
2016-05-09 00:57:29
6031
3
原创 Redis Hash 的 HSET、HGET、HMSET、HMGET 性能测试
【压测环境】操作系统:Ubuntu 14.04 LTSLinux版本:3.13.0-24-genericx86_64GNU/Linux处理器:4核的AMD Athlon(tm) II X4 640Processor @800MHz机器内存:共 8GB,已使用 6GB,未使用 2GB,交换区 未使用Redis版本:2.8.17Redis内存:500MB...
2015-06-09 14:06:55
9606
1
原创 [安全] MyBatis如何防止SQL注入
如果我们order by语句后用了${},那么不做任何处理的时候是存在SQL注入危险的。你说怎么防止,那我只能悲惨的告诉你,你得手动处理过滤一下输入的内容。如判断一下输入的参数的长度是否正常(注入语句一般很长),类在起作用,PreparedStatement是我们很熟悉的Statement的子类,它的对象。所以,在我们的应用中需要做一些工作,来防备这样的攻击方式。{xxx}”这样的参数,要手工地做好过滤工作,来防止SQL注入攻击。(上面的对比示例是我自己添加的,为了与前面的示例形成鲜明的对比。
2015-06-06 23:13:12
367
1
原创 Lua编译器的选择与源码安装
在Nginx上使用Lua脚本能做很多有价值的事情,比如生成请求的唯一标识(排查问题)、统一的权限校验、限流防洪(保证服务正常可用)等。 Lua是什么?Lua是一种轻量级的多范式编程语言,其被设计为一种可扩展的语义脚本语言作为首要目标。(英语发音:/ˈluːə/,是葡萄牙语中“Lua”(月亮)的意思)[摘自] Lua (programming language) - Wikipe...
2015-06-06 19:05:10
490
Hadoop: The Definitive Guide
2010-05-21
Java and XML,3rd Edition
2010-05-03
Opengl Programming Guide Six Edition English pdf
2009-12-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人