[b]问题描述[/b]
随着动态分割的架构思想提出,引出来两个问题:
1、 如何实现数据库的动态添加而不需要改变应用代码,进而提高系统的易维护性?
2、 如何实现多个数据库之间业务操作时的事务一致性问题?
[b]解决方案及数据流程
解决方案[/b]
1、 引入数据库池的概念,将多个分散的数据库实例引入数据库池;
2、 引入业务控制器的概念,定义不同的业务规则对应的的数据库实例标识;
3、 引入数据库控制的概念,将多个数据库池发布到该控制器范围内;
4、 在应用服务器、接口服务器与数据库池之间添加业务规则控制器、数据控制器;
[img]http://dl.iteye.com/upload/attachment/421893/9d3f3980-6e6d-3c70-80b2-e411d19f93f3.gif[/img]
[b]数据流程[/b]
1、 业务数据经视图层流入控制层,控制层通过业务规则控制器获取该业务数据对应的数据库标识;
2、 控制层将业务数据、数据库标识传递到业务层;
3、 业务层对业务数据进行分解、组装后形成可持久化的业务数据,并将业务数据传到数据层(数据库事务一致性问题统一在业务层控制);
4、 数据层根据业务层传入得数据库标识经数据控制器获得数据库实例,进行数据持久化操作;
[img]http://dl.iteye.com/upload/attachment/421895/0b9fcdb3-2205-38ed-ab3c-5ddfb19c6cc0.gif[/img]
[b]遗留问题[/b]
1、 数据库实例的添加需要重新启停应用服务器、接口服务器
2、 需要定义一系列详尽的业务规则控制,明确每个业务规则对应那些数据库实例
随着动态分割的架构思想提出,引出来两个问题:
1、 如何实现数据库的动态添加而不需要改变应用代码,进而提高系统的易维护性?
2、 如何实现多个数据库之间业务操作时的事务一致性问题?
[b]解决方案及数据流程
解决方案[/b]
1、 引入数据库池的概念,将多个分散的数据库实例引入数据库池;
2、 引入业务控制器的概念,定义不同的业务规则对应的的数据库实例标识;
3、 引入数据库控制的概念,将多个数据库池发布到该控制器范围内;
4、 在应用服务器、接口服务器与数据库池之间添加业务规则控制器、数据控制器;
[img]http://dl.iteye.com/upload/attachment/421893/9d3f3980-6e6d-3c70-80b2-e411d19f93f3.gif[/img]
[b]数据流程[/b]
1、 业务数据经视图层流入控制层,控制层通过业务规则控制器获取该业务数据对应的数据库标识;
2、 控制层将业务数据、数据库标识传递到业务层;
3、 业务层对业务数据进行分解、组装后形成可持久化的业务数据,并将业务数据传到数据层(数据库事务一致性问题统一在业务层控制);
4、 数据层根据业务层传入得数据库标识经数据控制器获得数据库实例,进行数据持久化操作;
[img]http://dl.iteye.com/upload/attachment/421895/0b9fcdb3-2205-38ed-ab3c-5ddfb19c6cc0.gif[/img]
[b]遗留问题[/b]
1、 数据库实例的添加需要重新启停应用服务器、接口服务器
2、 需要定义一系列详尽的业务规则控制,明确每个业务规则对应那些数据库实例