13、分布式缓存:大Key更新,拆分大Key如何防脏读

你好,我是徐逸。 在上一节课中,我们深入探讨了如何应对Redis中的热Key问题,并掌握了多种解决方案。然而,在面对高并发的挑战时,我们不仅要关注热Key问题,还必须关注另一个可能影响Redis性能的因素——大Key问题。 今天这节课,我们就来聊聊R...

Go服务开发高手课

14、本地缓存:缓存存不下又不能回源怎么破

你好,我是徐逸。 在前面两节课里,我们已经深入探讨了多种解决分布式缓存问题的策略。然而,在面对高并发、低延迟的场景,特别是在抖音、快手这类短视频应用的推荐与搜索功能场景,我们发现Redis作为缓存解决方案存在一定的局限性。 这是因为Redis主要支持...

Go服务开发高手课

15、项目拆分:业务逻辑复杂,如何拆分服务让协作清晰有序

你好,我是徐逸。 作为后台研发,在我们的日常工作中或多或少都接触过微服务架构。对于微服务架构,我们除了要熟悉常用的微服务技术栈之外,还有一个极为重要的部分,那就是如何进行微服务拆分。要知道,服务拆分决策与实施的过程,会直接对系统未来的迭代效率和可维护...

Go服务开发高手课

16、目录规范:几万行的大文件,如何重构目录结构

你好,我是徐逸。 上节课我们学习了如何拆分项目,不过对于复杂系统来说,即便拆分了项目,每个子项目里的文件庞大且复杂,管理和维护都非常困难。这时候我们就需要学会如何抽丝剥茧,为这样的文件建立一个合理的目录结构。 今天我就用分层架构的思想,带你将一个包含...

Go服务开发高手课

17、设计原则和模式:功能持续迭代,如何减少改动

你好,我是徐逸。 上节课我们学习了如何构建一个规范的目录,不过对于一个快速迭代的项目,即便有了清晰的目录结构,但如果写代码不讲究一定的方法,后续修改和扩展也会非常困难。针对写代码过程中面临的一些场景,业界早就总结归纳出了一些通用解决方案,而这些场景和...

Go服务开发高手课

18、函数设计:重复编写相似函数,怎样实现逻辑复用

你好,我是徐逸。 上节课我们学习了如何使用设计模式,来提升我们代码的可维护性。不过除了设计模式之外,Go 语言本身所提供的反射和泛型特性,同样是我们手中的得力工具。借助这些特性,我们能够达成逻辑复用的目标,避免重复编写那些功能相近的函数,让代码更加简...

Go服务开发高手课