zoukankan      html  css  js  c++  java
  • 大型架构中配置中心所涵盖的要素

    无论是何种大型的架构,配置中心的设计无疑最重要的基础设施,它衔接这各个站点和各个模块,涵盖始终。
    那么通常而言,会包含以下几点.
    分布式站点配置,数据路由配置, 分布式文件服务配置, 第三方组件配置, 数据校验配置, 多语言配置, 接口实现配置, 日志配置, 通讯服务配置

    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,端口,超时时间,缓存,大小限制等信息。
    通常定义一组标准接口,定义不同的实现来读取不同类型的通讯服务来达到标准化。

  • 相关阅读:
    Seq_file文件系统实例剖析
    linux 网卡接收多播MAC(01:08开头)
    linux-3.14.13 看到mpls gso支持
    /usr/include/sys/types.h:62: error: conflicting types for ‘dev_t’
    gcc编译参数-fPIC的一些问题
    glibc-2.15编译error: linker with -z relro support required
    no CONFIG_BQL
    if_nametoindex可以检查网卡名称是否有效
    剑指offer(10)
    剑指Offer(9)
  • 原文地址:https://www.cnblogs.com/mcxie/p/7727836.html
Copyright © 2011-2022 走看看