你还在手撕微服务?快试试 go-zero 的微服务自动生成

0.为什么说做好微服务很难?要想做好微服务,我们需要理解和掌握的知识点非常多,从几个维度上来说:基本功能层面并发控制&限流,避免服务被突发流量击垮服务注册与服务发现,确保能够动态侦测增减的节点负载均衡

置顶 原创 点赞0 阅读408 收藏0 评论0 2021-05-20

一文读懂云原生 go-zero 微服务框架

0. go-zero介绍 从今年8月7日github开源以来,已经获得了2700+ star的 go-zero 是一个集成了各种工程实践的web和rpc框架。通过弹性设计保障了大并发服务端的稳定性,经受了充分的实战检验。 go-zero包含极简的API定义和生成工具goctl,…

置顶 原创 点赞0 阅读425 收藏0 评论0 2021-05-20

服务自适应熔断原理与实现

由此可见,在整个调用链中,中间的某一个环节出现异常就会引起上游调用服务出现一些列的问题,甚至导致整个调用链的服务都宕机,这是非常可怕的。因此一个服务作为调用方调用另一个服务时,为了防止被调用服务出现问题进而导致调用服务出现问题,所以调用服务需要进行自我保护,而保护的常用手段就是…

置顶 原创 点赞0 阅读321 收藏0 评论0 2021-05-20

Go微服务实践之增删改查

首先我们从 model 层开始,来说说go-zero 的API以及封装细节。首先 model 层连接的API集中在core/stores。我们先来看看操作 mysql 这类数据库,API方法我们来到 core/stores/sqlx,所以接下来用几篇的文章总体介绍一下 sqlx…

置顶 原创 点赞0 阅读344 收藏0 评论0 2021-05-20

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

在微服务中由于服务间相互依赖很容易出现连锁故障,连锁故障可能是由于整个服务链路中的某一个服务出现故障,进而导致系统的其他部分也出现故障。例如某个服务的某个实例由于过载出现故障,导致其他实例负载升高,从而导致这些实例像多米诺骨牌一样一个个全部出现故障,这种连锁故障就是所谓的雪崩现…

置顶 原创 点赞0 阅读325 收藏0 评论0 2021-05-20

go-zero 1.1.4 发布,web 和 rpc 框架

go-zero 1.1.4 发布了。go-zero 是一个集成了各种工程实践的 web 和 rpc 框架。通过弹性设计保障了大并发服务端的稳定性,经受了充分的实战检验。go-zero 包含极简的 API 定义和生成工具 goctl,可以根据定义的 API 文件一键生成 Go, …

置顶 原创 点赞0 阅读433 收藏0 评论0 2021-05-20

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

每次发 https://github.com/tal-tech/go-zero 相关文章时,都会有读者问我们用什么画图的。 我为大家整理了 go-zero 作者去年广受好评的分享视频,详细分享了 go-zero 的设计理念和最佳实践。关注公众号「微服务实践」,回复 视频 获取;…

置顶 原创 点赞0 阅读313 收藏0 评论0 2021-05-20

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

大家好,很高兴来到“GO开源说” 跟大家分享开源项目背后的一些故事、设计思想以及使用方法,今天分享的项目是 go-zero,一个集成了各种工程实践的 web 和 rpc 框架。我是Kevin,go-zero 作者,我的 github id 是 kevwan。 go-zero 虽…

置顶 原创 点赞0 阅读314 收藏0 评论0 2021-05-20

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

Go 正常都是用来写后端服务的,一般一个请求是由多个串行或并行的子任务来完成的,每个子任务可能是另外的内部请求,那么当这个请求超时的时候,我们就需要快速返回,释放占用的资源,比如goroutine,文件描述符等。 为了简化本文,我们以一个请求函数 hardWork 为例,用来做…

置顶 原创 点赞0 阅读327 收藏0 评论0 2021-05-20

一文带你更方便的控制 goroutine

上一篇我们讲了 go-zero 中的并发工具包 core/syncx。从整体分析来看,并发组件主要通过 channel + mutex 控制程序中协程之间沟通。本篇来聊 go-zero 对 Go 中

置顶 原创 点赞0 阅读303 收藏0 评论0 2021-05-20

