7、并发安全:如何为不同并发场景选择合适的锁

你好,我是徐逸。 上节课我们一起学习了并发等待技术。不过在实际的编程实践中,我们会遇到各种各样的并发场景,所需要的并发技术也会有所不同。今天咱们就来聊聊在并发环境下,如何巧妙地运用锁,实现高性能、安全地访问多协程共享的数据。 我们先从一个问题入手。假...

Go服务开发高手课

8、并发map:百万数据本地缓存,如何降延时减毛刺

你好,我是徐逸。 在上节课的内容中,我们一起学习了锁和无锁编程技术,还使用分段锁和map类型,实现了一个缓存结构。不过,值得留意的是,其实 Go 语言的 sync 包已经提供了一种并发安全的 Map 类型。 今天,我就以大规模数据缓存的数据结构设计要...

Go服务开发高手课

9、网络编程:如何进行网络IO编程降消耗,提吞吐

你好,我是徐逸。 前面,我们花了不少篇幅一同深入学习了Go服务高性能编码技巧,来全力保障线上服务的性能。不过呢,除了我们写的业务逻辑代码,服务框架本身对于性能也有着举足轻重的影响。而影响框架性能的一个很重要的因素,就是框架所使用的网络IO模型。 今天...

Go服务开发高手课

10、网络通信:不改业务代码,如何降低延时

你好,我是徐逸。 在上节课的内容中,我们一起学习了网络编程技术,并了解了框架底层不同的网络IO模型是如何影响到服务性能的。 不过呢,当服务调用的IO延时比较长时,除了框架本身网络IO模型的优化之外,我们还可以使用其它方式,来降低服务调用的网络IO延时...

Go服务开发高手课

11、数据库:分库分表,没有用户id怎么分

你好,我是徐逸。 通过前面的课程学习,我们已经了解了如何从编码和框架这两个层面来优化服务性能。不过呢,当性能瓶颈点是下游数据库时,这两个层面的优化就无能为力了。 对于数据库性能的优化,除了合理使用索引等使用细节上的优化之外,在高并发场景,我们还需要在...

Go服务开发高手课

12、分布式缓存:大促抢购,不知热点咋防热Key

你好,我是徐逸。 通过上节课的学习,我们知道了提升服务吞吐的数据库架构方案。 不过在实践中,除了在数据库层面做优化之外,我们还可以通过搭配缓存的方式,来减轻数据库的访问压力,避免数据库成为性能瓶颈点。例如电商大促的商品详情页,由于商品的名称、图片链接...

Go服务开发高手课