亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java Chassis3注冊(cè)中心分區(qū)隔離技術(shù)解密

 更新時(shí)間:2024年01月17日 09:14:35   作者:liubao68  
這篇文章主要為大家介紹了Java Chassis3注冊(cè)中心分區(qū)隔離技術(shù)解密,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

Java Chassis 3技術(shù)解密:注冊(cè)中心分區(qū)隔離

注冊(cè)中心負(fù)責(zé)實(shí)例的注冊(cè)和發(fā)現(xiàn),對(duì)微服務(wù)可靠運(yùn)行起到舉足輕重的作用。實(shí)例變更感知周期是注冊(cè)中心最重要的技術(shù)指標(biāo)之一。感知周期代表提供者的實(shí)例注冊(cè)或者下線后,消費(fèi)者感知實(shí)例注冊(cè)或者下線的周期。影響實(shí)例變更感知周期的技術(shù)因素有很多。

  • 數(shù)據(jù)一致性。一致性指實(shí)例在注冊(cè)中心的一個(gè)節(jié)點(diǎn)注冊(cè),從注冊(cè)中心的不同節(jié)點(diǎn)能否同時(shí)讀取到實(shí)例的注冊(cè)信息。這個(gè)技術(shù)因素對(duì)于實(shí)例變更感知周期有一定影響,比如最終一致性的感知速度會(huì)慢,強(qiáng)一致性的感知速度會(huì)快。但多數(shù)場(chǎng)景,這個(gè)技術(shù)指標(biāo)不是核心因素。
  • 變更通知機(jī)制。變更通知機(jī)制指消費(fèi)者獲取最新實(shí)例列表的方式,通常有幾種方式:定期Pull的方式,消費(fèi)者周期性的從注冊(cè)中心查詢實(shí)例列表;注冊(cè)中心Push的方式,注冊(cè)中心通過(guò)長(zhǎng)連接、WebSocket等協(xié)議,將實(shí)例變化通知消費(fèi)者。定期Pull的方式感知周期相對(duì)較長(zhǎng),工作機(jī)制比較可靠,容錯(cuò)效率高,對(duì)于網(wǎng)絡(luò)要求低,更加安全;注冊(cè)中心Push的方式感知周期很短,容易出現(xiàn)事件錯(cuò)亂或者堆積,對(duì)于網(wǎng)絡(luò)規(guī)劃有一定要求。
  • 注冊(cè)中心檢測(cè)實(shí)例狀態(tài)的方式。注冊(cè)中心檢測(cè)實(shí)例狀態(tài)的方式表示如何判斷實(shí)例的狀態(tài)是正常還是異常。比如Service Center需要實(shí)例定期的發(fā)送心跳,如果在3個(gè)心跳周期未檢測(cè)到心跳,那么認(rèn)為實(shí)例異常;比如Nacos則根據(jù)微服務(wù)實(shí)例與注冊(cè)中心的長(zhǎng)連接狀態(tài)判斷實(shí)例是否異常。

此外,實(shí)例管理規(guī)模、支持元數(shù)據(jù)管理等也是注冊(cè)注冊(cè)中心比較常見(jiàn)的功能特性。比如Java Chassis 2要求注冊(cè)中心必須支持契約的注冊(cè)和管理。

Java Chassis 3的設(shè)計(jì)目標(biāo)之一,就是降低對(duì)于注冊(cè)中心功能的依賴,能夠支持盡可能多的注冊(cè)中心,而不降低微服務(wù)自身的可靠性。 在描述 Java Chassis 3的實(shí)例管理機(jī)制之前,先討論一個(gè)典型的問(wèn)題:注冊(cè)中心分區(qū)隔離。

注冊(cè)中心分區(qū)隔離是指如下場(chǎng)景

微服務(wù)提供者與注冊(cè)中心之間的網(wǎng)絡(luò)發(fā)生故障,而服務(wù)消費(fèi)者與注冊(cè)中心之間的網(wǎng)絡(luò)是正常的,即產(chǎn)生分區(qū)隔離。在發(fā)生分區(qū)隔離的場(chǎng)景下,現(xiàn)有的?;顧C(jī)制都會(huì)認(rèn)為微服務(wù)提供者下線,進(jìn)而導(dǎo)致微服務(wù)消費(fèi)者訪問(wèn)微服務(wù)提供者出現(xiàn)大規(guī)模失敗。分區(qū)隔離通常會(huì)發(fā)生在注冊(cè)中心在多AZ部署/容災(zāi)的場(chǎng)景,微服務(wù)提供者和微服務(wù)消費(fèi)者連接的是不同AZ的注冊(cè)中心實(shí)例。在微服務(wù)提供者和消費(fèi)者跨AZ部署的時(shí)候,也可能發(fā)生。

注冊(cè)中心分區(qū)隔離故障會(huì)造成大面積的應(yīng)用調(diào)用失敗,是注冊(cè)中心有關(guān)故障中,最嚴(yán)重的故障之一。

