您还未登录! 登录 | 注册 | 帮助  

您的位置: 首页 > 软件测试管理 > 配置管理 > 正文

大型架构中配置中心所涵盖的要素

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