一文带你搞懂 RPC 到底是个啥
摘要:RPC(Remote Procedure Call),是一个大家既熟悉又陌生的词,只要涉及到通信,必然需要某种网络协议。我们很可能用过HTTP,那么RPC又和HTTP有什么区别呢?RPC还有什么特点,常见的选型有哪些? 1. RPC是什么 RPC可以分为两部分:用户调用接口 + 具体网络协议。前者为
阅读全文
posted @
2021-05-31 09:35
万俊峰Kevin
阅读(11399)
推荐(4) 编辑
通用连接池帮你解决资源管理难题
摘要:前言 群里老有同学问,go-zero 的 数据库 和 redis 库是否有连接池支持。先说结论:有的,可以放心大胆用! 从框架设计来说,对于数据库连接这种资源当然是尽可能减少频繁操作: 为业务减负 提升框架自身的性能 池化技术是一个通用化技术,本身就应该作为一个通用库支撑框架的上层业务 所以不管是
阅读全文
posted @
2021-05-26 08:35
万俊峰Kevin
阅读(491)
推荐(0) 编辑
懂得取舍才是缓存设计的真谛
摘要:Previously 前两篇文章(缓存稳定性 和 缓存正确性)跟大家讨论了缓存的『稳定性』和『正确性』,缓存常见问题还剩下『可观测性』和『规范落地&工具建设』 稳定性 正确性 可观测性 规范落地和工具建设 上周文章发完之后,很多同学对我留的问题进行了深入的讨论,我相信经过深度的思考,会让你对缓存一致
阅读全文
posted @
2021-05-24 08:58
万俊峰Kevin
阅读(448)
推荐(1) 编辑
进程内缓存助你提高并发能力!
摘要:前言 缓存,设计的初衷是为了减少繁重的IO操作,增加系统并发能力。不管是 CPU多级缓存,page cache,还是我们业务中熟悉的 redis 缓存,本质都是将有限的热点数据存储在一个存取更快的存储介质中。 计算机本身的缓存设计就是 CPU 采取多级缓存。那对我们服务来说,我们是不是也可以采用这种
阅读全文
posted @
2021-05-19 08:33
万俊峰Kevin
阅读(659)
推荐(0) 编辑
缓存数据一致性 - 架构师峰会演讲实录
摘要:Previously 缓存系统涉及的问题和知识点是比较多的,我主要分为以下几个方面来跟大家探讨: 稳定性 正确性 可观测性 规范落地和工具建设 上篇 我们分析了缓存系统的稳定性,介绍了 go-zero 是怎么解决缓存穿透、缓存击穿、缓存雪崩问题的。比较浅显易懂,且具有比较强的实战意义,推荐一读。 本
阅读全文
posted @
2021-05-17 09:03
万俊峰Kevin
阅读(472)
推荐(0) 编辑
如何让消息队列达到最大吞吐量?
摘要:你在使用消息队列的时候关注过吞吐量吗? 思考过吞吐量的影响因素吗? 考虑过怎么提高吗? 总结过最佳实践吗? 本文带你一起探讨下消息队列消费端高吞吐的 Go 框架实现。Let’s go! 关于吞吐量的一些思考 写入消息队列吞吐量取决于以下两个方面 网络带宽 消息队列(比如Kafka)写入速度 最佳吞吐
阅读全文
posted @
2021-05-13 07:58
万俊峰Kevin
阅读(1122)
推荐(0) 编辑
缓存系统稳定性 - 架构师峰会演讲实录
摘要:前言 大家好!我是万俊峰,go-zero 作者。感谢 ArchSummit 提供这么好的机会来跟大家分享一下go-zero的缓存最佳实践。 首先,大家可以想一想:我们在流量激增的情况下,服务端哪个部分最有可能会是第一个瓶颈?我相信大部分人遇到的都会是数据库首先扛不住,量一起来,数据库慢查询,甚至卡死
阅读全文
posted @
2021-05-10 10:34
万俊峰Kevin
阅读(722)
推荐(3) 编辑
一文带你理解最简消息队列实现
摘要:最近在看公司的 redis queue 时,发现底层使用的是 go-zero 的 queue 。本篇文章来看看 queue 的设计,也希望可以从里面了解到 mq 的最小型设计实践。 使用 结合其他 mq 的使用经历,基本的使用流程: 创建 producer 或 consumer 启动 mq 生产消息
阅读全文
posted @
2021-05-07 10:15
万俊峰Kevin
阅读(266)
推荐(0) 编辑