轻松构建微服务之服务治理

API网关

依据系统的运行情况,自动的进行流量调度,在无需人工干预的情况下,提升整个系统的稳定性,,让系统应对爆品等突发事件的时候,在依赖弹性计算进行扩容的时间窗口内避免底层资源被耗尽.

流量调度一般放在API网关里面做,所以API网关需要有以下特点,业务逻辑简单,能够支持在管理后台动态修改服务配置,性能要高可以抗住高流量.

所以服务治理最好也可以在api网关里做,服务熔断,以及负载均衡,流量控制等,当然API网关还应该把协议转换,请求安全校验的工作做掉.

[图片上传失败...(image-2394e1-1558423069941)]

上图为一个API网关架构图,一个总的gateway接入所有流量,然后分发给二级gateway,下面我们具体看下一个gateway应该做哪些事情

  • 请求路由 调用端不在需要知道服务的具体地址,只需要将请求发给网关,由网关层进行转发

  • 服务注册 由于服务调用统一交给网关进行转发,那么网关就需要知道所有服务提供方的实例地址,所有服务提供方,需要将信息注册给网关,或者网关从注册中心获取后进行缓存.

  • 负载均衡 网关层可以实现在多个服务实例之间进行负载均衡,例如round robin或者设置权重

  • 安全管理 用户的鉴权统一防治gateway做,以及对用户恶意攻击的防范.

  • 流量控制 在监控到某个服务可能过载后可以对该服务进行熔断设计,避免该服务拖垮其他服务,也包括一些重试,限流等

  • 灰度发布 由于网关层可以做服务的管理功能,那么就可以在网关层实现灰度发布,对不同版本的服务导入不同的流量

  • API聚合 可以在网关层将多个单一的微服务进行简单的聚合,将各个微服务的返回结果进行聚合,这样就可以避免用户端和服务端频繁的业务调用,如果有复杂的业务逻辑建议还是放在底层服务实现.

  • 应用监控 网关层由于是所有微服务调用链路的起点,可以展示分布式链路追踪的分析统计结果,提供每个服务的吞吐量,响应时间,返回码的性能统计报表

  • 弹力设计 网关层因为要接入大量流量,所以自身应该高可用,所以自身能够进行熔断和自动扩容等机制

降级

降级我们一般有以下方案

  • 停止次要服务 当系统监控到某个服务不可用,或者即将突破能够抗住的压力,可以将该服务停掉,不在请求该服务,或者直接返回一个通用的code

  • 降低一致性要求 当大量流量进入的时候,我们可以通过异步的方式处理请求,异步可能无法保证业务的强一致性,但是如果我们可以接受最终一致性可以采用这种方案,另外就是使用缓存,缓存可能和底层数据不一致,但是底层需要能够处理或规避这种风险

  • 简化功能 正常情况下一个页面可能需要返回大量的信息,那么在降级后可以只返回必要的信息,那么其他不必要信息对应的服务就可以不用调用了

熔断

当某个服务不可用后,而调用方的请求还在不停的重试,导致浪费CPU并且等待超时,降低系统的QPS,而熔断器模式可以检测到系统不可用后不在调用该服务,继续执行其他流程,熔断器需要能够记录服务单位时间或者最近服务调用失败的次数,并且可以支持配置当到达某一个量化的阈值后就进行熔断,同时支持当服务恢复后可以自动解除熔断限制.
目前Netfix的Hystrix已经停止维护,开源实现我们可以借鉴阿里的sentinel

限流

当某个服务在达到可以支持的请求阈值后,而服务调用方还在不停的发起,我们可以对该服务进行限流,例如拒绝新来的请求,或者返回一个通用的返回码,也可以对服务进行降级,减少返回的信息,只返回核心数据等.也有一些业务在监控到某些服务达到阈值后,将优先给有白名单的用户分配资源,而对其他的用户进行限流策略.或者延时处理.

限流目前有两种流行的算法

队列算法

按先进先出,将请求进行排队缓存,如果要支持VIP用户,也可以用优先级队列,这样白名单用户将会比普通用户早一点获取资源

漏桶算法

[图片上传失败...(image-f8e761-1558423069941)]

如图漏桶算法,将流入代表用户请求,而流出代表处理请求,漏桶需要设置一个桶的大小,就是容量,可以是一个队列,用来存放还没有处理的请求,而底下的桶洞控制请求处理的速度,当新的请求达到桶的容量后,就执行拒绝策略.所以在针对突发流量的情况下缺乏效率.

令牌桶算法

以一定的速率往桶里放入令牌,然后每个请求都需要从桶里拿出一个令牌,一个桶能保存的最大令牌数有限制,当请求速度太快就会导致桶里没有多余的令牌,那么就会将请求进行拒绝策略,如果请求太少就会导致桶里令牌装满溢出,所以令牌桶有一定的在突发流量情况下可以支持继续处理请求.

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,902评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,037评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,978评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,867评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,763评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,104评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,565评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,236评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,379评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,313评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,363评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,034评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,637评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,719评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,952评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,371评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,948评论 2 341

推荐阅读更多精彩内容