由于线上业务量级比较大(日请求上亿,日活用户几十万),同时业务涉及逻辑很复杂,线上日志级别我们采用的是 info 级别,导致线上日志量非常庞大,经常遇到因为日志写入太慢导致的性能瓶颈(各微服务每小时日志量加在一起约小 1000G)。下面将我们做的日志性能提升与精简日志的规范列出,供大家参考。我们使用的日志框...
本系列是 我TM人傻了 系列第四期[捂脸],往期精彩回顾:升级到Spring 5.3.x之后,GC次数急剧增加,我TM人傻了这个大表走索引字段查询的 SQL 怎么就成全扫描了,我TM人傻了获取异常信息里再出异常就找不到日志了,我TM人傻了本文基于 Spring Data Redis 2.4.9最近线上又出事儿了,新上线了一个微服务系统,上线之后就开始...
本系列代码地址:[链接]通过单元测试,我们也可以了解下一般我们实现 spring cloud 自定义的基础组件,怎么去单元测试。这里的单元测试主要测试三个场景:只返回同一个 zone 下的实例,其他 zone 的不会返回对于多个请求,每个请求返回的与上次的实例不同。对于多线程的每个请求,如果重试,返回的都是不同的实例同时,...
我们使用 Spring Cloud 官方推荐的 Spring Cloud LoadBalancer 作为我们的客户端负载均衡器。上一节我们了解了 Spring Cloud LoadBalancer 的结构,接下来我们来说一下我们在使用 Spring Cloud LoadBalancer 要实现的功能:
本系列代码地址:[链接]我们的业务集群结构是这样的:不同 Region,使用不同的 Eureka 集群管理,不同 Region 之间不互相访问。同一 Region 内,可能有不同的业务集群,不同业务集群之间也不互相访问,共用同一套业务集群。同一业务集群内可以随意访问,同时同一业务集群会做跨可用区的容灾。在我们这里的抽象中,zone ...
Eureka Server 配置是 Eureka Server 需要的一些配置,包括之前多次提到的定时检查实例过期的配置,自我保护相关的配置,同一 zone 内集群相关的配置和跨 zone 相关的配置。在 Spring Cloud 中,Eureka 客户端配置以 eureka.server 开头,对应配置类为 EurekaServerConfigBean
分布式系统中,全局唯一 ID 的生成是一个老生常谈但是非常重要的话题。随着技术的不断成熟,大家的分布式全局唯一 ID 设计与生成方案趋向于趋势递增的 ID,这篇文章将结合我们系统中的 ID 针对实际业务场景以及性能存储和可读性的考量以及优缺点取舍,进行深入分析。本文并不是为了分析出最好的 ID 生成器,而是分析设计...