青岛专业网站营销,wordpress能上传软件吗,怎样做网站分析,php做的网站建设源宝导读#xff1a;随着ERP系统的日益复杂#xff0c;应用部署的方式越来越复杂#xff0c;应用的配置也变得越来越庞杂#xff0c;难以维护和管理。本文将介绍配置中心服务通过集中化、可离线的架构设计#xff0c;解决ERP配置问题的实践经验。一、背景随着ERP业务的日益… 源宝导读随着ERP系统的日益复杂应用部署的方式越来越复杂应用的配置也变得越来越庞杂难以维护和管理。本文将介绍配置中心服务通过集中化、可离线的架构设计解决ERP配置问题的实践经验。一、背景 随着ERP业务的日益复杂程序配置越来越多应用部署的方式越来越复杂对程序配置管理的要求越来越高配置集中管理一处修改全局生效避免应用集群中配置不一致的问题。不同的应用环境生产、测试需要不同的配置。部分配置修改后需要立即生效。复杂的配置难以理解容易出错需要有友好的交互界面来提供辅助。 在这样的复杂环境下传统的通过配置文件的方式已无法满足要求我们开始设计配置管理中心统一接管ERP的应用配置。二、基础模型配置中心被设计为一个独立的Windows服务以HTTP方式对外提供服务。如上图所示在ERP安装部署时向配置中心写入安装过程产生的初始配置。安装部署完成之后如果环境还有调整就需要进入配置管理界面修订配置。配置修订完成后会产生配置变更通知。订阅了配置变更事件的客户端就会收到配置变更通知重新读取就能获取到最新配置。三、配置项的设计 不同ERP版本的配置项存在差异而配置中心不仅需要适配最新版本的ERP还需要兼容历史版本。为了解决这个问题配置中心为每个大版本ERP提供独立的配置定义文件文件采用XML格式。示例系统设置-多时区的配置optionsgroup title系统设置option title启用多时区 nameTimezone-enable typestring uiradio description启用多时区后数据中日期字段将会以“标准时区”存储 defaultvalue0item text启用 value1 /item text禁用 value0 //optionoption title存储时区 nameTimezone-store typestring uiradio description系统标准时区默认为当前站点服务器对应时区如选择此配置需要保证海外、国内服务器时区设置一致。 defaultvalue0item text服务器时区 value0 /item text协调世界时UTC value1 //option/group
/options
group配置分组便于从逻辑视角对配置项进行分组管理option代表一个具体的配置定义根据其中的ui字段产生相应的UI。四、配置客户端设计上图简要描述了配置中心客户端的实现原理客户端和服务端保持了一个轮询15s一次从而能较快的获得配置更新的推送客户端从配置中心服务端获取到应用的最新配置后会保存在内存中客户端会把从服务端获取到的配置在本地文件系统缓存一份。在遇到服务不可用或网络不通的时候依然能从本地恢复配置应用程序可以从客户端获取最新的配置、订阅配置更新通知。可用性考虑 配置中心作为基础服务可用性要求非常高下面的表格描述了不同场景下配置中心的可用性五、兼容性设计 兼容性设计的目标任意配置中心服务端兼容所有版本的配置中心客户端。任意配置中心客户端兼容所有版本的配置中心服务端。 服务端兼容主要是服务API的兼容只要API接口不发生变化旧版本的客户端就能正常调用。 我们制定了相关的规范接口一旦确定就不能调整接口签名。唯一例外情况是增加参数由于WebApi的性质不存在的参数会以默认值填充。在增加新特性时不能修改原有接口的行为如果原有接口无法满足就增加新的接口如果数据结构发生变化原有接口无法完全支持时需要在原接口的实现中做兼容处理牺牲掉一部分新特性。例如在2.0版本支持应用分库特性后允许为不同的应用配置不同的数据库于是数据库的配置变成了多值。原有的接口需要调整为如果数据库配置是多值就返回第一个值。这样处理后历史版本的应用也可以使用到最新版本的配置中心但是不能用到新特性。 为了保证新版本的客户端可以正常使用旧版本的服务端还需要做客户端的兼容处理。 这里定义一个配置读取接口IConfigReaderinternal interface IConfigReader { // 接口方法略 }特性上有较大变化时就重新写一个接口实现版本。到目前为止一共有3个版本的接口实现。 当应用需要读取配置时首先确认服务端的版本然后创建一个相应接口的实现版本。public static IConfigReader Get(string serviceUri, string env, string siteGroupKey, string appId,
Version serviceVersion)
{if (serviceVersion new Version(2, 1, 0, 17)){// 支持合并接口读取和变更时间戳return new ConfigClientV3(serviceUri, env, siteGroupKey, appId);}else if (serviceVersion new Version(2, 1)){// 支持分离部署return new ConfigClientV2(serviceUri, env, siteGroupKey, appId);}else{// 兼容版本1.xreturn new ConfigClientV1(serviceUri, env, siteGroupKey, appId);}
}
我们来看看不同场景下的兼容性是如何保证的5、总结 目前的配置中心服务架构有两个特点灵活可扩展的配置项设计很好的满足了多环境多版本系统不同的配置要求可离线的配置同步架构既满足了配置集中统一管理的需求又保证不会因为配置中心单点故障导致ERP整体宕机。 随着ERP的应用越来越多应用间的关系越来越复杂ERP部署的模式越来越丰富配置中心的功能也演变的更加复杂只有通过架构的不断优化演进配置中心才能更稳定高效的支撑ERP系统的运行。------ END ------作者简介王同学 研发工程师目前负责ERP运行平台的设计与开发工作。也许您还想看链路追踪在ERP系统中的应用实践从案例角度解析建模平台动态规则引擎如何解决大批量数据保存的性能问题研发协同平台持续交付2.0架构演进