快乐的程序员
微服务之间数据传递方式:RESTful、GraphQL还是gRPC 微服务之间数据传递方式:RESTful、GraphQL还是gRPC
写在前面在现代的软件工程中,微服务或在客户端与服务端之间的信息传递的方式,比较常见的有三种架构设计的风格:RESTful、GraphQL和gRPC。 每一种模式,都有其特点和合适的使用场景,今天,我们主要来对三种风格做一个深入的理解和对比,
2024-04-21
微服务架构:BFF和网关是如何演化出来的? 微服务架构:BFF和网关是如何演化出来的?
0. 介绍BFF(Backend for Frontend)和网关Gateway是微服务架构中的两个重要概念,这两个概念相对比较新,有些开发人员甚至是架构师都不甚理解。 本文用假想的公司案例+图示的方式,解释BFF和网关是什么,它们是怎么演
2024-03-26
微服务:可用性总结 微服务:可用性总结
0. 写在前面前面写了一系列文章 Go微服务: 隔离设计 微服务限流之一:令牌桶算法 微服务限流之二:令牌桶算法源码解析 微服务限流之三:漏桶算法 微服务限流之四:自适应限流 微服务限流之五:熔断 本文将做一个总结 1. 限流对比
2024-03-26
微服务限流之五:熔断 微服务限流之五:熔断
0. 写在前面无论是令牌桶, 漏桶还是 自适应限流的方法,总的来说都是服务端的单机限流方式。虽然服务端限流虽然可以帮助我们抗住一定的压力,但是拒绝请求毕竟还是有成本的。如果我们的本来流量可以支撑 1w rps,加了限流可以支撑在 10w r
2024-03-26
微服务限流之四:自适应限流 微服务限流之四:自适应限流
0. 写在前面令牌桶与 漏桶 两种算法最大的一个问题就是他们都属于需要提前设置阈值的算法,基于 QPS 进行限流的时候最麻烦的就是这个阈值应该怎么设定。一般来说我们可以通过压测来决定这个阈值。但是也会存在问题 如果每个系统上线前都要经过很
2024-03-26
微服务限流之三:漏桶算法 微服务限流之三:漏桶算法
0. 写在前面前面两篇文章微服务限流之一:令牌桶算法和微服务限流之二:令牌桶算法源码解析分别介绍了令牌桶算法的用法和原理,本文将介绍另外一种流行的限流算法:漏桶算法。 1. 原理漏桶算法(Leaky Bucket) 是网络世界中 流量整形(
2024-03-26
微服务限流之二:令牌桶算法源码解析 微服务限流之二:令牌桶算法源码解析
0. 写在前面上一篇文章微服务限流之一:令牌桶算法介绍了令牌桶算法的原理、官方实现和用法,本文就来看看官方是如何实现的,深入分析它的源码。 官方在golang.org/x/time/rate库中实现的令牌桶算法,这个实现很有意思,并没有真正
2024-03-26
微服务限流之一:令牌桶算法 微服务限流之一:令牌桶算法
0. 写在前面令牌桶算法和漏桶算法是微服务限流算法中2个比较常见的算法,微服务限流系列将从原理、使用方法、具体示例等方向详细讲解一下这2个算法。 1. 原理 我们以 r/s 的速度向桶内放置令牌,桶的容量为 b , 如果桶满了令牌将会丢弃
2024-03-26
Go微服务: 隔离设计 Go微服务: 隔离设计
0. 写在前面隔离设计源于船舶行业,一般而言无论大船还是小船,都会有一些隔板,将船分为不同的空间,这样如果有船舱漏水一般只会影响这一小块空间,不至于把整个船都给搞沉了。 同样我们的软件服务也是一个道理,我们要尽量避免出现一个问题就把这个业务
2024-03-26
微服务限流三大件:熔断、降级、限流 微服务限流三大件:熔断、降级、限流
写在前面分布式系统中一般会有高负荷、异常情况,在发生这些异常情况的时候应该如何应对呢?本文介绍一些常规方法。 熔断场景系统负载突然过高,比如突发的访问量、过多的请求以及IO压力过载都可能会造成某个节点故障,比如节点A,然后节点A挂了,又把负
2024-03-21