- 摘要:三年前,一个深夜的线上事故让我彻底醒悟——callback hell不是技术问题,而是人性问题。当人类大脑理解不了自己写的代码时,就该换种写法了。C++20协程就是这个答案,但它真的能救我们于水火吗? 凌晨三点,我删掉了最后一行回调代码那是2021年冬天,系统突发崩溃。事后分析,罪魁祸首是一段深度嵌套的回调:order_service.async_get_order(order_id,... 摘要:三年前,一个深夜的线上事故让我彻底醒悟——callback hell不是技术问题,而是人性问题。当人类大脑理解不了自己写的代码时,就该换种写法了。C++20协程就是这个答案,但它真的能救我们于水火吗? 凌晨三点,我删掉了最后一行回调代码那是2021年冬天,系统突发崩溃。事后分析,罪魁祸首是一段深度嵌套的回调:order_service.async_get_order(order_id,...
- 在软件的世界里,我们常常将稳定运行的系统比作一个健康的生命体。它有心跳,有呼吸,有循环。而我,作为一名后端工程师,最重要的职责之一,就是成为一名守护者——聆听系统的脉搏,诊断它的病症,确保它永远充满活力。今天,我想讲述的,就是这样一段关于守护的故事,它涉及到了三条至关重要的生命线:负载均衡、缓存雪崩与日志追踪。 序章:心跳的设计——负载均衡的艺术我们的核心交易系统,在经历了几次流量高峰的考验... 在软件的世界里,我们常常将稳定运行的系统比作一个健康的生命体。它有心跳,有呼吸,有循环。而我,作为一名后端工程师,最重要的职责之一,就是成为一名守护者——聆听系统的脉搏,诊断它的病症,确保它永远充满活力。今天,我想讲述的,就是这样一段关于守护的故事,它涉及到了三条至关重要的生命线:负载均衡、缓存雪崩与日志追踪。 序章:心跳的设计——负载均衡的艺术我们的核心交易系统,在经历了几次流量高峰的考验...
- 1 背景简介Go 语言以高效著称,但任意程序(如命令行工具、Web 服务、CLI 或后台任务)的性能评估需要系统方法。以下基于 2025 年最新实践,列出快速评估性能的几种核心方法,从简单基准到高级诊断。评估重点包括 CPU 使用、内存分配、Goroutine 泄漏和 I/O 瓶颈。注意,性能下降常因全局锁(如 sync.WaitGroup 的 wg.Wait() 在高并发下导致串行)或连... 1 背景简介Go 语言以高效著称,但任意程序(如命令行工具、Web 服务、CLI 或后台任务)的性能评估需要系统方法。以下基于 2025 年最新实践,列出快速评估性能的几种核心方法,从简单基准到高级诊断。评估重点包括 CPU 使用、内存分配、Goroutine 泄漏和 I/O 瓶颈。注意,性能下降常因全局锁(如 sync.WaitGroup 的 wg.Wait() 在高并发下导致串行)或连...
- 概述Redis 主从复制是一种数据同步机制,它允许一个 Redis 服务器(称为 主服务器/Master)将其数据复制到一个或多个 Redis 服务器(称为 从服务器/Slave/Replica)。这是 Redis 实现高可用性、可扩展性和数据冗余的核心技术之一。一、核心作用数据冗余与备份:核心作用:从服务器是主服务器数据的实时热备份。当主服务器数据丢失或损坏时,可以从从服务器恢复,是实现数... 概述Redis 主从复制是一种数据同步机制,它允许一个 Redis 服务器(称为 主服务器/Master)将其数据复制到一个或多个 Redis 服务器(称为 从服务器/Slave/Replica)。这是 Redis 实现高可用性、可扩展性和数据冗余的核心技术之一。一、核心作用数据冗余与备份:核心作用:从服务器是主服务器数据的实时热备份。当主服务器数据丢失或损坏时,可以从从服务器恢复,是实现数...
- 1 简介缓存评价,Redis 是内存键值存储,常用于缓存、会话管理和实时分析。 在 Go 应用中,通常通过 go-redis 客户端集成。 它高效但资源密集,2025 年配置指南强调 maxmemory 限制(如 100MB)以防止内存溢出。连接数:go-redis 默认连接池大小为 10/CPU 核心,支持高并发(数千连接)。 连接复用避免开销,但超时需监控(PoolTimeout 默认... 1 简介缓存评价,Redis 是内存键值存储,常用于缓存、会话管理和实时分析。 在 Go 应用中,通常通过 go-redis 客户端集成。 它高效但资源密集,2025 年配置指南强调 maxmemory 限制(如 100MB)以防止内存溢出。连接数:go-redis 默认连接池大小为 10/CPU 核心,支持高并发(数千连接)。 连接复用避免开销,但超时需监控(PoolTimeout 默认...
- 1 简介在项目实施过程中,缓存加密需要认证,此时配置不当极容易造成访问权限缺失的问题。例如 go-redis/v9 连接redis缓存后订阅错误:NOPERM No permissions to access a channel通常是由于以下几种原因导致的go-redis/v9 库进行 Redis 发布订阅(pub/sub)时,出现 proto.PermissionError{msg:“N... 1 简介在项目实施过程中,缓存加密需要认证,此时配置不当极容易造成访问权限缺失的问题。例如 go-redis/v9 连接redis缓存后订阅错误:NOPERM No permissions to access a channel通常是由于以下几种原因导致的go-redis/v9 库进行 Redis 发布订阅(pub/sub)时,出现 proto.PermissionError{msg:“N...
- Spring整合Redis序列化方式:StringRedisSerializer、FastJsonRedisSerializer和KryoRedisSerializer在Spring框架中集成Redis时,选择合适的序列化方式对于性能和数据的正确处理至关重要。本文将详细介绍三种常用的Redis序列化方式:StringRedisSerializer、FastJsonRedisSer... Spring整合Redis序列化方式:StringRedisSerializer、FastJsonRedisSerializer和KryoRedisSerializer在Spring框架中集成Redis时,选择合适的序列化方式对于性能和数据的正确处理至关重要。本文将详细介绍三种常用的Redis序列化方式:StringRedisSerializer、FastJsonRedisSer...
- 核心思想:使用一个进程/线程同时监听多个文件描述符(Socket),当某些描述符就绪(可读/可写)时,通知程序进行相应操作。解决的问题:避免为每个连接创建线程/进程带来的资源消耗,实现高并发连接处理。2. Redis 的架构选择# 传统多线程模型 vs Redis单线程+多路复用传统模型:1个连接 → 1个线程 → 高内存消耗、上下文切换开销大Redis模型:N个连接 → 1个线程 + I/... 核心思想:使用一个进程/线程同时监听多个文件描述符(Socket),当某些描述符就绪(可读/可写)时,通知程序进行相应操作。解决的问题:避免为每个连接创建线程/进程带来的资源消耗,实现高并发连接处理。2. Redis 的架构选择# 传统多线程模型 vs Redis单线程+多路复用传统模型:1个连接 → 1个线程 → 高内存消耗、上下文切换开销大Redis模型:N个连接 → 1个线程 + I/...
- 哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。2、哨兵的作用这里的哨兵有两个作用通过发送命令,让Redis服务器返回监控其运行状态,包括主服务器和从服务器。当哨兵监测到master宕机,会自动将slave切换成master,然后通过发布订阅模式通知其... 哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。2、哨兵的作用这里的哨兵有两个作用通过发送命令,让Redis服务器返回监控其运行状态,包括主服务器和从服务器。当哨兵监测到master宕机,会自动将slave切换成master,然后通过发布订阅模式通知其...
- 1 简介为什么map数据结构在大多语言是无序?本文通过一些计算例子说明和帮助理解。通过一个具体的例子来说明 哈希值的计算是基于键的内容,而不是插入顺序。示例:假设我们有一个 map,它的键是字符串,值是整数。我们将通过计算每个键的哈希值来展示 map 中的元素是如何存储的。 2 计算原理和示例哈希表的基本原理哈希表通过一个 哈希函数 将键映射到哈希表的桶(bucket)中。哈希函数通常会根... 1 简介为什么map数据结构在大多语言是无序?本文通过一些计算例子说明和帮助理解。通过一个具体的例子来说明 哈希值的计算是基于键的内容,而不是插入顺序。示例:假设我们有一个 map,它的键是字符串,值是整数。我们将通过计算每个键的哈希值来展示 map 中的元素是如何存储的。 2 计算原理和示例哈希表的基本原理哈希表通过一个 哈希函数 将键映射到哈希表的桶(bucket)中。哈希函数通常会根...
- springboot整合redis五种数据结构API springboot整合redis五种数据结构API
- 跳表之所以能替代红黑树,并被 Redis 用于 Sorted Set,原因可以概括为:实现更简单、常数因子小、支持高效的范围与排名操作、并且更容易在工程中维护和并发化。Redis 采用跳表 + 哈希表的组合,把两种结构的优势结合起来,既保证了按 member 的 O(1) 定位,又支持按 score 的有序操作和排名查询。 跳表之所以能替代红黑树,并被 Redis 用于 Sorted Set,原因可以概括为:实现更简单、常数因子小、支持高效的范围与排名操作、并且更容易在工程中维护和并发化。Redis 采用跳表 + 哈希表的组合,把两种结构的优势结合起来,既保证了按 member 的 O(1) 定位,又支持按 score 的有序操作和排名查询。
- 性能调优不是“加服务器”,而是先搞清楚卡在哪 性能调优不是“加服务器”,而是先搞清楚卡在哪
- 1 简介etcd 和 Redis 都是广泛使用的分布式键值存储服务,但它们有不同的设计目标、特性和实现方式。本文从多个角度来分析它们了解它们。 2 设计目标和用途etcd主要用途:etcd 是一个分布式键值存储,特别设计用于支持 配置管理 和 服务发现。它保证了强一致性(通过 Raft 协议)和高可用性,因此广泛用于 Kubernetes 和其他微服务架构中,作为一个高可用、强一致的存储... 1 简介etcd 和 Redis 都是广泛使用的分布式键值存储服务,但它们有不同的设计目标、特性和实现方式。本文从多个角度来分析它们了解它们。 2 设计目标和用途etcd主要用途:etcd 是一个分布式键值存储,特别设计用于支持 配置管理 和 服务发现。它保证了强一致性(通过 Raft 协议)和高可用性,因此广泛用于 Kubernetes 和其他微服务架构中,作为一个高可用、强一致的存储...
- 对个人而言,一次差旅是一次任务的完成;对企业而言,无数差旅则是效率与成本管控的博弈。在差旅后的报销环节,往往存在着员工便捷与企业合规之间的平衡难题。而随着企业差旅需求的增加与管理成本的攀升,数智化转型成为企业提升差旅管理效能、优化内部流程、降低运营成本的重要路径。苏州思客科技(集团)有限公司是一家以科技和服务驱动的综合性商务出行管理公司,旗下拥有差旅管家Tripwise(国内差旅业务)、Be... 对个人而言,一次差旅是一次任务的完成;对企业而言,无数差旅则是效率与成本管控的博弈。在差旅后的报销环节,往往存在着员工便捷与企业合规之间的平衡难题。而随着企业差旅需求的增加与管理成本的攀升,数智化转型成为企业提升差旅管理效能、优化内部流程、降低运营成本的重要路径。苏州思客科技(集团)有限公司是一家以科技和服务驱动的综合性商务出行管理公司,旗下拥有差旅管家Tripwise(国内差旅业务)、Be...
上滑加载中
推荐直播
-
HDC深度解读系列 - Serverless与MCP融合创新,构建AI应用全新智能中枢2025/08/20 周三 16:30-18:00
张昆鹏 HCDG北京核心组代表
HDC2025期间,华为云展示了Serverless与MCP融合创新的解决方案,本期访谈直播,由华为云开发者专家(HCDE)兼华为云开发者社区组织HCDG北京核心组代表张鹏先生主持,华为云PaaS服务产品部 Serverless总监Ewen为大家深度解读华为云Serverless与MCP如何融合构建AI应用全新智能中枢
回顾中 -
关于RISC-V生态发展的思考2025/09/02 周二 17:00-18:00
中国科学院计算技术研究所副所长包云岗教授
中科院包云岗老师将在本次直播中,探讨处理器生态的关键要素及其联系,分享过去几年推动RISC-V生态建设实践过程中的经验与教训。
回顾中 -
一键搞定华为云万级资源,3步轻松管理企业成本2025/09/09 周二 15:00-16:00
阿言 华为云交易产品经理
本直播重点介绍如何一键续费万级资源,3步轻松管理成本,帮助提升日常管理效率!
回顾中
热门标签