一文带你理解最简消息队列实现

最近在看公司的 redis queue 时,发现底层使用的是 go-zero 的 queue 。本篇文章来看看 queue 的设计,也希望可以从里面了解到 mq 的最小型设计实践。

置顶 原创 点赞0 阅读314 收藏0 评论0 2021-05-20

缓存系统稳定性 - 架构师峰会演讲实录

我们在流量激增的情况下,服务端哪个部分最有可能会是第一个瓶颈?我相信大部分人遇到的都会是数据库首先扛不住,量一起来,数据库慢查询,甚至卡死。此时,上层服务有怎么强的治理能力都是无济于事的。

置顶 原创 点赞0 阅读308 收藏0 评论0 2021-05-20

如何让消息队列达到最大吞吐量?

你在使用消息队列的时候关注过吞吐量吗?思考过吞吐量的影响因素吗?考虑过怎么提高吗?总结过最佳实践吗? 本文带你一起探讨下消息队列消费端高吞吐的 Go 框架实现。

置顶 原创 点赞0 阅读364 收藏0 评论0 2021-05-20

缓存数据一致性 - 架构师峰会演讲实录

当缓存稳定性问题解决之后,一般我们就会面临数据正确性问题,可能会经常遇到『明明数据更新了,为啥还是显示老的呢?』这类问题。这就是我们常说的『缓存数据一致性』问题了。

置顶 原创 点赞1 阅读355 收藏0 评论0 2021-05-20

通过 MapReduce 降低服务响应时间

在微服务中开发中,api网关扮演对外提供restful api的角色,而api的数据往往会依赖其他服务,复杂的api更是会依赖多个甚至数十个服务。虽然单个被依赖服务的耗时一般都比较低,但如果多个服务串行依赖的话那么整个api的耗时将会大大增加。

原创 推荐 点赞0 阅读476 收藏0 评论0 4 天前

一文讲懂服务的优雅重启和更新

在重启过程中,会有一段时间不能给用户提供正常服务;同时粗鲁关闭服务,也可能会对业务依赖的数据库等状态服务造成污染。 所以我们服务重启或者是重新发布过程中,要做到新旧服务无缝切换,同时可以保障变更服务 零宕机时间!

原创 推荐 点赞1 阅读2103 收藏1 评论0 12 天前

10行C++代码实现高性能HTTP服务

