- 博客(22)
- 资源 (1)
- 收藏
- 关注
原创 年终活动付费产品秒杀系统设计及实践
通过优化架构设计、简化秒杀流程、消息队列异步落库、提升库存管理效率、数次的压测调优及强化系统稳定性,秒杀系统成功支持年终活动开展21场秒杀活动,有效应对瞬间高并发流量的冲击(最高qps达到1万以上),保障支付签约和付款流程的顺利完成,助力年终活动顺利开展。
2025-02-16 13:28:45
874
原创 一次性让你明白druid连接池原理
通过分析druid连接池原理,进一步熟悉连接池各个核心参数的作用,用于指导核心参数的配置,同时可以带着同样的思路拓展到内存池等池化技术。
2025-01-12 12:15:47
912
原创 警惕!批量Update操作不当可能引发服务崩溃
基于以上分析得出结论:mycat版本较低无法支持批量update,提交批量update语句致Mycat乱报,进而引发一系列问题。针对以上问题,给出以下解决方案:1、规避业务写批量更新语句;2、中间件升级mycat版本,但目前有很多定制化开发,中间件不是太愿意升级。3、换成其他中间件比如shardingjdbc;短期按方案1执行,目前分片库存量数据量达到将近百亿,明年逐步完成去Mycat。本文由博客一文多发平台OpenWrite发布!
2024-12-07 22:59:44
347
原创 Kafka消息发送致接口超时原因分析与解决
借助apm、gc监控等定位到发券接口超时由kafka发送超时引起,经过分析后引出两个疑问:A、apm为什么未能精准采集kafka发送耗时,此疑问通过skywalking中插件源码得以解释;B、kafka发送超时的原因。通过梳理kafka client端发送流程中可能存在的阻塞点,服务端性能会影响客户端。在服务端不可控的情况,因此提出要将ack设置成0,同时引入额外的重试机制保证数据的完整性。
2024-11-22 23:19:58
1012
原创 基于canal与Redis发布订阅构建让应用起飞的多级缓存方案及实践
经过选型分析,选择redis与caffeine构建两级缓存,用canal解决db和redis之间的数据同步,用redis发布订阅解决分布式缓存与本地缓存之间的数据同步,构建近乎实时的两级缓存,接口性能得到约19%的提升,redis集群负载下降一半以上。
2024-11-16 12:48:37
1011
原创 mybatis系列1——mapper代理对象生成原理以及spring与mybatis整合
mybatis中mapper代理对象生成原理以及mybatis如何跟spring进行整合
2022-03-26 00:02:15
295
1
原创 SpringBoot自动装配原理以及starter技术(上)
自动装配作为SpringBoot四大核心(启动依赖、自动装配、Actuator、命令行界面)组件中最常用之一,本节深入源码一探究竟如何实现自动装配。阅读本文可以清楚以下三个问题:1、如何实现自动?2、装配什么?3、如何实现自定义starter?
2021-12-05 21:44:42
642
原创 dubbo源码系列2——spi源码解读(下)
今天是2021年10月1号,在此祝伟大的祖国母亲生日快乐,繁荣昌盛! 上一节对sdk spi机制从源码角度进行了分析,文末留下思考:jdk spi有什么缺点?总结如下:无法按需加载ServiceLoader通过LazyIterator实现延迟加载,但是加载时仍然是遍历所有的类进行实例化,无法按需加载;多线
2021-10-03 08:49:59
2403
1
原创 dubbo源码系列1——spi源码解读(上)
Dubbo作为分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案。底层的微内核+插件机制为上层提供易拓展的特点,微内核和插件的核心即spi机制。本文将从以下几个方面介绍spi机制,重点通过源码分析dubbo spi底层实现原理。spi介绍jdk spidubbo spidubbo ioc/aop1、spi &nb
2021-09-25 17:35:24
325
1
原创 spring源码系列8——最详细的循环依赖解读
前面系列3到系列7总共5篇文章分析了spring容器启动的整个过程,但未对部分重要细节进行深入分析,比如spring循环依赖,因此本节对spring循环依赖进行深入分析。先思考以下三个问题:spring能解决所有的循环依赖吗?spring如何解决循环依赖?一级缓存能否解决循环依赖?两级缓存能否解决循环依赖?为什么需要三级缓存?相信看完本文,上面问题豁然开朗。1、前置知识1.1、前
2021-09-12 16:04:01
2586
5
原创 spring源码系列6——spring启动流程4
前面系列3、系类4、系列5分析了spring如何找到交给它管理的类以及如何将所管理的类用beanDefintion进行表示并存储在beanDefinitionMap中。本节重点分析spring如何通过非懒加载以及单例beanDefinition生成bean实例,可以分成两个阶段:实例化和初始化。1、preInstantiateSingletonsA、遍历beanDefinitionNames,然后根据beanName从beanFactory得到beanDe
2021-09-04 16:14:11
209
原创 spring源码系列5——spring启动流程3
上一节分析invokeBeanFactoryPostProcessors方法时,仅对 parser.parse(candidates)进行深入分析,本节着重分析 this.reader.loadBeanDefinitions(configClasses)。预备知识——初识@Import@Import注解导入的类总共分成三种:导入普通类——将导入类注册到容器中;导入ImportSelector接口实现类—
2021-06-13 19:43:16
476
1
原创 spring源码系列4——spring启动流程2
上一节着重对refreshContext之前的启动流程进行了分析,目前beanDefinitionMap已经有如下类的bean定义:ConfigurationClassPostProcessorAutowiredAnnotationBeanPostProcessorCommonAnnotationBeanPostProcessorEventListenerMethodProcessorDefaultEventListenerFactorySprin
2021-06-12 17:51:43
333
原创 spring源码系列3——spring启动流程1
因目前基本都是采用java config配置,因此直接采用spring-boot的方式启动demo进行源码分析。spring启动过程主要分成两个部分:容器找到所有需要被spring管理的bean定义注册到beanDefinitionMap中;容器通过beanDefinitionMap将所有的单例bean进行实例化放入单例池中;启动流程分析说明:本节只分析第1部分中执行refreshContext之前的执行流程;spring源码系列4分析
2021-05-05 16:29:16
276
1
原创 spring源码系列2——spring bean初探
本节主要介绍beanDefintion体系结构、关键参数解析以及beanDefintion在整个框架中作用。总所周知, spring里面的实例对象都以bean的形式存在,每个bean对象的实例化都是以beanDefinition为基础,通过反射获得构造函数,通过调用构造函数得到对应实例。为什么需要beanDefintion,而不是直接通过类class直接生成bean?下面即将揭晓。#1、beanDefinition体系结构其中绿虚线代表接口实现,绿实线代表
2021-05-03 22:23:24
298
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人