Go语言中文网 为您找到相关结果 15

HTTP API 网关 API-Gateway

Gateway是一个使用go实现的基于HTTP的API 网关。 **特性:** * API 聚合 * 流控 * 熔断 * 负载均衡 * 健康检查 * 监控 * 消息路由 * 后端管理WebUI **能做什么:** * 规划更友好的URL给调用者。 * 聚合多个API的结果返回给API调用者,利于移动端,后端可以实现原子接口。 * 保护后端API服务不会被突发异常流量压垮。 * 提供熔断机制,使得后端API Server具备自我恢复能力。 * 借助消息路由能力,实现灰度发布,AB测试...阅读全文

微服务组件之限流器与熔断器

在微服务架构里面一个很常见的问题就是服务之间的延迟和通信失败问题,极端的情况下,甚至会因为某个服务的性能下降或者故障宕机,导致访问超时,层层传递,引发雪崩,最终导致整个系统崩溃,而限流器和熔断器(这两个组件都是客户端的)能很好的解决这个问题,提高系统的可靠性和稳定性 限流器 限流器,从字面上理解就是用来限制流量,有时候流量突增(可预期的比如“双11”,不可预期的微博的热门话题等),会将后端服务压垮,甚至直接宕机,使用限流器能限制访问后端的流量,起到一个保护作用,被限制的流量,可以根据具体的业务逻辑去处理,直接返回错误或者返回默认值等等 golang 提供了拓展库(golang.org/x/time/rate)提供了限流器组件,用法上也很简单直观,通过下面这段代码就可以创建一个限流器 // 每...阅读全文

博文 2018-06-21 18:34:39 hatlonely

令人激动的微服务2.0技术栈

作者|Christian 编辑|禚娴静 当下市场瞬息万变,新技术不断涌现,而微服务持续火热。如果说2014年是微服务的元年,那么2015年和2016年则是微服务走下神坛的时刻,越来越多的开发者、架构师们探讨着如何落地,如何解决各种实际问题,而很多技术栈和工具也纷纷涌现。构建微服务时,我们真的深深进入了分析分布式系统 - 一个已经研究了40年以上的技术主题,复杂的自适应系统理论已经深入人心有很长的时间。从技术的角度来看,我们需要解决的事情如下:部署交付API版本控制合同缩放/自动缩放服务发现负载均衡路由/自适应路由健康检查配置熔断器bulk-headsTTL / deadlining延迟跟踪服务因果跟踪分布式日志度量操作与收集Netflix和一些互联网公司作为早期微服务的采用者在这些领域做了很...阅读全文

博文 2017-03-14 11:05:54 Christian

hystrix-go

