聊聊eureka instance的overriddenstatus

本文主要研究一下eureka instance的overriddenstatus

overriddenstatus

eureka-client-1.8.8-sources.jar!/com/netflix/appinfo/InstanceInfo.java

        /**
         * Sets the status overridden by some other external process.This is
         * mostly used in putting an instance out of service to block traffic to
         * it.
         *
         * @param status the overridden {@link InstanceStatus} of the instance.
         * @return @return the {@link InstanceInfo} builder.
         */
        public Builder setOverriddenStatus(InstanceStatus status) {
            result.overriddenstatus = status;
            return this;
        }

通過注釋可以看到,這個overriddenstatus的意思就是用于外部的一些操作,在netflix里頭就是用于red/black部署的時候,先把指定服務(wù)設(shè)置為OUT_OF_SERVICE來故意關(guān)閉請求流量。

1_r6qGvK49cv_9A8b4OCAZZw.png

InstanceStatus枚舉定義如下:

    public enum InstanceStatus {
        UP, // Ready to receive traffic
        DOWN, // Do not send traffic- healthcheck callback failed
        STARTING, // Just about starting- initializations to be done - do not
        // send traffic
        OUT_OF_SERVICE, // Intentionally shutdown for traffic
        UNKNOWN;

        public static InstanceStatus toEnum(String s) {
            if (s != null) {
                try {
                    return InstanceStatus.valueOf(s.toUpperCase());
                } catch (IllegalArgumentException e) {
                    // ignore and fall through to unknown
                    logger.debug("illegal argument supplied to InstanceStatus.valueOf: {}, defaulting to {}", s, UNKNOWN);
                }
            }
            return UNKNOWN;
        }
    }

操作

設(shè)置OUT_OF_SERVICE

curl -i -X PUT http://localhost:8761/eureka/apps/client1/127.0.0.1:client1:8081/status?value=OUT_OF_SERVICE
HTTP/1.1 200
Content-Type: application/xml
Content-Length: 0
Date: Wed, 16 May 2018 06:52:29 GMT

刪除OUT_OF_SERVICE

curl -i -X DELETE http://localhost:8761/eureka/apps/client1/127.0.0.1:client1:8081/status
HTTP/1.1 200
Content-Type: application/xml
Content-Length: 0
Date: Wed, 16 May 2018 06:54:30 GM

小結(jié)

eureka instance的overriddenstatus對于部署來說非常好用,比如red/black升級,將部分原服務(wù)先設(shè)置為OUT_OF_SERVICE,停止接收請求,即變?yōu)閎lack,之后新部署的服務(wù)啟動起來,即為red。如果新服務(wù)正常,就可以關(guān)閉舊服務(wù)了,假設(shè)新服務(wù)出現(xiàn)問題,則立馬刪除掉新服務(wù),將原有服務(wù)的overriddenstatus刪除掉,恢復(fù)UP,恢復(fù)接收流量。

doc

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,659評論 19 139
  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi閱讀 7,870評論 0 10
  • **2014真題Directions:Read the following text. Choose the be...
    又是夜半驚坐起閱讀 11,174評論 0 23
  • Eric紀(jì)閱讀 207評論 0 0
  • 1.一位旅行者走在拉薩的市中心,看著宏偉的布達(dá)拉宮,走在以前他坐在電腦前查詢西藏自治區(qū)旅游網(wǎng)站熟悉而陌生的街道上...
    昂貴的青春閱讀 435評論 0 0

友情鏈接更多精彩內(nèi)容