`
m635674608
  • 浏览: 5031170 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Netflix开源类库archaius(一)概述

 
阅读更多

archaius是什么,能做什么?

archaius是Netflix公司开源项目之一,基于java的配置管理类库,主要用于多配置存储的动态获取。主要功能是对apache common configuration类库的扩展。在云平台开发中可以将其用作分布式配置管理依赖构件。同时,它有如下一些特性:

  • 动态类型化属性
  • 高效和线程安全的配置操作
  • 配置改变时的回调机制
  • jmx
  • 组合配置(核心内容)

At the heart of Archaius is the concept of a Composite Configuration which can hold one or more Configurations. Each Configuration can be sourced from a Configuration Source such as: JDBC, REST, .properties file etc. Configuration Sources can optionally be polled at runtime for changes (In the above diagram, the Persisted DB Configuration Source; an RDBMS containing properties in a table, is polled every so often for changes).

The final value of a property is determined based on the top most Configuration that contains that property. i.e. If a property is present in multiple configurations, the actual value seen by the application will be the value that is present in the topmost slot in the hierarchy of Configurations. The hierarchy can be configured.

动态属性(Dynamic properties)

String prop = System.getProperty("myProperty");
int x = DEFAULT_VALUE;
try {
     x = Integer.parseInt(prop);
} catch (NumberFormatException e) {
    // handle format issues
}
myMethod(x);
// ...

更简洁的方式

DynamicIntProperty prop = 
    DynamicPropertyFactory.getInstance().getIntProperty("myProperty", DEFAULT_VALUE);
// prop.get() may change value at runtime
myMethod(prop.get());

同时,我们可以加入事件回调

prop.addCallback(new Runnable() {
    public void run() {
        // ...
    }
});

动态属性如何实现动态,轮询框架

使用属性来源和定时器进行轮询

PolledConfigurationSource source = createMyOwnSource();
AbstractPollingScheduler scheduler = createMyOwnScheduler();
ConfigurationManager.install(new DynamicConfiguration(source, scheduler));

目前框架核心默认实现了两种来源,JDBCConfigurationSource、URLConfigurationSource

发布上下文(Deployment context)

比如应用程序需要读取一个数据库配置文件database-*.properties,但是*可能是prod和test,我们要从中选一个,这时需要咨询发布上下文,我们可以调用发布上下文的一个方法DeploymentContext.getDeploymentEnvironment(),然后我们就可以取得实际的数据库配置文件database-${environment}.properties

Deployment context properties can be used in many ways. Archaius uses deployment context to load cascaded configuration files. Here is the use case:

Application defines a set of default properties 
At runtime, those properties should be overridden by deployment context specific values. 
For example, an application has a configuration file database.properties, which contains default set of database properties. It has two other properties file

database-prod.properties, which contains overridden values for “prod” environment 
database-test.properties, which contains overridden values for “test” environment 
To load any one of the above file, the ConfigurationManager will consult with DeploymentContext object set with it to determine what environment it is in (through DeploymentContext.getDeploymentEnvironment() method), and load additional database-${environment} file to override the default values.

高效和线程安全的配置

框架提供了高效和线程安全的config(apache common configuration),比如:ConcurrentMapConfiguration、ConcurrentCompositeConfiguration,支持高并发和组合配置

参考文献

https://github.com/Netflix/archaius

https://github.com/Netflix/archaius/wiki

http://www.tuicool.com/articles/uQRn6f

http://commons.apache.org/proper/commons-configuration/

http://commons.apache.org/proper/commons-configuration/userguide_v1.10/user_guide.html

 

http://blog.csdn.net/zhangfb95/article/details/48297907

分享到:
评论

相关推荐

    spring-cloud-netflix-archaius-2.1.0.RELEASE.jar

    spring-cloud-netflix-archaius-2.1.0.RELEASE

    spring-cloud-netflix-archaius-2.2.2.RELEASE.jar

    spring-cloud-netflix-archaius-2.2.2.RELEASE

    spring-cloud-starter-netflix-archaius-1.4.5.RELEASE.jar

    spring-cloud-starter-netflix-archaius-1.4.5.RELEASE.jar

    spring-cloud-starter-netflix-archaius-2.1.0.RELEASE.jar

    spring-cloud-starter-netflix-archaius-2.1.0.RELEASE

    spring-cloud-starter-netflix-archaius-2.2.2.RELEASE.jar

    spring-cloud-starter-netflix-archaius-2.2.2.RELEASE

    Python-Netflix开源面向稀疏数据优化的轻量神经网络库Vectorflow

    **Python-Netflix开源面向稀疏数据优化的轻量神经网络库Vectorflow** 在现代大数据时代,尤其是推荐系统、社交网络分析以及大规模机器学习任务中,稀疏数据是常见且重要的数据类型。Netflix作为全球领先的流媒体...

    王晓中:Netflix云架构

    他在Netflix担任客户端架构师,负责云计算平台的开发,并且是开源软件Archaius的创始人之一及主要贡献者。Archaius是一个用于管理Java应用程序中动态属性的库,它提供了一种运行时配置解决方案,能够帮助应用更好地...

    netflix.rar

    6. **Netflix Commons**:这是一系列通用工具和库的集合,为Netflix的其他开源项目提供基础支持,包括数据类型、日志记录、异常处理等,也可以在非Netflix项目中复用。 这些组件一起构成了Spring Cloud Netflix的...

    login-netflix:登录主题灵感来自Netflix的布局| tela de login inspirada没有布局和Netflix

    这个项目是基于Netflix登录页面设计的一个登录主题,它借鉴了Netflix的界面布局和设计风格,旨在提供一种现代化、吸引用户并具有高用户体验的登录体验。Netflix作为一个全球知名的流媒体服务提供商,其用户界面设计...

    开源项目-netflix-chaosmonkey.zip

    2. Netflix Simian Army:Chaos Monkey是Netflix的Simian Army项目的一部分,这个项目还包括其他工具,如Chaos Gorilla(针对整个可用区的故障模拟)、Chaos Kong(针对AWS基础设施的大规模故障模拟)等,它们共同...

    开源项目-Netflix-Skunkworks-go-jira.zip

    开源项目-Netflix-Skunkworks-go-jira.zip,GitHub - Netflix-Skunkworks/go-jira: simple jira command line client in Go

    netflix-commons-util-0.1.1.zip

    标题中的"Netflix Commons Util 0.1.1"是一个开源项目的版本标识,它指的是Netflix公司开发的一个公用工具库。Netflix Commons是Netflix公司贡献的一系列Java库,旨在提供一系列通用的工具类和实用程序,帮助开发者...

    走在前沿 我们与容器的亲密接触-Netflix徐振中

    ### 走在前沿:我们与容器的亲密接触——Netflix徐振中的...总之,通过上述技术和方法的综合运用,Netflix成功构建了一个高度可靠、可扩展且敏捷的服务平台,不仅极大地提升了用户体验,也为整个行业树立了新的标杆。

    开源项目-Netflix-rend.zip

    【标题】"Netflix-rend" 是一个开源项目,它的核心是一个用Go语言编写的memcached代理服务。这个项目由Netflix公司开发并公开发布,旨在提供一个高性能、可扩展的解决方案,用于管理和优化分布式缓存系统。 【描述...

    netflix 推荐系统设计

    Apache Mahout是一个开源的机器学习算法库,它提供了可扩展的机器学习算法,特别是用于推荐系统的算法。Mahout中的算法可以分为三大类:基于内容的推荐算法、协同过滤算法以及分类算法。Netflix通过Mahout,可以更...

    Netflix Business Model.pdf

    2013年,Netflix开始进入电影和电视行业,推出了其第一部原创系列《纸牌屋》。2016年,公司预计会发布大约126部原创剧集或电影。Netflix的月度订阅服务分为三种类型:基础、标准和高级,价格区间为8美元到12美元。...

    Guava_for_Netflix

    Google Guava 是由 Google 开发的一套开源的 Java 库,它提供了一种优雅的方式来解决 Java 标准库中未被涵盖的问题。Guava 库广泛应用于 Netflix 等公司的项目中,它包含许多实用的功能,这些功能被精心设计以与 ...

    netflix-prize-svd

    Netflix Prize,是2006年由Netflix公司发起的一项数据挖掘竞赛,其目标是通过改进电影推荐算法,提高用户评分预测的准确性,以此提升Netflix的用户体验。这次竞赛吸引了全球各地的数据科学家和机器学习专家参与,...

    netflix_titles.csv

    TV Shows and Movies listed on Netflix This dataset consists of tv shows and movies available on Netflix as of 2019. The dataset is collected from Flixable which is a third-party Netflix search engine....

Global site tag (gtag.js) - Google Analytics