内部组织了一次关于hystrix-go的分享,没想到引起了内部的困惑,对于没有做过分布式系统的开发同学可能根本没有接触过hystrix,学习一个新东西,我个人的一贯思路是按照黄金圈理论。 这里关于hystrix是什么就不描述了,百度一下足够你翻几屏的了。因为目前Team以golang为主要开发语言,所以使用了开源的hystrix-go(https://github.com/afex/hystrix-go).大家先看下面一个例子:var Number intvar Result stringfunc main() { config := hystrix.CommandConfig{ Timeout:2000, //超时时间设置 单位毫秒 MaxConcurrentRequests:8, //最...阅读全文

博文 2018-07-22 23:34:48 GoSnail

阿里P8架构师谈:什么是缓存雪崩?服务器雪崩的场景与解决方案

什么是应用服务雪崩雪崩问题分布式系统都存在这样一个问题,由于网络的不稳定性,决定了任何一个服务的可用性都不是 100% 的。当网络不稳定的时候,作为服务的提供者,自身可能会被拖死,导致服务调用者阻塞,最终可能引发雪崩连锁效应。缓存雪崩当缓存服务器重启或者大量缓存集中在某一个时间段失效,这样在失效的时候,也会给后端系统(比如DB)带来很大压力,造成数据库后端故障,从而引起应用服务器雪崩。雪崩效应产生的几种场景流量激增:比如异常流量、用户重试导致系统负载升高;缓存刷新:假设A为client端,B为Server端,假设A系统请求都流向B系统,请求超出了B系统的承载能力,就会造成B系统崩溃;程序有Bug:代码循环调用的逻辑问题,资源未释放引起的内存泄漏等问题;硬件故障:比如宕机,机房断电,光纤被挖断...阅读全文

博文 2018-09-14 16:55:04 Java_fenxiang

微服务组件之限流器与熔断器

在微服务架构里面一个很常见的问题就是服务之间的延迟和通信失败问题,极端的情况下,甚至会因为某个服务的性能下降或者故障宕机,导致访问超时,层层传递,引发雪崩,最终导致整个系统崩溃,而限流器和熔断器(这两个组件都是客户端的)能很好的解决这个问题,提高系统的可靠性和稳定性 限流器 限流器,从字面上理解就是用来限制流量,有时候流量突增(可预期的比如“双11”,不可预期的微博的热门话题等),会将后端服务压垮,甚至直接宕机,使用限流器能限制访问后端的流量,起到一个保护作用,被限制的流量,可以根据具体的业务逻辑去处理,直接返回错误或者返回默认值等等 golang 提供了拓展库(golang.org/x/time/rate)提供了限流器组件,用法上也很简单直观,通过下面这段代码就可以创建一个限流器 // 每...阅读全文

博文 2018-06-21 16:34:47 hatlonely

Go 微服务中的熔断器和重试

今天我们来讨论微服务架构中的自我恢复能力。通常情况下,服务间会通过同步或异步的方式进行通信。我们假定把一个庞大的系统分解成一个个的小块能将各个服务解耦。管理服务内部的通信可能有点困难了。你可能听说过这两个著名的概念:熔断和重试。 ## 熔断器 ![01](https://raw.githubusercontent.com/gctt-images2/blob/master/circuit-breaker-and-retry/01.png) 想象一个简单的场景:用户发出的请求访问服务 A 随后访问另一个服务 B。我们可以称 B 是 A 的依赖服务或下游服务。到服务 B 的请求在到达各个实例前会先通过负载均衡器。 后端服务发生系统错误的原因有很多,例如慢查询、network blip 和内存争用。...阅读全文

博文 2019-12-11 16:35:30 lxbwolf

一、分布式之弹性设计概述

从移动开发转到后台开发后,总结了很多基础概念以及分布式弹性设计的一些方案。 [1.1、分布式之弹性:服务隔离]([http://ldaysjun.com/2019/04/28/Distributed/1.1%E3%80%81%E5%88%86%E5%B8%83%E5%BC%8F%E5%88%86%E5%B8%83%E5%BC%8F%E4%B9%8B%E5%BC%B9%E6%80%A7%EF%BC%9A%E9%9A%94%E7%A6%BB%E8%AE%BE%E8%AE%A1/](http://ldaysjun.com/2019/04/28/Distributed/1.1、分布式分布式之弹性:隔离设计/) [1.2、分布式之弹性:服务限流]([http://ldaysjun.com/2019/0...阅读全文

博文 2020-01-04 10:41:20 ldaysjun

微服务漫游指南(一)

最近几年“微服务”这个词可谓是非常的火爆,大有席卷天下的态势。几乎所有公司都在按照自己的理解实施微服务,大公司也在逐步地把自己庞大的代码库通过一定的策略逐步拆分成微服务。不过如果你在Google上搜一下,你会发现“微服务”这个名词很难有一个明确的定义,不同的人,不同的业务,不同的架构,他们在不同的维度聊“微服务”。 不过总的来说,大家都比较认同的是:“微服务”的核心是把一个大的系统拆解成一系列功能单一的小系统,每个系统可以单独进行部署。这样的好处是显而易见的: 由于单一职责,每个微服务的开发测试会更简单 开发语言和技术方案不受限制,可以发挥不同团队的特长 故障可以控制在单个系统之中 “服务化”使得复用更加便捷 如果要一一列举,还能列举很多很多的优点。总之,微服务看起来还是非常美好的。但是随着...阅读全文

博文 2018-11-03 01:34:46 suoga

Micro In Action(七):熔断与限流

[Micro In Action](https://s1.ax1x.com/2020/03/28/GkW63D.png) > 本文作者:Che Dan > > 原文链接:https://medium.com/@dche423/micro-in-action-7-cn-ce75d5847ef4 本文是[Micro](https://micro.mu/)系列文章的第七篇。前面文章覆盖了创建与调用服务的基本流程。 接下来我们将转到一些高级特性。 今天来谈谈**熔断与限流**。 熔断与限流一直大型系统架构的重要话题。 当我们开始把系统拆分成由很多微服务组成分布式系统时, 这些话题变得比以往更加重要。没有熔断与限流, 系统很容易因为单个组件的故障(这在分布式系统中不可避免)而形成“雪崩”效应, 进而导...阅读全文

博文 2020-03-28 15:32:39 polaris

微服务架构-雪崩效应

微服务化产品线,每一个服务专心于自己的业务逻辑,并对外提供相应的接口,看上去似乎很明了,其实还有很多的东西需要考虑,比如:服务的自动扩充,熔断和限流等,随着业务的扩展,服务的数量也会随之增多,逻辑会更加复杂,一个服务的某个逻辑需要依赖多个其他服务才能完成。一但一个依赖不能提供服务很可能会产生雪崩效应,最后导致整个服务不可访问。 微服务之间进行rpc或者http调用时,我们一般都会设置调用超时,失败重试等机制来确保服务的成功执行,看上去很美,如果不考虑服务的熔断和限流,就是雪崩的源头。 假设我们有两个访问量比较大的服务A和B,这两个服务分别依赖C和D,C和D服务都依赖E服务 A和B不断的调用C,D处理客户请求和返回需要的数据。当E服务不能供服务的时候,C和D的超时和重试机制会被执行 由于新的调...阅读全文

博文 2019-06-10 16:04:49 li_peng

使用Envoy 作Sidecar Proxy的微服务模式-1.熔断

本博客是深入研究Envoy Proxy和Istio.io 以及它如何实现更优雅的方式来连接和管理微服务系列文章的一部分。 这是接下来几个部分的想法(将在发布时更新链接): 断路器(第一部分) 重试/超时(第二部分) 分布式跟踪(第三部分) Prometheus的指标收集(第四部分) 服务发现(第五部分) 第一部分 - 使用envoy proxy 熔断 这篇第一篇博文向您介绍了Envoy Proxy实现的熔断功能。有意进行一些简单的演示,因此我可以单独说明模式和用法。请下载此演示的源代码并按照说明进行操作! 该演示由一个客户端和一个服务组成。客户端是一个Java http应用程序,模拟对“上游”服务进行http调用(注意,我们在这里使用Envoys术语,并贯穿整个repo)。客户端打包在doc...阅读全文

博文 2019-02-22 19:34:43 iyacontrol

阿里开源的高可用流控降级组件 Sentinel Go 0.3.0 版本发布,支持熔断降级能力

[Sentinel](https://github.com/alibaba/Sentinel) 是阿里巴巴开源的,面向分布式服务架构的流量控制组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统自适应保护等多个维度来帮助开发者保障微服务的稳定性。Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀、冷启动、消息削峰填谷、集群流量控制、实时熔断下游不可用服务等,是保障微服务高可用的利器,原生支持 Java/Go/C++ 等多种语言,并且提供 Istio/Envoy 全局流控支持来为 Service Mesh 提供高可用防护的能力。 近期,[Sentinel Go 0.3.0](https://github.com/alibaba/sentinel-gol...阅读全文

服务治理那些事-容错之断路器

微服务架构将某个单一的复杂系统拆分成多个可独立自治的服务,服务之间通过松耦合的方式进行交互,这为我们带来了许多好处,包括低耦合、可重用性、业务敏捷性和分布式部署能力、强扩展性。但于此同时,也给我们引进了新的挑战。​ 在微服务场景下,每个模块之间的互通都通过远程调用的方式来代替传统单体架构中的内存调用,在获得扩展性、重用性的同时,也使得整个体系结构因为网络的不稳定性、资源的过量使用变得更加脆弱。当一项或多项依赖服务持续不可用或出现高延迟时,将会导致整个服务级联失败。而且,服务客户端中的重试逻辑会使呈现高延迟的服务状况恶化,最终使整个系统陷入瘫痪。就像多米诺骨牌效应一样推倒整个系统。 duominuo.jpg 为了提高服务的可用性,避免级联影响,最经典的解决办法之一就是在服务之间的RPC边界引入...阅读全文

博文 2020-04-13 09:32:47 你比天气还晴朗

Go相关公众号文章每日推荐 【2020-05-26】

一、Go语言中文网 1. [这本《软技能》5.5折售卖,同时其他 Go 图书优惠中:400减230](https://mp.weixin.qq.com/s/vEK5vqEwvbuVpqXqMNlXjw) 2. [Go 编译器内核:给 Go 新增一个语句 —— 第一部分](https://mp.weixin.qq.com/s/D9C9niRMJleIyh-hUSAPiQ) 3. [Go语言函数深度解析(中)](https://mp.weixin.qq.com/s/pc3jS7APl3z3PtM0a08rzA) 4. [图解 new() 和 make的区别](https://mp.weixin.qq.com/s/ugVEcvRziB1V-JtU32_Pmg) 5. ...阅读全文