11、数据库:分库分表,没有用户id怎么分你好,我是徐逸。 通过前面的课程学习,我们已经了解了如何从编码和框架这两个层面来优化服务性能。不过呢,当性能瓶颈点是下游数据库时,这两个层面的优化就无能为力了。 对于数据库性能的优化,除了合理使用索引等使用细节上的优化之外,在高并发场景,我们还需要在...2026-01-19Go服务开发高手课
12、分布式缓存:大促抢购,不知热点咋防热Key你好,我是徐逸。 通过上节课的学习,我们知道了提升服务吞吐的数据库架构方案。 不过在实践中,除了在数据库层面做优化之外,我们还可以通过搭配缓存的方式,来减轻数据库的访问压力,避免数据库成为性能瓶颈点。例如电商大促的商品详情页,由于商品的名称、图片链接...2026-01-19Go服务开发高手课
13、分布式缓存:大Key更新,拆分大Key如何防脏读你好,我是徐逸。 在上一节课中,我们深入探讨了如何应对Redis中的热Key问题,并掌握了多种解决方案。然而,在面对高并发的挑战时,我们不仅要关注热Key问题,还必须关注另一个可能影响Redis性能的因素——大Key问题。 今天这节课,我们就来聊聊R...2026-01-19Go服务开发高手课
14、本地缓存:缓存存不下又不能回源怎么破你好,我是徐逸。 在前面两节课里,我们已经深入探讨了多种解决分布式缓存问题的策略。然而,在面对高并发、低延迟的场景,特别是在抖音、快手这类短视频应用的推荐与搜索功能场景,我们发现Redis作为缓存解决方案存在一定的局限性。 这是因为Redis主要支持...2026-01-19Go服务开发高手课
15、项目拆分:业务逻辑复杂,如何拆分服务让协作清晰有序你好,我是徐逸。 作为后台研发,在我们的日常工作中或多或少都接触过微服务架构。对于微服务架构,我们除了要熟悉常用的微服务技术栈之外,还有一个极为重要的部分,那就是如何进行微服务拆分。要知道,服务拆分决策与实施的过程,会直接对系统未来的迭代效率和可维护...2026-01-19Go服务开发高手课
16、目录规范:几万行的大文件,如何重构目录结构你好,我是徐逸。 上节课我们学习了如何拆分项目,不过对于复杂系统来说,即便拆分了项目,每个子项目里的文件庞大且复杂,管理和维护都非常困难。这时候我们就需要学会如何抽丝剥茧,为这样的文件建立一个合理的目录结构。 今天我就用分层架构的思想,带你将一个包含...2026-01-19Go服务开发高手课
17、设计原则和模式:功能持续迭代,如何减少改动你好,我是徐逸。 上节课我们学习了如何构建一个规范的目录,不过对于一个快速迭代的项目,即便有了清晰的目录结构,但如果写代码不讲究一定的方法,后续修改和扩展也会非常困难。针对写代码过程中面临的一些场景,业界早就总结归纳出了一些通用解决方案,而这些场景和...2026-01-19Go服务开发高手课
18、函数设计:重复编写相似函数,怎样实现逻辑复用你好,我是徐逸。 上节课我们学习了如何使用设计模式,来提升我们代码的可维护性。不过除了设计模式之外,Go 语言本身所提供的反射和泛型特性,同样是我们手中的得力工具。借助这些特性,我们能够达成逻辑复用的目标,避免重复编写那些功能相近的函数,让代码更加简...2026-01-19Go服务开发高手课
19、代码陷阱:最易导致程序出错的四类代码坑你好,我是徐逸。 在多年 Golang 编程实践里,我发现不少 Go 研发人员,因未透彻理解部分 Go 语言特性,导致在一些编程场景中不慎陷入代码陷阱。这些陷阱不仅影响程序的正确性与稳定性,还可能让我们耗费大量时间调试修复。 因此,在今天的课程里,我...2026-01-19Go服务开发高手课
20、日志和错误码:如何快速定位线上问题你好,我是徐逸。 通过上节课的学习,相信你已经掌握了Go 代码中潜藏的四类陷阱。然而,除了编写健壮的代码来预防线上问题之外。当出现线上问题时,能够快速定位和修复问题同样至关重要。而日志和错误码,是我们快速定位线上问题的得力工具。可以说,日志记录的质量...2026-01-19Go服务开发高手课