欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java?Chassis3應用視角的配置管理技術解密

 更新時間:2024年01月17日 09:33:18   作者:liubao68  
這篇文章主要為大家介紹了Java?Chassis3應用視角的配置管理相關的機制和背后故事,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

Java Chassis 3技術解密:應用視角的配置管理

談論微服務配置管理的時候,最多的是以配置中心為視角,討論其配置管理能力。 和注冊中心一樣,不同的配置中心會有一些關鍵的設計指標。

  • 配置的格式和類型。支持不同格式和類型的配置項,比如YAML、文本、JSON、XML等。
  • 配置的邏輯層次。比如 Kie 提供了 Label 來表達配置的層次,可以簡化為應用配置、服務配置和自定義配置等;Nacos 使用 Namespace、Group等概念來表達配置的層次。
  • 變更通知機制。和注冊中心一樣,配置中心也有變更通知機制,兩者的機制相似。相較而言,配置中心對于變更感知周期的的要求更低。
  • 配置歷史和推送軌跡。通過配置歷史,能夠了解配置項的改動記錄,方便進行審計和回退,推送軌跡則幫助了解配置項被應用到了哪些微服務。

Java Chassis 3的設計目標之一,就是以應用的視角,支持不同的配置中心,并提供統(tǒng)一一致的使用方式。

Java Chassis 3核心概念

Java Chassis 3簡化了微服務定義,只包含如下核心概念:

  • 環(huán)境名稱:用于表示部署環(huán)境,不同環(huán)境的微服務之間不能進行服務發(fā)現(xiàn)。對于不同的注冊中心和配置中心,會以對應的概念表示環(huán)境。比如Nacos使用 namespace 來表示環(huán)境。
  • 應用名稱:用于描述一組可以相互訪問的微服務,不同應用名稱之間是邏輯隔離的,不能進行服務發(fā)現(xiàn)。對于不同的注冊中心和配置中心,會以對應的概念表示應用。比如Nacos使用 group 來表示應用。
  • 微服務名稱:用于標識一個微服務。可以通過微服務名稱查詢需要訪問的目標微服務。
  • 微服務版本:表示微服務的版本。當存在微服務屬性變化、接口變化的場景,建議修改版本號。
  • 微服務描述:簡單的微服務描述信息。
  • 微服務屬性:用于描述微服務的擴展信息。
servicecomb:
  service:
    application: hello-applicaton
    name: hello-service
    version: 0.0.1 
    properties: 
      key1: value1
      key2: value2
    description: This is a description about the microservice
    environment: production

配置層次的配置信息

當一個微服務接入配置中心以后,Java Chassis 3的配置管理模塊,會自動從配置中心獲取如下配置層次的配置信息:

  • 應用配置。
  • 服務配置。
  • 版本配置。
  • 自定義配置。

配置層次的配置信息

這些配置在不同配置中心的對應關系:

項目Nacos 配置中心Kie 配置中心備注
應用配置namespace=environment
group=application
dataId=application
environment=environment
app=application
服務配置namespace=environment
group=application
dataId=service
environment=environment
app=application
service=service
版本配置namespace=environment
group=application
dataId=service-version
environment=environment
app=application
service=service
version=version
自定義配置namespace=environment
group=group
dataId=dataId
customLabel=customLabelValue

以應用視角建立這種對應關系的好處,是用戶不需要自行規(guī)劃如何在配置中心存放數(shù)據(jù),可以直接將一個優(yōu)秀的管理實踐應用于業(yè)務場景。將用戶需要思考的問題,固定為幾個具體的問題:如何創(chuàng)建應用級別的配置?如何創(chuàng)建服務級別的配置?如何創(chuàng)建微服務自定義的配置?

開發(fā)者如何使用配置

應用視角的配置管理另外一個關鍵問題,是開發(fā)者如何使用配置。

  • Spring Boot使用配置

Spring Boot的開發(fā)者一般通過 @Value、@ConfigurationProperties 和 Environment 獲取配置。 它提供了 PropertySource 來擴展配置源。 Spring Boot并未針對配置變更提供額外的處理機制,無法很好的處理配置變更。 盡管當 PropertySource 的內容變化后,通過 Environment 可以獲取到最新的版本內容,但是 @Value、@ConfigurationProperties 定義的配置項則不會發(fā)生變化。

  • Spring Cloud使用配置

Spring Cloud在Spring Boot基礎之上,提供了動態(tài)配置的能力。 可以使用 @RefershScope 標簽聲明 Bean, 在配置變化后,Spring Cloud會銷毀老的 Bean, 并重建新的 Bean,新的 Bean會使用最新的配置值進行初始化。 Spring Cloud在處理配置變更的過程中,會對Bean的訪問加讀寫鎖。

  • Java Chassis 3使用配置

Java Chassis 3完全兼容 Spring Boot的配置使用方式。 并提供了更加友好的 API 監(jiān)聽配置變更和處理優(yōu)先級配置。 配置監(jiān)聽 API 主要用于高性能場景:配置變更后需要進行必要的業(yè)務邏輯初始化,初始化可以在配置變更線程中執(zhí)行,而不阻塞當前業(yè)務執(zhí)行。

