logo

Backend

  • Published on
    Go 的 if err != nil 错误处理模式虽备受争议,却是其设计优势所在。通过将错误视为值,Go 迫使开发者显式处理错误情况,避免了隐藏的控制流,提供了清晰的错误传播链。这种方式虽看似繁琐,却让程序更可靠、透明、可预测,并赋予开发者对错误处理的完全控制权。
  • Published on
    Kafka 是构建流式架构的强大工具。本文旨在介绍该技术及其相关的数据生产者和消费者。
  • Published on
    RPC 和 REST 是两种主流的服务间通信方式。RPC 通过远程函数调用实现服务交互,性能优越,适合对延迟敏感的内部微服务通信,但耦合度较高;REST 则基于 HTTP 协议对资源进行操作,接口统一且易于理解,扩展性好,特别适合构建公开 API。选择时需要权衡性能需求、架构复杂度和维护成本,在实际应用中可以根据不同场景结合使用这两种方式。
  • Published on
    文章详细介绍了 Kafka 在重平衡过程中面临的挑战,以及 AutoMQ 如何通过创新的存储计算分离架构来解决这些问题。通过将数据存储在对象存储中,AutoMQ 无需在 broker 间移动数据就能实现重平衡,大大提高了效率。文章还介绍了 AutoMQ 的自平衡组件 AutoBalancer 的工作原理和优势。
  • Published on
    文章介绍了 AutoMQ 如何通过创新的存储架构,让 Kafka 完全运行在对象存储上。它通过堆外缓存处理实时读写,使用 EBS 作为预写日志确保可靠性,并将所有数据最终存储在对象存储中。这种设计既保持了 Kafka 的高性能,又解决了传统 Kafka 存储扩展的局限性。
  • Published on
    安全存储密码需要三步:哈希将密码不可逆转为指纹,避免明文泄露;加盐为每个用户生成唯一盐,抵御彩虹表攻击;延展重复哈希多次,延缓暴力破解。结合 bcrypt 等算法,确保密码保护更安全高效,切勿直接存储明文密码。
  • Published on
    Go 的代码生成功能虽然简单,但非常强大和实用。通过 go generate 命令,我们可以实现自动化重复性代码的生成,实现类似泛型功能(在 Go 1.18 之前特别有用),生成高效的查找表和常量,自动化字符串表示的生成,集成各种代码生成工具。通过正确使用这些功能,我们可以大大提高 Go 开发的效率和代码质量。
  • Published on
    Postgres 的 LISTEN/NOTIFY 功能通过通知器模式优化了连接管理,减少了每个程序需要的数据库连接数量,避免了为每个主题创建多个连接。通过使用缓冲通道和非阻塞发送,通知器能够高效处理大量通知。同时,结合上下文超时机制和“让它崩溃”策略,可以确保系统在出现问题时快速恢复。PgBouncer 的会话池模式支持 LISTEN,提高连接效率。
  • Published on
    Go 1.22 将引入增强版 HTTP 路由多路复用器,提供更强大的路径匹配和方法路由能力。新的 ServeMux 支持通配符、方法限定和细粒度路由,有望减少对第三方路由库的依赖,为 Go Web 开发带来便利。
  • Published on
    Go 的 context 包提供了强大的工具,用于管理请求范围内的超时、取消和数据传递。通过函数如 WithCancel、WithTimeout 和 WithValue,开发者可高效处理并发任务和资源释放,是构建健壮程序的重要组件。
  • Published on
    这篇文章介绍了如何使用Redis在Golang API中实现限流功能。通过Gin框架搭建HTTP服务器,利用go-redis/redis_rate包来追踪和限制每个IP地址的请求频率。文章通过实例代码展示了如何设置每分钟10次的请求限制,并详细说明了限流器的工作原理和实现方法。
  • Published on
    Docker的联合文件系统(如OverlayFS)通过将多个只读镜像层和一个可写容器层合并为一个虚拟文件系统,实现了高效的资源共享和容器隔离。利用写时复制(CoW)技术,容器只在修改文件时复制数据,节省了存储和提高了性能。理解这些原理有助于优化Docker的使用,尤其是在性能和安全性方面。
  • Published on
    这是一篇关于Go SQL内部机制的深度解析文章。文章详细探讨了预处理语句的工作原理、连接池的生命周期管理,以及实际生产环境中常见的问题和解决方案。同时提供了具体的客户端和服务器端配置建议,对于构建高性能Go数据库应用具有重要的参考价值。
  • Published on
    Go语言的模糊测试(Fuzzing)是一种通过输入大量随机数据来发现程序潜在bug的自动化测试技术。Go 1.18后,它被加入标准库,使开发者能更容易地对HTTP服务和其他函数进行模糊测试。这种测试方法特别擅长发现那些在常规测试中难以发现的边界情况和异常问题。
  • Published on
    ThrottleX 是一个用 Go 语言实现的高性能分布式限流库,提供了三种主流限流算法的实现。该项目特别注重性能优化和分布式场景支持,可以轻松应对高并发环境下的限流需求。ThrottleX 根据定义的策略(如固定窗口、滑动窗口和令牌桶)限制可以到达后端(无论是 Web 服务器、API 等)的请求数量,从而管理请求流。
  • Published on
    本文介绍了针对Databricks集群在高并发场景下的优化策略。主要包括两个层面:集群优化(启用Photon加速、Delta缓存、高并发模式等)和代码优化(合理使用UDFs、collect()、广播变量、分区调优等)。通过这些措施可以显著提升集群性能,建议根据实际场景选择合适的优化组合。
  • Published on
    我们通过引入内存镇流器减少了Go应用程序的垃圾回收(GC)周期频率,从而改善了API响应时间。这种做法允许堆在更大范围内增长,减少了GC辅助延迟,而镇流器的虚拟内存分配几乎不消耗实际RAM。相比调整GOGC值,使用镇流器更易于推理与管理。最后,深入分析性能瓶颈是提高应用效率的关键。
  • Published on
    本文详细介绍了如何将Django的日志记录与ELK Stack(Elasticsearch、Logstash、Kibana)及Prometheus + Grafana结合使用。通过配置Django的日志系统、设置Logstash接收日志、使用Elasticsearch存储数据,以及在Kibana和Grafana中可视化监控指标,开发者可以实现全面的日志管理和性能监控,提升应用程序的可维护性和可靠性。
  • Published on
    本文详细介绍了六种主流身份验证方法:JWT、OAuth、Basic Authentication、Token Authentication、Cookie-Based Authentication 和 SAML。每种方法的核心原理、工作流程及代码示例均涵盖,帮助您全面了解如何选择和实现适合的身份验证策略以确保安全和效率。
  • Published on
    本文深入探讨了Web后端优化的多个层面,包括应用层、数据库层和基础设施层。我们讨论了各种优化技术,如算法优化、异步编程、数据库索引、查询优化、网络架构评估和API技术选择等。文章强调了性能测试和持续监控的重要性,并指出优化策略应根据具体应用需求来制定。