WEB开发网
开发学院WEB开发ASP.NET Rails系统重构:从单一复杂系统到多个小应用集群 阅读

Rails系统重构:从单一复杂系统到多个小应用集群

 2010-10-09 08:15:34 来源:WEB开发网   
核心提示: 通过acts_as_readonly这个方法,可以让purchase的类CoursePackage从course数据库中读取数据,Rails系统重构:从单一复杂系统到多个小应用集群(5),需要注意的是,为了保证数据维护的一致性,这样就把应用之间的交互由网状结构变成以core为中心的星型结构,降低

通过acts_as_readonly这个方法,可以让purchase的类CoursePackage从course数据库中读取数据。需要注意的是,为了保证数据维护的一致性,CoursePackage的数据库连接是只读的,这样可以避免数据在多个应用中被修改。

acts_as_readonly的核心实现如下(限于篇幅,设置连接为只读等代码并未列出):

def acts_as_readonly(app_name, options = {}) 
 config = CoreService.app(app_name).database 
 establish_connection(config[Rails.env]) 
 set_table_name(self.connection.current_database + "." + table_name) 
end 

app_name是每个应用在集群中的唯一标识。purchase通过CoreService来获取course的数据库配置并设置连接。那么,CoreService向什么地方发送请求,又是如何知道course的配置信息呢?

在应用集群中,为了降低应用间的耦合性,我们采用集中式的配置管理。选择某一个应用作为core,其他应用在server启动时将自己的配置信息发送到core集中存储。例如我们在示例程序中选择user做为core应用,purchase需要查询course的配置时,就通过 CoreService向user发送请求,user根据名称查询出course包括数据库在内的所有配置信息,并返回给purchase。交互过程如下图所示:

Rails系统重构:从单一复杂系统到多个小应用集群

查看原图(大图)

采用集中式的配置管理后,应用之间的调用都通过core来进行,这样就把应用之间的交互由网状结构变成以core为中心的星型结构,降低了系统配置管理的复杂度。

应用程序的配置信息保存在config/app_config.yml中,示例如下:

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:Rails 重构

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接