2021年12月27日
摘要: 我为啥给项目取 go-zero 这个名字,我希望解决问题的时候是我们回到原点去思考,而不是遇到钉子就找锤子。正所谓:做正确的事,正确的做事! 阅读全文
posted @ 2021-12-27 13:31 万俊峰Kevin 阅读(2404) 评论(11) 推荐(13) 编辑
  2022年7月19日
正文内容加载中...
posted @ 2022-07-19 09:24 万俊峰Kevin 阅读(459) 评论(1) 推荐(0) 编辑
  2022年7月11日
摘要: 本篇是整个系列的最后一篇了,本来打算在系列的最后一两篇写一下关于k8s部署相关的内容,在构思的过程中觉得自己对k8s知识的掌握还很不足,在自己没有理解掌握的前提下我觉得也很难写出自己满意的文章,大家看了可能也会觉得内容没有干货。我最近也在学习k8s的一些最佳实践以及阅读k8s的源码,等待时机成熟的时 阅读全文
posted @ 2022-07-11 09:28 万俊峰Kevin 阅读(252) 评论(0) 推荐(1) 编辑
  2022年7月8日
摘要: 在分布式应用场景中,分布式事务问题是不可回避的,在目前流行的微服务场景下更是如此。比如在我们的商城系统中,下单操作涉及创建订单和库存扣减操作两个操作,而订单服务和商品服务是两个独立的微服务,因为每个微服务独占一个数据库实例,所以下单操作就涉及到分布式事务问题,即要把整个下单操作看成一个整体,要么都成 阅读全文
posted @ 2022-07-08 08:25 万俊峰Kevin 阅读(193) 评论(0) 推荐(0) 编辑
  2022年7月4日
摘要: 上一篇文章中引入了消息队列对秒杀流量做削峰的处理,我们使用的是Kafka,看起来似乎工作的不错,但其实还是有很多隐患存在,如果这些隐患不优化处理掉,那么秒杀抢购活动开始后可能会出现消息堆积、消费延迟、数据不一致、甚至服务崩溃等问题,那么后果可想而知。本篇文章我们就一起来把这些隐患解决掉。 批量数据聚 阅读全文
posted @ 2022-07-04 08:16 万俊峰Kevin 阅读(210) 评论(0) 推荐(1) 编辑
  2022年6月30日
摘要: 在前几篇的文章中,我们花了很大的篇幅介绍如何利用缓存优化系统的读性能,究其原因在于我们的产品大多是一个读多写少的场景,尤其是在产品的初期,可能多数的用户只是过来查看商品,真正下单的用户非常少。但随着业务的发展,我们就会遇到一些高并发写请求的场景,秒杀抢购就是最典型的高并发写场景。在秒杀抢购开始后用户 阅读全文
posted @ 2022-06-30 09:57 万俊峰Kevin 阅读(392) 评论(0) 推荐(1) 编辑
  2022年6月27日
摘要: 前两篇文章我们介绍了缓存使用的各种最佳实践,首先介绍了缓存使用的基本姿势,分别是如何利用go-zero自动生成的缓存和逻辑代码中缓存代码如何写,接着讲解了在面对缓存的穿透、击穿、雪崩等常见问题时的解决方案,最后还重点讲解了如何保证缓存的一致性。因为缓存对于高并发服务来说实在是太重要了,所以这篇文章我 阅读全文
posted @ 2022-06-27 09:47 万俊峰Kevin 阅读(224) 评论(0) 推荐(1) 编辑
  2022年6月21日
摘要: 详解连接池参数设置(边调边看) 你有同感吗? 当大家在开发服务端代码的时候,会不会经常有如下疑问? 纳闷 MySQL 连接池到底有多少连接? 每个连接的生命周期持续多久? 连接异常断开的时候到底是服务端主动断的,还是客户端主动断的? 当长时间没有请求的时候,底层库是否有 KeepAlive 请求? 复杂网络情况的处理从来都是后端开 阅读全文
posted @ 2022-06-21 09:37 万俊峰Kevin 阅读(90) 评论(0) 推荐(0) 编辑
  2022年6月20日
摘要: 缓存是高并发服务的基础,毫不夸张的说没有缓存高并发服务就无从谈起。本项目缓存使用Redis,Redis是目前主流的缓存数据库,支持丰富的数据类型,其中集合类型的底层主要依赖:整数数组、双向链表、哈希表、压缩列表和跳表五种数据结构。由于底层依赖的数据结构的高效性以及基于多路复用的高性能I/O模型,所以 阅读全文
posted @ 2022-06-20 10:01 万俊峰Kevin 阅读(364) 评论(0) 推荐(0) 编辑
  2022年6月16日
摘要: go-zero微服务实战系列(四、CRUD热热身) 上一篇文章我们把整个项目的架子搭建完成,服务在本地也已经能运行起来了,顺利成章的接下来我们就应该开始写业务逻辑代码了,但是单纯的写业务逻辑代码是比较枯燥的,业务逻辑的代码我会不断地补充到 lerbon 项目中去,关键部分我也会加上注释。 那么本篇文章我主要想和大家分享下服务的基本配置和几个典型的代码 阅读全文
posted @ 2022-06-16 09:13 万俊峰Kevin 阅读(369) 评论(0) 推荐(1) 编辑
  2022年6月13日
摘要: go-zero微服务实战系列(三、API定义和表结构设计) 可能大家在工作中都遇到过这样的场景,就是代码更新了但是文档没有更新,从而产生一些问题导致一些扯皮事情的发生。这个问题的本质是服务和文档是割裂的。我们期望的是文档即协议,协议即服务,这个理念与go-zero的api定义不谋而合。 阅读全文
posted @ 2022-06-13 08:51 万俊峰Kevin 阅读(378) 评论(0) 推荐(2) 编辑