@RestSchema(schemaId = "ProviderController")
@RequestMapping(path = "/")
public class ProviderController {
  private DynamicProperties dynamicProperties;

  private String example;

  @Autowired
  public ProviderController(DynamicProperties dynamicProperties) {
    this.dynamicProperties = dynamicProperties;
    this.example = this.dynamicProperties.getStringProperty("basic.example",
            value -> this.example = value, "not set");
  }
}

優(yōu)先級配置是Java Chassis3特有的管理配置優(yōu)先級方式。比如對于某個方法,會考慮是否有應用級別的全局配置、針對服務的配置和針對這個方法的配置,針對方法的配置優(yōu)先級最高。 這種配置方式被廣泛應用于Java Chassis 3的限流等服務治理場景中。 下面的代碼片段是Java Chassis的接口超時配置示例。

@InjectProperties(prefix = "servicecomb")
public class OperationConfig {
  public static final List<String> CONSUMER_OP_ANY_PRIORITY = Arrays.asList(
      "${service}.${schema}.${operation}",
      "${service}.${schema}",
      "${service}");
  
  /**
   * consumer request timeout
   */
  @InjectProperty(keys = {"request.${op-any-priority}.timeout", "request.timeout"}, defaultValue = "30000")
  private long msRequestTimeout;
}

相對于Spring Cloud,Java Chassis3的配置API,能夠更加方便的監(jiān)聽配置變化,并提供了更好的性能。

客戶故事:Spring Cloud配置變更會加鎖。在高并發(fā)場景,配置變更會阻塞所有請求的執(zhí)行。如果業(yè)務執(zhí)行(已經(jīng)獲取讀鎖)包含RPC等相對慢的邏輯,配置變更等待寫鎖以及其他執(zhí)業(yè)務線程等待讀鎖都會被阻塞,產(chǎn)生雪崩效應,觸發(fā)應用吞吐急劇下降。Java Chassis 3配置變更不阻塞業(yè)務處理,能夠有效的防止配置變更觸發(fā)雪崩效應,特別是在高并發(fā)、需要動態(tài)調整運行、治理規(guī)則的業(yè)務場景。

以上就是Java Chassis3應用視角的配置管理技術解密的詳細內容,更多關于Java Chassis3應用視角配置管理的資料請關注腳本之家其它相關文章!

相關文章

  • Java的運算符和程序邏輯控制你了解嗎

    Java的運算符和程序邏輯控制你了解嗎

    這篇文章主要為大家詳細介紹了Java的運算符和程序邏輯控制,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • 將本地的jar包打到Maven的倉庫中實例

    將本地的jar包打到Maven的倉庫中實例

    下面小編就為大家分享一篇將本地的jar包打到Maven的倉庫中實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • Spring(一):IOC如何推導和理解

    Spring(一):IOC如何推導和理解

    下面小編就為大家?guī)硪黄斦凷pring對IOC的理解(推薦篇)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2021-07-07
  • Java使用XML與注解方式實現(xiàn)CRUD操作代碼

    Java使用XML與注解方式實現(xiàn)CRUD操作代碼

    MyBatis提供了靈活的配置和使用方式,使得數(shù)據(jù)庫操作更加簡潔和高效,通過本文,我們介紹了如何使用MyBatis框架,通過XML映射文件和注解兩種方式來實現(xiàn)數(shù)據(jù)庫的增刪改查操作,感興趣的朋友跟隨小編一起看看吧
    2024-02-02
  • Java使用easyExcel導出excel數(shù)據(jù)案例

    Java使用easyExcel導出excel數(shù)據(jù)案例

    這篇文章主要介紹了Java使用easyExcel導出excel數(shù)據(jù)案例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • SpringBoot整合ES解析搜索返回字段問題

    SpringBoot整合ES解析搜索返回字段問題

    這篇文章主要介紹了SpringBoot整合ES解析搜索返回字段問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • Java如何實現(xiàn)定時任務

    Java如何實現(xiàn)定時任務

    這篇文章主要介紹了Java如何實現(xiàn)定時任務,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • Java中的Spring Security配置過濾器

    Java中的Spring Security配置過濾器

    這篇文章主要介紹了Java中的Spring Security配置過濾器,文章通過圍繞文章主題的相關資料展開詳細內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-05-05
  • Java基于MySQL實現(xiàn)學生管理系統(tǒng)

    Java基于MySQL實現(xiàn)學生管理系統(tǒng)

    這篇文章主要為大家詳細介紹了Java基于MySQL實現(xiàn)學生管理系統(tǒng),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Java中MD5的使用代碼示例

    Java中MD5的使用代碼示例

    這篇文章主要給大家介紹了關于Java中MD5的使用示例,MD5加密是一種常見的加密方式,我們經(jīng)常用在保存用戶密碼和關鍵信息上,需要的朋友可以參考下
    2023-08-08

最新評論