配置文件位于项目的config文件夹下,本文对监控平台console的配置文件做一些讲解说明。
配置文件相关目录
配置文件在项目中的位置分布如下:
本文主要对database.xml 、 dbroute.properties 、 serviceconfig.xml 、 centerservice.xml 、 relax.xml这几个文件进行说明。
database.xml
用于连接数据库的配置文件,例1:
|
|
配置文件说明:connector连接的RefineConnectionManager用于数据库精细化的配置,很多时候我们连接的数据库有很多,这时候我们就需要把这么多的数据库信息放到一些数据库表中,而不是在此配置文件里配置数据库。把数据库的相关连接信息放在数据库表中有利于集中管理。需要注意的是:如果connector连接了RefineConnectionManager,那么需要规定数据库名为base,RefineConnectionManager类规定的。数据库名base还有一个作用,DAO类如果定义了数据库名base,那么该类的sql语句就会在base数据库中起作用。
当然,我们也可以不用配置connector,例2:
|
|
是用于配置较少数据库的情况。
dbroute.properties
此文件用于group连接到指定的数据库,例如:
|
|
serviceconfig.xml
该文件位于config/service下,需要加载进serviceconfig.xml,该文件用于配置相关服务的信息,举例代码:
|
|
再来看看console.xml
|
|
代码说明:subsys="console"表示子系统名称为console,相当于group组名。里面每个entity包含一个服务名和相应的路径,@后面代表一个方法,该方法需要在该路径的类下定义。前端web和后端app通过服务名相连接。
centerservice.xml
该文件位于config/service下,文件定义了中心center里面有哪些组group,例如:
|
|
上面代码说明:中心center名为:base,中心base下的组名为common,console。
relax.xml
该文件指明一个center下所包含的实例instance,例如:
|
|
上面代码说明:中心center下包含一个实例console-node01-srv01,该实例里面会绑定一个IP地址和一个端口127.0.0.1:18080。
这几个配置文件之间的关系
上面的配置文件主要涉及到中心center、实例instance、组group、服务名servicename,那么它们之间有什么关系呢?
来一张它们之间的关系图:
我们为什么要定义这些?
我们最终的目的是要调用服务,现在的架构是前端web和后端app分离。那么前端就要调用后端的服务。
一般来说,我们的后端服务器会部署很多instance实例,而每个实例又有自己的归属center,如果我们们要调用服务,那么该调用哪个instance上的服务?我们来梳理下这几个配置文件的调用流程:
- 调用目标服务,加载配置文件
servicesonfig.xml,获取该文件的服务name和subsys="console",即group为console。 - 加载配置文件
centerservice.xml,通过group获取center="base"。 - 加载配置文件
relax.xml,通过center获取instance,这样就知道调用哪些instance啦。
配图以作说明:
除了上面3个配置文件,还有database.xml,dbroute.properties。他们存在如下关系。
如果我们的数据足够多,会涉及到分库分表。比如存在cen1、cen2....,我们有一个common组,那么dbroute.properties会将common组指向一个库(如:cen1)。