注冊(cè)中心有關(guān)故障解決方案

Ribbon的解決方案

Ribbon在客戶端提供了 IPing 接口來(lái)檢測(cè)實(shí)例故障,以檢測(cè)注冊(cè)中心錯(cuò)誤下線實(shí)例,而實(shí)例實(shí)際可以工作的場(chǎng)景。 該機(jī)制在多數(shù)場(chǎng)景工作良好,然而在容器場(chǎng)景下,可能長(zhǎng)期保留錯(cuò)誤的實(shí)例。因?yàn)槲⒎?wù)提供者不是由于分區(qū)隔離錯(cuò)誤,而是重啟的場(chǎng)景下,如果原來(lái)的端口被其他服務(wù)占用,則會(huì)導(dǎo)致微服務(wù)消費(fèi)者始終保留錯(cuò)誤的實(shí)例。

public interface IPing {
    boolean isAlive(Server server);
}

Spring Cloud的解決方案

Spring Cloud的機(jī)制和Ribbon類(lèi)似,提供了 HealthCheckServiceInstanceListSupplier ,并允許開(kāi)發(fā)者定義實(shí)例監(jiān)控狀態(tài)檢測(cè)方式。

Java Chassis的解決方案

Java Chassis結(jié)合實(shí)例是否在注冊(cè)中心查詢到(History)、實(shí)例狀態(tài)(Status)、Ping狀態(tài)(Ping)、隔離狀態(tài)(Isolation)將實(shí)例分組,并給不同的組分配不同的優(yōu)先級(jí)。

在 Java Chassis 3技術(shù)解密:負(fù)載均衡選擇器 中,解密了Java Chassis分組實(shí)例使用的機(jī)制。當(dāng)出現(xiàn)注冊(cè)中心分區(qū)隔離的情況,實(shí)例在注冊(cè)中心查詢不到,仍然被保留到了 History 分組,只要實(shí)例 Ping 狀態(tài)正常, 這個(gè)實(shí)例仍然會(huì)被使用, 從而防止了實(shí)例被錯(cuò)誤下線。

Java Chassis還設(shè)計(jì)了新的Ping機(jī)制,解決容器場(chǎng)景下,可能長(zhǎng)期保留錯(cuò)誤的實(shí)例的問(wèn)題。 Ping機(jī)制的核心邏輯包含如下幾個(gè)部分:

  • 微服務(wù)提供者向注冊(cè)中心注冊(cè)的時(shí)候,生成實(shí)例ID。實(shí)例ID需要保證進(jìn)程的每次重啟,都是唯一的。
  • 微服務(wù)消費(fèi)者通過(guò)PING消息檢測(cè)微服務(wù)提供者的存活狀態(tài)。PING消息包含微服務(wù)提供者的實(shí)例ID。
  • 微服務(wù)提供者檢測(cè)PING消息里面的實(shí)例ID,如果實(shí)例ID與自己的實(shí)例ID相同,則返回健康,否則返回異常。

Java Chassis提供了新的健康檢查接口

@RestSchema(schemaId = ManagementEndpoint.NAME, schemaInterface = ManagementEndpoint.class)
public class ManagementEndpointImpl implements ManagementEndpoint {
  private RegistrationManager registrationManager;
  @Autowired
  public void setRegistrationManager(RegistrationManager registrationManager) {
    this.registrationManager = registrationManager;
  }
  @Override
  public boolean health(String instanceId, String registryName) {
    String mySelf = registrationManager.getInstanceId(registryName);
    if (StringUtils.isEmpty(mySelf)) {
      return false;
    }
    return mySelf.equals(instanceId);
  }
}

Java Chassis 2結(jié)合Service Center的功能設(shè)計(jì),共同保障了注冊(cè)發(fā)現(xiàn)的可靠性。Java Chassis 3通過(guò)應(yīng)用客戶端技術(shù),降低了對(duì)于注冊(cè)中心的依賴,使得 Java Chassis 3使用不同的注冊(cè)中心都能夠取得很高的可靠性。 內(nèi)置的實(shí)例狀態(tài)分組管理和創(chuàng)新的Ping機(jī)制設(shè)計(jì),使得 Java Chassis 3在注冊(cè)中心分區(qū)隔離故障條件下也能穩(wěn)定的工作。

客戶故事:注冊(cè)中心推空故障是 Nacos 的經(jīng)典故障,對(duì)于系統(tǒng)可靠性運(yùn)行產(chǎn)生了非常大的影響。推空故障的影響機(jī)制和分區(qū)隔離故障的影響機(jī)制類(lèi)似。借助于Java Chassis 3,能夠?qū)I(yè)務(wù)影響的時(shí)間和范圍降到最低。