前言是不是觉得C++写个服务太累,但又沉迷于C++的真香性能而无法自拔?作为一个老牌C++程序员(可以看我github上十几年前的C++项目:https://github.com/kevwan),这几天听一个好友跟我聊起他写的C++框架,说极简代码即可完成各种C++服务的开发,不禁让我心生好奇!于是我去研究了一下,发现确实有点意思!实战(干货)话不多说,我们来一起看看,10行C++代码怎么实现一个

原创 推荐 点赞0 阅读766 收藏0 评论0 17 天前

一文带你搞懂 RPC 到底是个啥

RPC(Remote Procedure Call),是一个大家既熟悉又陌生的词,只要涉及到通信,必然需要某种网络协议。我们很可能用过HTTP,那么RPC又和HTTP有什么区别呢?RPC还有什么特点,常见的选型有哪些?

原创 推荐 点赞1 阅读562 收藏0 评论0 17 天前

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

本文分析了 `go-zero` 框架中的指标统计的基础封装、滑动窗口的实现 `rollingWindow`。当然,除此之外,`store/redis` 也存在指标统计,这个里面的就不需要滑动窗口计数了,因为本身只需要计算命中率,命中则对 hit +1,不命中则对 miss +1 即可,分指标计数,最后统计一下就知道命中率。

原创 推荐 点赞0 阅读638 收藏0 评论0 18 天前

通用连接池帮你解决资源管理难题

前言群里老有同学问,go-zero的数据库和redis库是否有连接池支持。先说结论:有的,可以放心大胆用!从框架设计来说,对于数据库连接这种资源当然是尽可能减少频繁操作:为业务减负提升框架自身的性能池化技术是一个通用化技术,本身就应该作为一个通用库支撑框架的上层业务所以不管是sqlx,redis,以及mongo,等以后可能要支持的数据源类型,底层的池化处理都是通用的;所以当开发者需要一个池化处理组

原创 推荐 点赞0 阅读1151 收藏0 评论0 24 天前

懂得取舍才是缓存设计的真谛

做架构最难的我认为是懂得取舍(trade-off),寻找最佳收益的平衡点是非常考验综合能力的,缓存的设计也是如此。

原创 推荐 点赞1 阅读850 收藏0 评论0 26 天前

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

goctl 工具极大简化了 Dockerfile 文件的编写,提供了开箱即用的最佳实践,并且支持了模板自定义。

原创 推荐 点赞1 阅读1786 收藏1 评论0 2021-05-20

进程内缓存助你提高并发能力!

前言缓存,设计的初衷是为了减少繁重的IO操作,增加系统并发能力。不管是 CPU多级缓存,page cache,还是我们业务中熟悉的 redis 缓存,本质都是将有限的热点数据存储在一个存取更快的存储介质中。计算机本身的缓存设计就是 CPU 采取多级缓存。那对我们服务来说,我们是不是也可以采用这种多级缓存的方式来组织我们的缓存数据。同时 redis 的存取都会经过网络IO,那我们能不能把热点数据直接

原创 点赞0 阅读438 收藏0 评论0 2021-05-19

进程内缓存助你提高并发能力!

对服务来说,我们是不是也可以采用多级缓存的方式来组织我们的缓存数据。同时 redis 的存取都会经过网络IO,那我们能不能把热点数据直接存在本进程内,由进程自己缓存一份最近最热的这批数据呢?

原创 推荐 点赞1 阅读1478 收藏0 评论0 2021-05-19

缓存数据一致性 - 架构师峰会演讲实录

当缓存稳定性问题解决之后,一般我们就会面临数据正确性问题,可能会经常遇到『明明数据更新了,为啥还是显示老的呢?』这类问题。这就是我们常说的『缓存数据一致性』问题了,本文我们仔细下分析其产生的原因及应对方法。

原创 推荐 点赞1 阅读931 收藏0 评论0 2021-05-17

熔断原理与实现Golang版

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

原创 推荐 点赞1 阅读1567 收藏0 评论0 2021-05-14

如何让消息队列达到最大吞吐量?

你在使用消息队列的时候关注过吞吐量吗?思考过吞吐量的影响因素吗?考虑过怎么提高吗?总结过最佳实践吗? 本文带你一起探讨下消息队列消费端高吞吐的 Go 框架实现。

原创 推荐 点赞1 阅读726 收藏0 评论0 2021-05-13

缓存系统稳定性 - 架构师峰会演讲实录

前言大家好!我是万俊峰,go-zero作者。感谢ArchSummit提供这么好的机会来跟大家分享一下go-zero的缓存最佳实践。首先,大家可以想一想:我们在流量激增的情况下,服务端哪个部分最有可能会是第一个瓶颈?我相信大部分人遇到的都会是数据库首先扛不住,量一起来,数据库慢查询,甚至卡死。此时,上层服务有怎么强的治理能力都是无济于事的。所以我们常说看一个系统架构设计的好不好,很多时候看看缓存设计

原创 推荐 点赞1 阅读1100 收藏0 评论0 2021-05-10

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

大家好,很高兴来到“GO开源说” 跟大家分享开源项目背后的一些故事、设计思想以及使用方法,今天分享的项目是 go-zero,一个集成了各种工程实践的 web 和 rpc 框架

原创 推荐 点赞1 阅读1577 收藏0 评论0 2021-05-06

通过 MapReduce 降低服务响应时间

在微服务中开发中,api网关扮演对外提供restful api的角色,而api的数据往往会依赖其他服务,复杂的api更是会依赖多个甚至数十个服务。虽然单个被依赖服务的耗时一般都比较低,但如果多个服务串行依赖的话那么整个api的耗时将会大大增加。那么通过什么手段来优化呢?我们首先想到的是通过并发来的方式来处理依赖,这样就能降低整个依赖的耗时,Go基础库中为我们提供了 WaitGroup 工具用来进行

原创 推荐 点赞1 阅读1451 收藏0 评论0 2021-04-30
  • 1
  • 2
  • 3
写文章