go-zero 如何扛住流量冲击(一)

不管是在单体服务中还是在微服务中,开发者为前端提供的API接口都是有访问上限的,当访问频率或者并发量超过其承受范围时候,我们就必须考虑限流来保证接口的可用性或者降级可用性。即接口也需要安装上保险丝,以防止非预期的请求对系统压力过大而引起的系统瘫痪。go-zero 集成了开箱即用的 限流器 。其中内置了两种限流器,也对应两类使用场景:种类原理场景periodlimit单位时间限制访问次数需要强行限制数据的传输速率tokenlimit令牌桶限流限制数据的平均传输速率,同时允许某种程度的突发传输本文就...阅读全文

2021-04-21 19:47:05 wx607fee5b9d0e6
阅读:123 评论:0

我用 go-zero 一周实现了一个中台系统,已开源!

作者:Jack最近发现golang社区里出了一个新星的微服务框架,来自好未来,光看这个名字,就很有奔头,之前,也只是玩过go-micro,其实真正的还没有在项目中运用过,只是觉得 微服务,grpc 这些很高大尚,还没有在项目中,真正的玩过,我看了一下官方提供的工具真的很好用,只需要定义好,舒适文件jia结构 都生成了,只需要关心业务,加上最近 有个投票的活动,加上最近这几年中台也比较火,所以决定玩一下,开源地址: github.com/jackluo2012…先聊聊中台架构思路吧:中台的概念大概...阅读全文

2021-04-21 19:47:27 wx607fee5b9d0e6
阅读:210 评论:0

再见go-micro!企业项目迁移go-zero全攻略(一)

作者:Mikael最近发现 golang 社区里出了一个新兴的微服务框架。看了一下官方提供的工具真的很好用,只需要定义好 .api 文件模版代码都可以一键生成,只需要关心业务;同时 core 中的工具极大减少了开发成本。废话不多说,来看看这个微服务框架:go-zero起源聊聊与go-zero结缘最先接触go-zero是2020年10月国庆假期,说来也巧,看到有人在go-micro群中问go-zero情况,当时go-zero作者在群中就大概回答了一下,引起了我的好奇,当时公司用的go-micro1...阅读全文

2021-04-21 19:48:08 wx607fee5b9d0e6
阅读:281 评论:0

【Golang开源项目推荐】稳定,弹性,高效web和rpc框架 go-zero

0. go-zero 介绍go-zero 是一个集成了各种工程实践的web 和rpc 框架。通过弹性设计保障了大并发服务端的稳定性,经受了充分的实战检验。go-zero 包含极简的API 定义和生成工具goctl,可以根据定义的api 文件一键生成Go, iOS, Android, Kotlin, Dart, TypeScript, JavaScript 代码,并可直接运行。使用go-zero 的好处:轻松获得支撑千万日活服务的稳定性内建级联超时控制、限流、自适应熔断、自适应降载等微服务治理能力...阅读全文

2021-04-27 13:30:22 mb6066e504cce6f
阅读:560 评论:0

如果你是一个Golang面试官,你会问哪些问题?

这篇文章翻译自一位外国友人的关于面试后端程序员的文章,我比较喜爱这篇文章。一是因为它极大的拓宽了我的视角,另一方面是其中的一些问题非常具有启发性。不仅对于面试者,对于面试官来说也是个不错的参考。于是迫不及待的翻译了一下,给各位看官做个参考。原文参见 @arialdomartini的: Back-End Developer Interview Questions以下是原文翻译。通用问题开放式问题设计模式相关问题代码设计相关问题语言相关问题Web相关问题数据库相关问题非关系型数据库相关问题代码版本管...阅读全文

2021-04-27 13:37:34 mb6066e504cce6f
阅读:470 评论:0

Go - 实现项目内链路追踪(二)

