自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(88)
  • 资源 (2)
  • 收藏
  • 关注

原创 一文带你更方便的控制 goroutine

上一篇我们讲了 go-zero 中的并发工具包 core/syncx。从整体分析来看,并发组件主要通过 channel + mutex 控制程序中协程之间沟通。Do not communicate by sharing memory; instead, share memory by communicating.不要通过共享内存来通信,而应通过通信来共享内存。本篇来聊 go-zero 对 Go 中 goroutine 支持的并发组件。我们回顾一下,go原生支持的 goroutine 控制的工具

2021-04-19 08:20:14 410 1

原创 更简的并发代码,更强的并发控制

有没感觉 Go 的 sync 包不够用?有没遇到类型没有 sync/atomic 支持?我们一起看看 go-zero 的 syncx 包对标准库的一些增值补充。https://github.com/tal-tech/go-zero/tree/master/core/syncxname作用AtomicBoolbool类型 原子类AtomicDurationDuration有关 原子类AtomicFloat64float64类型 原子类Barrier栏栅【将加.

2021-04-12 08:46:11 165

原创 极速精简 Go 版 Logstash

前言今天来介绍 go-zero 生态的另一个组件 go-stash。这是一个 logstash 的 Go 语言替代版,我们用 go-stash 相比原先的 logstash 节省了2/3的服务器资源。如果你在用 logstash,不妨试试,也可以看看基于 go-zero 实现这样的工具是多么的容易,这个工具作者仅用了两天时间。整体架构先从它的配置中,我们来看看设计架构。Clusters: - Input: Kafka: # Kafka 配置 --> 联动 go-

2021-04-06 08:09:30 1085

原创 用 Go + WebSocket 快速实现一个 chat 服务

前言在 go-zero 开源之后,非常多的用户询问是否可以支持以及什么时候支持 websocket,终于在 v1.1.6 里面我们从框架层面让 websocket 的支持落地了,下面我们就以 chat 作为一个示例来讲解如何用 go-zero 来实现一个 websocket 服务。整体设计我们以 zero-example 中的 chat 聊天室为例来一步步一讲解 websocket 的实现,分为如下几个部分:多客户端接入消息广播客户端的及时上线下线全双工通信【客户端本身是发送端,也是接收端】

2021-03-31 13:04:35 1867

原创 一文搞懂如何实现 Go 超时控制

为什么需要超时控制?请求时间过长,用户侧可能已经离开本页面了,服务端还在消耗资源处理,得到的结果没有意义过长时间的服务端处理会占用过多资源,导致并发能力下降,甚至出现不可用事故Go 超时控制必要性Go 正常都是用来写后端服务的,一般一个请求是由多个串行或并行的子任务来完成的,每个子任务可能是另外的内部请求,那么当这个请求超时的时候,我们就需要快速返回,释放占用的资源,比如goroutine,文件描述符等。服务端常见的超时控制进程内的逻辑处理读写客户端请求,比如HTTP或者RPC请求调

2021-03-29 07:53:33 439

原创 分布式任务 + 消息队列框架 go-queue

为什么写这个库应用场景有哪些如何使用总结为什么要写这个库?在开始自研 go-queue 之前,针对以下我们调研目前的开源队列方案:beanstalkdbeanstalkd 有一些特殊好用功能:支持任务priority、延时(delay)、超时重发(time-to-run)和预留(buried),能够很好的支持分布式的后台任务和定时任务处理。如下是 beanstalkd 基本部分:job:任务单元;tube:任务队列,存储统一类型 job。producer 和 consumer 操..

2021-03-22 10:15:35 2753

原创 一招让Kafka达到最佳吞吐量