以上就是Java Chassis3注冊(cè)中心分區(qū)隔離技術(shù)解密的詳細(xì)內(nèi)容,更多關(guān)于Java Chassis3注冊(cè)中心分區(qū)隔離的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 使用Spring Security和JWT實(shí)現(xiàn)安全認(rèn)證機(jī)制

    使用Spring Security和JWT實(shí)現(xiàn)安全認(rèn)證機(jī)制

    在現(xiàn)代 Web 應(yīng)用中,安全認(rèn)證和授權(quán)是保障數(shù)據(jù)安全和用戶隱私的核心機(jī)制,Spring Security 是 Spring 框架下專為安全設(shè)計(jì)的模塊,具有高度的可配置性和擴(kuò)展性,而 JWT則是當(dāng)前流行的認(rèn)證解決方案,所以本文介紹了如何使用Spring Security和JWT實(shí)現(xiàn)安全認(rèn)證機(jī)制
    2024-11-11
  • SpringBoot POST請(qǐng)求接收多個(gè)參數(shù)值為null問(wèn)題

    SpringBoot POST請(qǐng)求接收多個(gè)參數(shù)值為null問(wèn)題

    SpringBoot接口中POST請(qǐng)求接收J(rèn)SON數(shù)據(jù)時(shí),使用簡(jiǎn)單類(lèi)型接收會(huì)報(bào)null,需要封裝成實(shí)體類(lèi)或使用Map(并注明泛型)接收,并且使用@RequestBody注解
    2025-02-02
  • 淺談SpringMVC的攔截器(Interceptor)和Servlet 的過(guò)濾器(Filter)的區(qū)別與聯(lián)系 及SpringMVC 的配置文件

    淺談SpringMVC的攔截器(Interceptor)和Servlet 的過(guò)濾器(Filter)的區(qū)別與聯(lián)系 及Spr

    這篇文章主要介紹了淺談SpringMVC的攔截器(Interceptor)和Servlet 的過(guò)濾器(Filter)的區(qū)別與聯(lián)系 及SpringMVC 的配置文件,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • java之StringBuffer常見(jiàn)使用方法解析

    java之StringBuffer常見(jiàn)使用方法解析

    這篇文章主要介紹了java之StringBuffer常見(jiàn)使用方法解析,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • 一文詳解如何通過(guò)Java實(shí)現(xiàn)SSL交互功能

    一文詳解如何通過(guò)Java實(shí)現(xiàn)SSL交互功能

    這篇文章主要為大家詳細(xì)介紹了如何通過(guò)Java實(shí)現(xiàn)SSL交互功能,文中的示例代碼講解詳細(xì),對(duì)我們的學(xué)習(xí)或工作有一定的幫助,需要的可以參考一下
    2023-04-04
  • Java Assert.assertEquals案例詳解

    Java Assert.assertEquals案例詳解

    這篇文章主要介紹了Java Assert.assertEquals案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • 全面分析Java方法的使用與遞歸

    全面分析Java方法的使用與遞歸

    在java中,方法就是用來(lái)完成解決某件事情或?qū)崿F(xiàn)某個(gè)功能的辦法;程序調(diào)用自身的編程技巧稱為遞歸( recursion)。遞歸做為一種算法在程序設(shè)計(jì)語(yǔ)言中廣泛應(yīng)用。但是如果沒(méi)終止條件會(huì)造成死循環(huán),所以遞歸代碼里要有結(jié)束自調(diào)自的條件,本篇接下來(lái)講解一下方法與遞歸
    2022-04-04
  • Java Fluent Mybatis 項(xiàng)目工程化與常規(guī)操作詳解流程篇 下

    Java Fluent Mybatis 項(xiàng)目工程化與常規(guī)操作詳解流程篇 下

    Java中常用的ORM框架主要是mybatis, hibernate, JPA等框架。國(guó)內(nèi)又以Mybatis用的多,基于mybatis上的增強(qiáng)框架,又有mybatis plus和TK mybatis等。今天我們介紹一個(gè)新的mybatis增強(qiáng)框架 fluent mybatis關(guān)于項(xiàng)目工程化與常規(guī)操作流程
    2021-10-10
  • Java基于JNDI 實(shí)現(xiàn)讀寫(xiě)分離的示例代碼

    Java基于JNDI 實(shí)現(xiàn)讀寫(xiě)分離的示例代碼

    本文主要介紹了Java基于JNDI 實(shí)現(xiàn)讀寫(xiě)分離的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • Java開(kāi)發(fā)完整短信驗(yàn)證碼功能的全過(guò)程

    Java開(kāi)發(fā)完整短信驗(yàn)證碼功能的全過(guò)程

    利用短信驗(yàn)證碼進(jìn)行身份驗(yàn)證是目前互聯(lián)網(wǎng)眾多產(chǎn)品常用的一種方式,那么這種短信驗(yàn)證功能是如何實(shí)現(xiàn)的呢,下面這篇文章主要給大家介紹了關(guān)于Java開(kāi)發(fā)完整短信驗(yàn)證碼功能的相關(guān)資料,需要的朋友可以參考下
    2021-10-10

最新評(píng)論