上篇文章 Go - 实现项目内链路追踪 分享了,通过 链路 ID 可以将 请求信息、响应信息、调用第三方接口的信息、调试信息、执行的 SQL 信息、执行的 Redis 信息 串起来,记录的具体参数在文件中都有介绍。这篇文章在上面的基础上,新增 2 个功能点:新增将 调用 gRPC 接口信息 记录到 Trace 中;新增对记录的敏感信息进行脱敏处理;调用 gRPC 接口信息记录参数Object,结构如下:type Grpc struct { Timestamp string `json:"time...阅读全文

2021-04-27 16:33:59 wx6087c7391d3cd
阅读:469 评论:0

Go - 实现项目内链路追踪

为什么项目内需要链路追踪?当一个请求中,请求了多个服务单元,如果请求出现了错误或异常,很难去定位是哪个服务出了问题,这时就需要链路追踪。这个图画的比较简单,从图中可以清晰的看出他们之间的调用关系,通过一个例子说明下链路的重要性,比如对方调我们一个接口,反馈在某个时间段这接口太慢了,在排查代码发现逻辑比较复杂,不光调用了多个三方接口、操作了数据库,还操作了缓存,怎么快速定位是哪块执行时间很长?不卖关子,先说下本篇文章最终实现了什么,如果感兴趣再继续往下看。实现了通过记录如下参数,来进行问题定位,关...阅读全文

2021-04-27 16:58:00 wx6087c7391d3cd
阅读:332 评论:0

[系列] - go-gin-api 路由中间件 - Jaeger 链路追踪(五)

概述首先同步下项目概况:上篇文章分享了,路由中间件 - 捕获异常,这篇文章咱们分享:路由中间件 - Jaeger 链路追踪。啥是链路追踪?我理解链路追踪其实是为微服务架构提供服务的,当一个请求中,请求了多个服务单元,如果请求出现了错误或异常,很难去定位是哪个服务出了问题,这时就需要链路追踪。咱们先看一张图:这张图的调用链还比较清晰,咱们想象一下,随着服务的越来越多,服务与服务之间调用关系也越来越多,可能就会发展成下图的情况。这调用关系真的是... 看到这,我的内心是崩溃的。那么问题来了,这种情况...阅读全文

2021-04-27 17:10:32 wx6087c7391d3cd
阅读:418 评论:0

go语言的31个坑

目录go语言的31个坑golang中分为值类型和引用类型1.左大括号不能单独放一行 {2.不能使用简短声明来设置字段的值3.不小心覆盖了变量4.显式类型的变量无法使用 nil 来初始化5.直接使用值为 nil 的 slice、map6.map 容量7.string 类型的变量值不能为 nil8.Array 类型的值作为函数参数9.访问 map 中不存在的 key10.string 类型的值是常量,不可更改,可以使用rune来转换11.string 与索引操作符12.字符串并不都是 UTF8 文本...阅读全文

2021-04-27 20:24:43 mob604756fb8908
阅读:1373 评论:3

beego-vue-admin基于当前流行技术组合的前后端RBAC管理系统:Go1.15.x+Beego2.x+Jwt+Redis+Mysql8+Vue 的前后端分离系统,权限控制采用 RBAC,支持数据字典与数据权限管理,支持动态路由等

<h1 style="text-align: center">beego-vue-admin 后台管理系统</h1> #### 项目简介 beego-vue-admin基于当前流行技术组合的前后端RBAC管理系统:Go1.15.x+Beego2.x+Jwt+Redis+Mysql8+Vue 的前后端分离系统,权限控制采用 RBAC,支持数据字典与数据权限管理,支持动态路由等 **体验地址:** [https://go.yixiang.co](https://go.yixia...阅读全文

2021-05-22 15:31:54 guchengwuyue
阅读:1128 评论:2

Golang两个协程交替输出

题目: 现在有两个goroutine。 一个输出1、3、5、7、9…… 另一个输出2、4、6、8、10…… 写一段代码,让他们输出1、2、3、4、5、6、7、8、9、10…… 解法: 使用Go的channel来解决比较合适。 需要3个channel。 A通道用来记录A协程的状态。 B通道用来记录B协程的状态。 Exit通道用来阻塞主协程,使程序不要立即退出,而是等待我们发出退出信号以后才退出。 ...阅读全文

2021-06-03 16:49:34 jlvihv
阅读:935 评论:2

分享 echo-framework 项目基础框架

[echo-framework](https://github.com/nelsonkti/echo-framework) 是基于 echo 搭建用于快速开发的项目框架 ## 安装 ``` go get -u github.com/nelsonkti/echo-framework ``` ## 功能叙述 - 支持 gorm、logger 日志、jwt、cron 定时任务、redis 等 - mysql 数据库读写分离、 负载均衡 - socket.io 通信协议 - n...阅读全文

2021-06-21 09:00:46 nelsonkti
阅读:624 评论:0

Go 开发中的十大常见陷阱[译]

Golang 中要注意的陷阱和常见错误。前言原文: The Top 10 Most Common Mistakes I’ve Seen in Go Projects作者: Teiva Harsanyi翻译许可: image-20210118234116954 img我在 Go 开发中遇到的十大常见错误。顺序无关紧要。正文未知的枚举值让我们看一个简单的例子:1234567type Status uint32const ( StatusOpen Status = iota StatusClosed ...阅读全文

2019-08-17 00:00 tomotoes.com
阅读:759 评论:0

论:如何从零开始搭建一个完整的K8S集群

> 随着微服务技术的出现,越来越多的组件独立出来成为单独的服务,服务之间通过网络通讯。能让业务扁平化。k8s是管理这些服务的载体。本文手把手教学如何搭建k8s。 # <font color=blue>k8s集群搭建:</font> k8s有三个重要组件: - 使用kubeadm是k8s官方推荐的一个进群部署工具 - kubectl 是命令行客户端(相当于mysql) - kubelet 是后台进程(相当于mysqld) >软件环境: 虚拟机: VMware® Works...阅读全文

2021-07-02 10:09:59 TangYiMo
阅读:399 评论:0

向github开源项目提交代码(pr)的详细步骤:

> 无意间看到一个类似redis的项目:rosedb。之前一直想自己写点轮子,一直没有行动,可能是现有的轮子用的太舒服了,没有动力去实现一个新的轮子。 先在别人的项目上提交点代码吧。 ### rosedb简单演示: >redis是c语言写的,rosedb是golang写的,我比较希望golang可以出现一个类似redis性能的项目。rosedb效果如下: 服务器端: ![在这里插入图片描述](https://img-blog.csdnimg.cn/2021070312093358...阅读全文

2021-07-05 19:28:40 TangYiMo
阅读:400 评论:0

Kubernetes集群搭建

机器配置 ip 配置 操作系统 10.101.139.129 2c 4g centos7.8 10.101.139.130 1c 2g centos7.8 10.101.139.131 1c 2g centos7.8 预配置 配置机器名 hostnamectl set-hostname master hostnamectl set-hostname node1 hostnamectl set-hostname node2 修改etc/hosts cat > /etc/hosts << EOF 1...阅读全文

2021-07-06 17:32:34 OPUmbrella
阅读:271 评论:0