项目实战
文章平均质量分 82
以实战为基础,深入项目研发,提升编码能力和思维能力。
白云coy
从0到1负责过千万级月活电商平台的系统重构和架构设计,月GMV从1亿到10亿+,QPS从5w到35w。Github开源项目l2cache的贡献者,Star数480+。做过电商平台、Saas平台、业务中台、聚合支付等行业赛道。
展开
-
基于trace_id实现SpringCloudGateway网关的链路追踪
在 Spring Cloud Gateway 网关中,如何处理trace_id原创 2024-07-20 16:11:26 · 1521 阅读 · 1 评论 -
微服务升级导致调用超时异常的分析和方案
微服务升级导致调用超时异常的分析和方案前几天,在做线上异常日志巡检时,发现通过公司自研的RPC框架调用订单服务出现connect timed out异常,在此记录对该问题的排查和相应的解决思路,作为备忘。前情提要:1、基于自研注册中心的服务发现体系。2、基于自研RPC框架的服务间通信。3、通过阿里云云效流水线将服务部署到K8S平台。4、K8S平台下的 服务升级 是采用 滚动升级 逐步替换的策略。5、服务升级 包含 服务下线和服务上线两个动作。涉及到服务的注册与发现。6、下文中的负载均衡原创 2020-06-05 14:42:53 · 1998 阅读 · 1 评论 -
PolarDB MySQL版DDL操作获取MDL锁失败
MDL锁(Metadata Lock),即表级别的元数据锁。跟数据锁一样,元数据锁也分读锁和写锁。原创 2023-06-29 14:06:28 · 933 阅读 · 0 评论 -
解决Kubernetes就绪检查导致网关不可用的问题
在K8s环境中,由于就绪检查设置不合理的问题,导致出现网关不可用的情况。本文将详细探讨这个问题的原因,并提供一些解决方案,帮助有需要的同学解决类似的问题。注:网关使用 spring-cloud-gateway。原创 2023-05-29 19:03:42 · 970 阅读 · 0 评论 -
基于trace_id实现ForkJoinPool的链路追踪
ForkJoinPool是Java提供的一种线程池实现,特别适用于处理递归分解的任务。Java 8提供的 Stream并行流采用了 ForkJoinPool 作为默认实现,当我们基于并行流做一些业务操作时,日志的链路追踪往往很容易在这里出现断层的情况。本文将探讨如何基于trace_id实现ForkJoinPool的链路追踪,以提升系统的可追溯性。原创 2023-05-09 19:17:09 · 1412 阅读 · 2 评论 -
技术破局,业绩狂飙十倍:亿级电商平台重构大揭秘
在业绩年增10倍的狂飙式增长下(年GMV5亿到年50亿),一个累计超过百亿GMV的电商平台是如何进行从0到1的系统重构实践的。原创 2023-04-19 10:48:25 · 440 阅读 · 0 评论 -
Spring Cloud Gateway集成Actuator的安全漏洞和解决方案
最近线上环境出现一起安全事件,就是由于Spring Cloud Gateway集成Actuator导致被攻击,攻击者通过动态添加路由规则,导致系统出现异常。下面将详细介绍这一事件。Spring Cloud Gateway集成Actuator后可以提供更多的监控和管理功能,但也增加了安全风险。在使用过程中,需要注意限制访问权限和动态路由规则的范围,以避免类似的攻击事件发生。原创 2023-04-18 18:02:46 · 3952 阅读 · 0 评论 -
MYSQL深度分页的常见优化方案
MYSQL深度分页的常见优化方案原创 2023-02-28 10:37:49 · 2546 阅读 · 2 评论 -
数据库CPU满载如何处理
数据库CPU满载的分析原创 2022-11-08 21:10:40 · 3206 阅读 · 0 评论 -
JMockit单元测试
单元测试简介什么是单元测试单元测试是测试应用程序的功能是否能够按需要正常运行。注:通俗一点将就是用来验证某段代码的行为是否与我们期望的一致。单元测试的目的保证产品质量。注:通俗一点讲就是减少bug,提高代码质量。单元测试要写多细单元测试不是越多越好,而是越有效越好!哪些代码需要有单元测试覆盖逻辑复杂的容易出错的不易理解的,即使是自己过段时间也会遗忘的,看不懂自己的代码,单元测试代码有助于理解代码的功能和需求。公共代码。比如自定义的拦截器;工具类等。核心业务代码。一个产品原创 2020-06-10 09:14:42 · 828 阅读 · 1 评论 -
重构项目迭代版本的管理流程
1、制定重构阶段性计划明确重构内容和时间段,需提前输出给到相关负责人进行确认。2、梳理业务和旧系统业务逻辑深入业务,明确现状,为后续制定重构详细计划做准备。3、确定重构内容影响范围避免涉及内容太广,把内容控制在可控范围内。4、制定重构详细计划精准排期,识别风险,为后续开发阶段做准备。5、制定重构排期计划表协调相关团队负责人,明确后端开发、前端开发、联调、测试、运维、上线等几个阶段的人员和时间。根据各个团队的资源情况,敲定上线时间点。若资源不够,时间不足,则可基于上线时间原创 2021-05-24 19:56:52 · 760 阅读 · 1 评论 -
高性能`锁库存`/`释放库存`重构实战
记录一次高性能锁库存/释放库存重构实战编写本文的主要目的有两个,一是输出文档方便回顾,二是从网上很难找到高性能锁库存实战,本文可供大家参考。本次重构有几大难点:1、随着业务发展存在诸多历史遗留问题,技术债积重难返2、重新组建重构团队,人永远是最重要的3、团队在业务和系统实现细节方面存在诸多盲点4、跨团队协作问题,言外之意人才是最大的不可控因素重构之路举步维艰艰,所以一定要保持良好的心态,去积极应对各种各样的问题和难题。尤其涉及到跨团队协作时一定要慎重,何时该妥协,何时该硬刚,一切以重构上线为目原创 2020-10-14 18:28:17 · 2714 阅读 · 2 评论 -
基于trace_id的链路追踪,含Feign、Hystrix、线程池等场景
目前公司的微服务架构是基于Spring Cloud来实现的,而在实现服务间trace_id链路追踪的时候,发现服务提供方和服务调用方的trace_id不一致,所以在此记录该问题的解决方案,并针对Java体系中常见的场景进行了分析和给出了具体的实现方案。一、概述在微服务的体系架构中,都存在一个服务与服务之间的调用链路追踪问题。虽然在生产环境中会采用第三方的组件或服务来实现链路追踪,比如SkyWalking、阿里云arms等,但一旦脱离开这些第三方的功能,微服务体系中的问题排查将会变得异常艰辛,所以如果.原创 2020-09-02 12:03:08 · 6594 阅读 · 23 评论 -
开发设计实践:一个优雅的支付网关路由设计方案
简介本文的核心主题是关于一个优雅的支付网关的设计方案是如何设计出来的。结合项目实战,后续会将支付网关的核心逻辑从项目中剥离出来并实现开源,以供参考。不同公司接入的第三方支付可能不一样,有的直连微信和支付宝,有的接入聚合支付通道,所以请将关注点重点放在设计方案这个层面,因为设计思想可以复用到别的场景,而代码则不一定适用。做一个有灵魂的码农。划重点,先上整体演进图:下面将详细介绍随着业务的发展,是如何一步一步演进出最后的设计方案的,具体如下:1、阶段一:青铜青铜,一顿操作猛如虎,以一个类走天下原创 2021-09-29 12:45:06 · 4687 阅读 · 1 评论