无论是何种大型的架构,配置中心的设计无疑最重要的基础设施,它衔接这各个站点和各个模块,涵盖始终。
那么通常而言,会包含以下几点.
分布式站点配置,数据路由配置, 分布式文件服务配置, 第三方组件配置, 数据校验配置, 多语言配置, 接口实现配置, 日志配置, 通讯服务配置
1. 分布式站点配置
一定是多站点的,而且随着业务的增大,不同业务领域一定会尽量拆分的够细,这样就能均摊并发访问的压力。
所有站点都会共享一套系统级的站点地址配置,解决了身份信息共享问题后,站点间跳转和相互调用便是畅通无阻。
如图样例:
既然站点是分布式的,当然是可以部署在不同服务器上的。
如果站点直接需要有文件存储的业务往来,也可以记录下站点的额外信息,以备业务需要。
如 IP, 站点文件路径等。
2. 数据库路由配置
大型架构不仅仅解决入口层的并发访问压力分摊,在数据库层同样也需要有相应的措施。
那么数据库路由至少涵盖两方面
- 读写分离路由配置,所有业务读写分离,完全隔离的业务可以完全拆离数据库。
- 分库分表路由配置,将不同业务领域拆分到不同的数据库(垂直拆分),或者是同一业务领域拆分到不同的数据库(水平拆分)
这两方面需要根据不同业务进行设计,当然设计是否合理直接决定后续业务扩展的难易。
3. 分布式文件服务配置
文件中有一种特殊类型需要单独处理,那就是'图片'
图片是一种可及时预览资源,调用频繁,被程序大量引用。
在大型架构中,文件的写一定是分布式文件存储,在不同地域设置不同的文件存储节点。
当然这里要解决两个问题:
- 分布式写, 将文件写入不同的文件服务器节点
- 文件同步,一种方案是在写入某台机器时可将资源文件分发至其余节点。
读取可以采用CDN方式,随机读或者就近读。
类似数据库路由配置,纵向可以按照业务来划分路由文件的存储,横向用多备份方式来实现CDN读。
4. 第三方组件配置
大型架构中,往往会引用的第三方组建配置。
比如常见的有以下:
- 日志组件配置
- 分布式组建配置
- 搜索引擎组件配置
- 消息队列组件配置
- 其他依赖的组建配置
当然还包含一些功能性配置
- 支付接口配置
- 邮件配置
- 短信配置
5. 数据校验及规则配置
此处的配置涉及两方面。
- 验证规则,是可以扩展的(通常根据正则表达式校验)
- 实体验证逻辑配置,根据不同方法的不同参数,配置好相应的规则,有系统自动校验。
大家都清楚,所有的前端数据都是不安全的,传入后台必经两道坎。
- 数据格式验证(与业务逻辑无关)
- 数据的存在性及合规性验证(跟业务逻辑相关)
通过配置可以非常方便的设立第一道坎,第二道坎只能编程实现了。
6. 多语言配置
系统的所有用到的多语言标签文本,包含以下几种类型:
- 表单字段
- 文字提示
- 动态文字模版,可以定义动态参数。
- 校验
- 系统异常
7. 接口实现配置
在大型系统中,一定会包含依赖注入,面向接口编程,那么意味着极高的灵活性。
因此,程序的各项功能理论上都是可以通过配置方式来切换不同的实现,这也是面向接口的优势。
因此,在系统的各个业务类
例如 配置文件,可以是任意格式,JSON, XML
数据库也可以是任意的类型, Oracle, MySql, SqlServer
只需要共用一套访问接口,那么就可以适配不同的情形。
8. 日志配置
系统的日志一定是极度灵活的。
在设计良好的架构中,运用成熟的组建,可以将日志存储于
- 数据库
- 磁盘文件
- 第三方接口
三种场景:
- 异常捕获,在发生一些非预见性异常时,记录下来,方便排查错误的原因。
- 主动记录业务日志,某些业务特别重要,需要保留操作记录等。
- 调试程序,某些不方便调试时,通过输出程序运行日志信息判断程序运行状况。
可以灵活的配置,在哪些地方需要记录日志。日志的记录一定是面向切面的方式,这样可以独立于业务。
在任意的方法调用前进行日志记录。
9. 通讯服务配置
任一系统,一定会存在与其他系统对接交互,无论是通过Webservice方式,还是Socket通讯方式,都一定会牵扯通讯配置。
通常自定义的一些分布式功能的实现, 会使用TCP服务
那么所有服务的 协议,IP,端口,超时时间,缓存,大小限制等信息。
通常定义一组标准接口,定义不同的实现来读取不同类型的通讯服务来达到标准化。