SOA化的一个side effect就是配置文件增多,原来同属于一个系统的配置项目现在需要各个service共享,copy-and-past 机制会带了很大程度上的维护上的困难。
要解决配置文件共享问题,可以采取以下两种方案:
1. 使用Maven的插件。
2. 使用公用配置服务器,例如Spring Cloud
如果使用Maven方式,可以参考 http://blog.sonatype.com/2008/04/how-to-share-resources-across-projects-in-maven/ ( Brian Fox) 这篇文章。其中介绍了Use Assembly and Dependency plugins。
另外Maven有专门的配置remote resource共享的插件,可以参考这个用例:(Apache) http://maven.apache.org/plugins/maven-remote-resources-plugin/usage.html。这个方式配置和迁移都比较简单,但是可能需要多建立几套Maven项目来细粒度的控制不同的配置文件。
对于Spring Cloud这种方式,利用了GIT作为存储配置文件的地方,使用单独的Config Server对外提供配置服务。配置和使用相当简单,支持profile分不同目录存储,支持公用配置共享。这样方式很容将配置文件集中管理,但是其中的问题也是很明显的,那就是对服务的稳定性和可靠性要求较高,如果Config Server出现问题,可能会导致系统无法启动。