登录
专栏 0 关注 44 篇文章
go-zero大全
go-zero微服务框架入门
yalishanda
关注专栏
推荐文章
举报
1 个月前  /  yalishanda

Go 单体服务开发最佳实践

单体最佳实践的由来 对于很多初创公司来说,业务的早期我们更应该关注于业务价值的交付,并且此时用户体量也很小,QPS 也非常低,我们应该使用更简单的技术架构来加速业务价值的交付,此时单体的优势就体现出来了。正如我直播分享时经常提到,我们在使用单体快速交付业务价值的同时,也需要为业务的发展预留可能性,我们可以在单体里面清晰的拆分业务模块。go-zero 社区里也有很多小伙伴在问,咱们单体开发的最佳实践应该是怎样的。而 go-zero 作为一个被广泛使用的渐进式微服务框架来说,也是我在多个大型项目完整

0 赞 3 评论
收藏
1 个月前  /  yalishanda

微服务多行查询之缓存策略

在上一篇 缓存设计的好,服务基本不会倒 介绍了db层缓存,回顾一下,db层缓存主要设计可以总结为:缓存只删除不更新行记录始终只存储一份,即主键对应行记录唯一索引仅缓存主键值,不直接缓存行记录(参考mysql索引思想)防缓存穿透设计,默认一分钟,防止缓存击穿和雪崩不缓存多行记录前言在大型业务系统中,通过对持久层添加缓存,对于大多数单行记录查询,相信缓存能够帮持久层减轻很大的访问压力,但在实际业务中,数据读取不仅仅只是单行记录,面对大量多行记录的查询,这对持久层也会造成不小的访问压力,除此之外,像秒

0 赞 4 评论
收藏
1 个月前  /  yalishanda

自适应微服务治理背后的算法

前言 go-zero 群里经常有同学问: 服务监控是通过什么算法实现的? 滑动窗口是怎么工作的?能否讲讲这块的原理? 熔断算法是怎么设计的?为啥没有半开半闭状态呢?本篇文章,来分析一下 go-zero 中指标统计背后的实现算法和逻辑。指标怎么统计 这个我们直接看 breaker :type googleBreaker struct {k float64stat collection.RollingWindowproba mathx.Proba}go-zero 中默认的 breaker

0 赞 4 评论
收藏
1 个月前  /  yalishanda

go-zero代码生成器助你高效开发

Protocol Buffers 是谷歌推出的编码标准,它在传输效率和编解码性能上都要优于 JSON。但其代价则是需要依赖中间描述语言(IDL)来定义数据和服务的结构(通过 *.proto 文件),并且需要一整套的工具链(protoc 及其插件)来生成对应的序列化和反序列化代码。除了谷歌官方提供的工具和插件(比如生成 go 代码的 protoc-gen-go)外,开发者还可以开发或定制自己的插件,根据业务需要按照 proto 文件的定义生成代码或者文档。而 goctl rpc 代码生成工具开发的

0 赞 4 评论
收藏
1 个月前  /  yalishanda

微服务从代码到k8s部署应有尽有大结局(k8s部署)

我们用一个系列来讲解从需求到上线、从代码到k8s部署、从日志到监控等各个方面的微服务完整实践。整个项目使用了go-zero开发的微服务,基本包含了go-zero以及相关go-zero作者开发的一些中间件,所用到的技术栈基本是go-zero项目组的自研组件,基本是go-zero全家桶了。实战项目地址:https://github.com/Mikaelemmmm/go-zero-looklook1、概述 上一节,我们已经把gitlab、jenkins、harbor、k8s都已经搭建好了,这一节我们来

0 赞 4 评论
收藏
1 个月前  /  yalishanda

微服务从代码到k8s部署应有尽有系列(十四、部署环境搭建)

1、概述 项目开发好后,我们需要部署,我们接下来就基于gitlab + jenkins + harbor + k8s 搭建部署环境gitlab: 放代码,可以做cijenkins: 做cd发布项目harbor: 镜像仓库k8s: 运行服务我们只在k8s内部运行服务,至于中间件(mysql、redis、es等)就会部署在k8s之外,如果你是线上使用云服务可以直接使用云服务,如果自建也最好运行在k8s之外。由于我是在本地演示,这里的中间件我就使用之前开发环境的中间件了,不要纠结这个,主要演示如何部署

0 赞 4 评论
收藏
1 个月前  /  yalishanda

微服务从代码到k8s部署应有尽有系列(十二、链路追踪)

我们用一个系列来讲解从需求到上线、从代码到k8s部署、从日志到监控等各个方面的微服务完整实践。整个项目使用了go-zero开发的微服务,基本包含了go-zero以及相关go-zero作者开发的一些中间件,所用到的技术栈基本是go-zero项目组的自研组件,基本是go-zero全家桶了。实战项目地址:https://github.com/Mikaelemmmm/go-zero-looklook1、概述 如果按照我前两节错误处理、日志收集配置的话,我们通过日志中的traceId也可以完整看到报错时候

0 赞 4 评论
收藏
1 个月前  /  yalishanda

微服务从代码到k8s部署应有尽有系列(十三、服务监控)

我们用一个系列来讲解从需求到上线、从代码到k8s部署、从日志到监控等各个方面的微服务完整实践。整个项目使用了go-zero开发的微服务,基本包含了go-zero以及相关go-zero作者开发的一些中间件,所用到的技术栈基本是go-zero项目组的自研组件,基本是go-zero全家桶了。实战项目地址:https://github.com/Mikaelemmmm/go-zero-looklook1、概述 好的服务一定是可以被及时监控的,在go-zero-looklook中我们使用目前比较流行的pro

0 赞 4 评论
收藏
1 个月前  /  yalishanda

微服务从代码到k8s部署应有尽有系列(十一、日志收集)

我们用一个系列来讲解从需求到上线、从代码到k8s部署、从日志到监控等各个方面的微服务完整实践。整个项目使用了go-zero开发的微服务,基本包含了go-zero以及相关go-zero作者开发的一些中间件,所用到的技术栈基本是go-zero项目组的自研组件,基本是go-zero全家桶了。实战项目地址:https://github.com/Mikaelemmmm/go-zero-looklook序言 在介绍之前,我先说一下整体思路,如果你的业务日志量不是特别大恰好你又使用的是云服务,那你直接使用云服

0 赞 3 评论
收藏
1 个月前  /  yalishanda

微服务从代码到k8s部署应有尽有系列(十、错误处理)

我们用一个系列来讲解从需求到上线、从代码到k8s部署、从日志到监控等各个方面的微服务完整实践。整个项目使用了go-zero开发的微服务,基本包含了go-zero以及相关go-zero作者开发的一些中间件,所用到的技术栈基本是go-zero项目组的自研组件,基本是go-zero全家桶了。实战项目地址:https://github.com/Mikaelemmmm/go-zero-looklook1、概述 我们在平时开发时候,程序在出错时,希望可以通过错误日志能快速定位问题(那么传递进来的参数、包括堆

0 赞 4 评论
收藏