zoukankan      html  css  js  c++  java
  • RPC的优雅关闭(笔记四)

    一、实现“优雅关闭”的原因

    在服务重启的时候,对于服务调用方来说,存在以下两种情况:

    1、服务调用方发送请求,目标服务已经下线,对于服务调用方来说,与目标节点的连接就会断开,此时服务调用方能够立马感知,并且在他的健康列表中会把这个节点给删除,因此该节点也不会被负载均衡选中。

    2、服务调用方发送请求,目标服务正在关闭中,对于服务调用方来说,并不知道该节点正在关闭,两者的连接也没有断开,该节点还是存在服务调用方的健康列表中,因此该节点存在一定的概率被负载均衡选中从而调用,继而出错。

    二、实现“优雅关闭”的方法

    1、解决方案

    服务提供方已经进入关闭流程,那么很多对象已经被销毁了,所以在关闭的时候,可以设置一个请求“挡板”,挡板的作用就是告诉服务调用方,服务提供方已经开始进入关闭流程了,不能再处理其他请求了。

    2、实现流程

    当服务提供方正在关闭的时候,如果之后还接受到新的业务请求,服务提供方直接返回一个特定的异常给服务调用方,该异常就是告诉服务调用方“我正在关闭,不能处理这个请求”,服务调用方接收到这个异常后,RPC框架就把这个节点从健康列表中挪出,并把该请求安全的重试到其他节点,从而实现对业务的无损处理。

    3、流程示意图

  • 相关阅读:
    缩略图生成算法
    页面间传值方法
    net开源cms系统
    海量图片的分布式存储及负载均衡研究(浅析)
    c# 序列化
    net 3.5平台上的Socket开发
    详细讲解jquery带进度上传插件Uploadify(ASP.NET版本)使用
    Linux命令小记
    Trunc(dtpPurDate.DateTime)可以将时间取到天。
    CentOS VNC配置(转)
  • 原文地址:https://www.cnblogs.com/libinhyq/p/15143943.html
Copyright © 2011-2022 走看看