通过上一篇文章对 dq 生产者*的分析,我们知道 dq 是基于 beanstalk 的封装。至于 *生产者 我们在后续的文章继续分享,本篇文章先来分析一下 go-queue 中的 kq。kq 基于 kafka 封装,设计之初是为了使 kafka 的使用更人性化。那就来看看 kq 的使用。上手使用func main() { // 1. 初始化 pusher := kq.NewPusher([]string{ "127.0.0.1:19092",

2021-03-17 10:15:28 1213

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

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

2021-03-15 08:19:30 299

原创 还在用crontab? 分布式定时任务了解一下

前言日常任务开放中,我们会有很多异步、批量、定时、延迟任务要处理,go-zero中有 go-queue,推荐使用 go-queue 去处理,go-queue 本身也是基于 go-zero 开发的,其本身是有两种模式:dq:依赖于beanstalkd ,适合延时、定时任务执行;kq:依赖于 kafka ,适用于异步、批量任务执行;本篇就先从 dq 开始,慢慢探究 go-queue 背后执行的逻辑。dq 简介dq 封装底层 beanstalkd 操作,分布式存储,延迟、定时设置。重启服务可以重新

2021-03-08 08:11:23 249

原创 使用Prometheus搞定微服务监控

最近对服务进行监控,而当前监控最流行的数据库就是 Prometheus,同时 go-zero 默认接入也是这款数据库。今天就对 go-zero 是如何接入 Prometheus ,以及开发者如何自己定义自己监控指标。监控接入go-zero 框架中集成了基于 prometheus 的服务指标监控。但是没有显式打开,需要开发者在 config.yaml 中配置:Prometheus: Host: 127.0.0.1 Port: 9091 Path: /metrics如果开发者是在本地搭建 P

2021-03-01 14:29:46 558

原创 缓存设计的好,服务基本不会倒

本文由『Go开源说』第四期 go-zero 直播内容修改整理而成,视频内容较长,拆分成上下篇,本文内容有所删减和重构。大家好,很高兴来到“GO开源说” 跟大家分享开源项目背后的一些故事、设计思想以及使用方法,今天分享的项目是 go-zero,一个集成了各种工程实践的 web 和 rpc 框架。我是Kevin,go-zero 作者,我的 github id 是 kevwan。go-zero 概览go-zero 虽然是20年8月7号才开源,但是已经经过线上大规模检验了,也是我近20年工程经验的积累,开.

2021-02-05 10:44:47 190

原创 go-zero解读与最佳实践(上)

本文有『Go开源说』第三期 go-zero 直播内容修改整理而成,视频内容较长,拆分成上下篇,本文内容有所删减和重构。大家好,很高兴来到“GO开源说” 跟大家分享开源项目背后的一些故事、设计思想以及使用方法,今天分享的项目是 go-zero,一个集成了各种工程实践的 web 和 rpc 框架。我是Kevin,go-zero 作者,我的 github id 是 kevwan。go-zero 概览go-zero 虽然是20年8月7号才开源,但是已经经过线上大规模检验了,也是我近20年工程经验的积累,开.

2021-02-03 11:14:57 997

原创 微服务实践之分布式定时任务

承接上篇:上篇文章讲到改造 go-zero 生成的 app module 中的 gateway & RPC 。本篇讲讲如何接入 异步任务 以及 log的使用。Delay Job日常任务开放中,我们会有很多异步、批量、定时、延迟任务要处理,go-zero中有 go-queue,推荐使用 go-queue 去处理,go-queue 本身也是基于 go-zero 开发的,其本身是有两种模式:dq: 依赖于beanstalkd ,分布式,可存储,延迟、定时设置,关机重启可以重新执行,消息会丢失,使用

2021-02-01 10:15:57 540

原创 企业项目迁移go-zero全攻略(二)

承接上篇:上篇文章讲到 go-zero 架构设计和项目设计。本篇文章接着这个项目设计,将生成的 app 模块 中 gateway 和 RPC 进行改造。废话不多说,让我们开始!gateway servicegateway 中我做了一些自定义,在端请求我们后台接口情况下,虽然多数情况是不需要关心错误码的,但是避免不了要某些场景还是需要根据固定错误码去做特殊处理,我自己定义了一个错误类,这个错误类只在 gateway 中使用:err.go:package xerrimport "fmt&q

2021-01-25 09:39:06 495 1

原创 别再问我们用什么画图的了!问就是excalidraw

每次发 https://github.com/tal-tech/go-zero 相关文章时,都会有读者问我们用什么画图的。这图什么工具画的呀?好看!这个手绘风格真好看,用啥工具画的呀?可不可以介绍下这个画图的工具?诸如此类的问题,所以我决定写篇短文介绍下我们最常用的画图工具 https://excalidraw.com/我们手绘风格的流程图、架构图等等都是通过 https://excalidraw.com/ 画的一个开源免费的画图软件个人目前看到的最舒服的画图软件支持多人协作一些

2021-01-23 11:51:28 4902 2

原创 企业项目迁移go-zero全攻略(一)

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

2021-01-21 10:02:23 1213

原创 windows下如何玩转火热的go-zero

作者:阿啄debugIT前言go-zero 是一个集成了各种工程实践的 web 和 rpc 框架。通过弹性设计保障了大并发服务端的稳定性,经受了充分的实战检验。go-zero 包含极简的 API 定义和生成工具 goctl,可以根据定义的 api 文件一键生成 Go, iOS, Android,Kotlin, Dart, TypeScript, JavaScript 代码,并可直接运行。这么牛,怎么不想去试一下?!go语言环境搭建配置GO语言环境新增go的代理GOPROXY=https

2021-01-14 11:39:51 336

原创 从代码到部署微服务实战(一)

当前微服务已经成为服务端开发的主流架构,而Go语言因其简单易学、内置高并发、快速编译、占用内存小等特点也越来越受到开发者的青睐,微服务实战系列文章将从实战的角度和大家一起学习微服务相关的知识。本系列文章将以一个“博客系统”由浅入深的和大家一起一步步搭建起一个完整的微服务系统该篇文章为微服务实战系列的第一篇文章,我们将基于go-zero+gitlab+jenkins+k8s构建微服务持续集成和自动构建发布系统,先对以上模块做一个简单介绍:go-zero 是一个集成了各种工程实践的 web 和 rpc 框

2021-01-06 08:53:00 406

原创 缓存原理与微服务缓存自动管理

抛开业务谈技术都是在耍流氓。—— Kevin Wan为什么需要缓存?先从一个老生常谈的问题开始谈起:我们的程序是如何运行起来的?程序存储在 disk 中程序是运行在 RAM 之中,也就是我们所说的 main memory程序的计算逻辑在 CPU 中执行来看一个最简单的例子:a = a + 1load x:x0 = x0 + 1load x0 -> RAM上面提到了3种存储介质。我们都知道,三类的读写速度和成本成反比,所以我们在克服速度问题上需要引入一个 中间层。这个中.

2020-12-30 10:34:20 415

原创 一个20年技术老兵的 2020 年度技术总结

大家好!我是 go-zero 作者 Kevin。充满惊吓的 2020 快要过去了,看到掘金上的技术人年度征文,忍不住文字记录一下艰辛而又充满收获的 2020 ✍️疫情开始春节假期疫情突然升级,我们面临着自身平台的转型升级。作为晓黑板CTO,有两个重点工作:保证大规模使用场景下平台的稳定性保证转型所需的新业务能够快速交付团队压力巨大的同时也感受到了前所未有的战斗热情,养兵千日用兵一时,不经历战与火的洗礼,怎么知道团队的技术能力是否能够经受得住流量洪峰的考验。战斗开始,迅速落实业务团队进行急需功

2020-12-28 09:16:03 304 1

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

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

2020-12-21 09:13:06 2338

原创 我用go-zero开发了第一个线上项目

作者:结冰前言​ 说在最前面,我是一个外表谦让,内心狂热,外表斯文,内心贪玩的一个普通人。我的职业是程序员,是一个golang语言爱好者,一半是因为golang好用,一半是因为其他语言学不好。我是从phper转为gopher的,写php的时候我认识了互联网软件,写go的时候感觉自己终于在编程。初见golang​ 我大学专业是软件。第一门编程语言是C++,知道了指针,知道了加减乘除,知道了编程去控制软硬件。后来选修了java,被ssh框架戏耍了一个暑假。再后来进入了一个社团技术部,再被ht

2020-12-18 07:00:42 3126 1

原创 微服务过载保护原理与实战

在微服务中由于服务间相互依赖很容易出现连锁故障,连锁故障可能是由于整个服务链路中的某一个服务出现故障,进而导致系统的其他部分也出现故障。例如某个服务的某个实例由于过载出现故障,导致其他实例负载升高,从而导致这些实例像多米诺骨牌一样一个个全部出现故障,这种连锁故障就是所谓的雪崩现象比如,服务A依赖服务C,服务C依赖服务D,服务D依赖服务E,当服务E过载会导致响应时间变慢甚至服务不可用,这个时候调用方D会出现大量超时连接资源被大量占用得不到释放,进而资源被耗尽导致服务D也过载,从而导致服务C过载以及整个系统雪

2020-12-16 09:11:39 615

原创 最简单的 K8S 部署文件编写姿势,没有之一!

1. 头疼编写K8S部署文件?K8S yaml 参数很多,需要边写边查?保留回滚版本数怎么设?如何探测启动成功,如何探活?如何分配和限制资源?如何设置时区?否则打印日志是GMT标准时间如何暴露服务供其它服务调用?如何根据CPU和内存使用率来配置水平伸缩?首先,你需要知道有这些知识点,其次要把这些知识点都搞明白也不容易,再次,每次编写依然容易出错!2. 创建服务镜像前一篇文章 讲解了如何快速创建自己的服务镜像,不过为了演示,这篇文章我们以 redis:6-alpine 镜像为例。3.

2020-12-14 09:00:30 284

原创 最简单的Go Dockerfile编写姿势,没有之一!

1. Dockerfile一些额外注意点选择最简单的镜像比如alpine,整个镜像5M左右设置镜像时区RUN apk add --no-cache tzdataENV TZ Asia/Shanghai2. 多阶段构建第一阶段构建否则构建出可执行文件,确保构建过程独立于宿主机第二阶段将第一阶段的输出作为输入,构建出最终的极简镜像3. 完整Dockerfile编写过程首先安装 goctl 工具GO111MODULE=on GOPROXY=https://goproxy.cn/

2020-12-10 14:19:39 682

原创 Go微服务实践之增删改查

从此篇文章开始,我们来陆续介绍 go-zero 开发一个项目所需要的组件和开发实践。首先我们从 model 层开始,来说说go-zero 的API以及封装细节。首先 model 层连接的API集中在core/stores。我们先来看看操作 mysql 这类数据库,API方法我们来到 core/stores/sqlx,所以接下来用几篇的文章总体介绍一下 sqlx 的使用和设计思想。快速使用func main() { // 1 const datasource = "user:pas.

2020-12-08 11:27:17 605 2

原创 基于gRPC的注册发现与负载均衡的原理和实战

gRPC是一个现代的、高性能、开源的和语言无关的通用RPC框架,基于HTTP2协议设计,序列化使用PB(Protocol Buffer),PB是一种语言无关的高性能序列化框架,基于HTTP2+PB保证了的高性能。go-zero是一个开源的微服务框架,支持http和rpc协议,其中rpc底层依赖gRPC,本文会结合gRPC和go-zero源码从实战的角度和大家一起分析下服务注册与发现和负载均衡的实现原理基本原理原理流程图如下:从图中可以看出go-zero实现了gRPC的resolver和balance

2020-12-07 00:05:06 410

原创 Go 大数据生态迎来重要产品 CDS

项目地址:https://github.com/tal-tech/cdsClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。它有着优异的性能,可以快速部署和运行。不过要想使用ClickHouse搭建起数仓用于数据分析,一个重要的问题就是数据如何进入ClickHouse?我们希望数据源的变化能够自动实时地被同步到ClickHouse,而且支持方便的动态的添加新的数据源(新的数据库,表),能够自动的生成对应数据源的schema。go-zero 团队使用go语言围绕Cl.

2020-11-27 08:30:42 168

原创 go-zero 如何扛住流量冲击(二)

本篇文章承接上一篇go-zero 如何扛住流量冲击(一)。上一篇介绍的是 go-zero 中滑动窗口限流,本篇介绍另外一个 tokenlimit ,令牌桶限流。使用const ( burst = 100 rate = 100 seconds = 5)store := redis.NewRedis("localhost:6379", "node", "")fmt.Println(store.Ping()

2020-11-25 12:30:14 153

原创 go-zero之web框架

go-zero 是一个集成了各种工程实践的 web 和 rpc 框架,其中rest是web框架模块,基于Go语言原生的http包进行构建,是一个轻量的,高性能的,功能完整的,简单易用的web框架服务创建go-zero中创建http服务非常简单,官方推荐使用goctl工具来生成。为了方便演示,这里通过手动创建服务,代码如下package mainimport ( "log" "net/http" "github.com/ta

2020-11-19 13:53:02 908

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

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

2020-11-17 12:00:15 380

原创 go-zero 是如何追踪你的请求链路的

go-zero 是如何追踪你的请求链路微服务架构中,调用链可能很漫长,从 http 到 rpc ,又从 rpc 到 http 。而开发者想了解每个环节的调用情况及性能,最佳方案就是 全链路跟踪。追踪的方法就是在一个请求开始时生成一个自己的 spanID ,随着整个请求链路传下去。我们则通过这个 spanID 查看整个链路的情况和性能问题。下面来看看 go-zero 的链路实现。代码结构spancontext:保存链路的上下文信息「traceid,spanid,或者是其他想要传递的内容」span

2020-11-03 15:59:30 300

原创 go-zero 是如何追踪你的请求链路的

go-zero 是如何追踪你的请求链路微服务架构中,调用链可能很漫长,从 http 到 rpc ,又从 rpc 到 http 。而开发者想了解每个环节的调用情况及性能,最佳方案就是 全链路跟踪。追踪的方法就是在一个请求开始时生成一个自己的 spanID ,随着整个请求链路传下去。我们则通过这个 spanID 查看整个链路的情况和性能问题。下面来看看 go-zero 的链路实现。代码结构spancontext:保存链路的上下文信息「traceid,spanid,或者是其他想要传递的内容」span

2020-11-03 15:57:31 479

原创 基于 prometheus 的微服务指标监控

基于prometheus的微服务指标监控服务上线后我们往往需要对服务进行监控,以便能及早发现问题并做针对性的优化,监控又可分为多种形式,比如日志监控,调用链监控,指标监控等等。而通过指标监控能清晰的观察出服务指标的变化趋势,了解服务的运行状态,对于保证服务稳定起着非常重要的作用prometheus是一个开源的系统监控和告警工具,支持强大的查询语言PromQL允许用户实时选择和汇聚时间序列数据,时间序列数据是服务端通过HTTP协议主动拉取获得,也可以通过中间网关来推送时间序列数据,可以通过静态配置文件或服

2020-11-02 14:58:13 832

原创 熔断原理与实现Golang版

在微服务中服务间依赖非常常见,比如评论服务依赖审核服务而审核服务又依赖反垃圾服务,当评论服务调用审核服务时,审核服务又调用反垃圾服务,而这时反垃圾服务超时了,由于审核服务依赖反垃圾服务,反垃圾服务超时导致审核服务逻辑一直等待,而这个时候评论服务又在一直调用审核服务,审核服务就有可能因为堆积了大量请求而导致服务宕机由此可见,在整个调用链中,中间的某一个环节出现异常就会引起上游调用服务出现一些列的问题,甚至导致整个调用链的服务都宕机,这是非常可怕的。因此一个服务作为调用方调用另一个服务时,为了防止被调用服

2020-10-28 11:09:54 1115

原创 如何利用go-zero在Go中快速实现JWT认证

关于JWT是什么,大家可以看看官网,一句话介绍下:是可以实现服务器无状态的鉴权认证方案,也是目前最流行的跨域认证解决方案。要实现JWT认证,我们需要分成如下两个步骤客户端获取JWT token。服务器对客户端带来的JWT token认证。1. 客户端获取JWT Token我们定义一个协议供客户端调用获取JWT token,我们新建一个目录jwt然后在目录中执行 goctl api -o jwt.api,将生成的jwt.api改成如下:type JwtTokenRequest struct

2020-10-26 10:19:26 610

原创 如何让服务在流量暴增的情况下保持稳定输出

服务自适应降载保护设计设计目的保证系统不被过量请求拖垮在保证系统稳定的前提下,尽可能提供更高的吞吐量设计考虑因素如何衡量系统负载是否处于虚机或容器内,需要读取cgroup相关负载用1000m表示100%CPU,推荐使用800m表示系统高负载尽可能小的Overhead,不显著增加RT不考虑服务本身所依赖的DB或者缓存系统问题,这类问题通过熔断机制来解决机制设计计算CPU负载时使用滑动平均来降低CPU负载抖动带来的不稳定,关于滑动平均见参考资料滑动平均就是取之前连续N次值

2020-10-22 11:42:58 268

原创 企业级RPC框架zRPC

近期比较火的开源项目go-zero是一个集成了各种工程实践的包含了Web和RPC协议的功能完善的微服务框架,今天我们就一起来分析一下其中的RPC部分zRPC。zRPC底层依赖gRPC,内置了服务注册、负载均衡、拦截器等模块,其中还包括自适应降载,自适应熔断,限流等微服务治理方案,是一个简单易用的可直接用于生产的企业级RPC框架。zRPC初探zRPC支持直连和基于etcd服务发现两种方式,我们以基于etcd做服务发现为例演示zRPC的基本使用:配置创建hello.yaml配置文件,配置如下:Nam

2020-10-21 15:08:41 1313 1

原创 如何高效定义和验证restful请求的参数

go-zero针对文本的序列化和反序列化主要在三个地方使用http api请求体的反序列化http api返回体的序列化配置文件的反序列化完整示例可参照下面这篇文章:快速构建高并发微服务1. http api请求体的反序列化在反序列化的过程中的针对请求数据的数据格式以及数据校验需求,go-zero实现了自己的一套反序列化机制1.1 数据格式以订单order.api文件为例type ( createOrderReq struct { token str

2020-10-20 11:39:44 412

原创 教你如何帮助前端同学快速生成API接口代码

最近我们团队开源的后端微服务框架go-zero增长势头比较迅猛,这篇文章我讲讲go-zero对前端团队的作用,并通过一个示例来给大家演示我们是怎么做的,希望能给后端的同学也可以帮助前端同学提高开发效率????首先,我们来看看正常怎么实现api接口:1,后端给出(或经过协商给出)api定义文档2,前端多端开发编写各自的api请求代码3,单元测试,如果有的话4,前后端都完成后,联调接口然后,给大家讲讲我们团队是怎么做的:1,后端(或经过协商)通过.api文件定义出接口2,前端多端开发通过命令一键

2020-10-19 17:20:20 1545

测试驱动开发 test driven development by example chm

测试驱动开发是一种可以在开发过程中控制忧虑感的开发方法。我并非指那些毫无意义的没有必要的担忧──(pow widdle prwogwammew needs a pacifiew)──而是指合理的担忧,担忧是否合理是个很困难的问题,不能从一开始就看出来。如果说疼痛自然就会叫 “停!”,那么担忧自然就会说“细心!”。

2011-04-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除