1.14.俯瞰:配置地图

俯瞰江流青一带,坐看山色碧千寻。——蔡戡《陪宪使登榕溪阁》

完整地图文件:Version 1.1

    本文不讲解任何和Zero Extension相关的详细配置信息,那是另外一个故事,而本文中使用的配置地图部分以1.1版为主,可能和本系列教程中的内容不一致,主要是写本文时Zero Extension最新版还在开发中。

「壹」内部配置

    虽然Zero框架名字叫“零”,没有任何配置也是可启动的,但往往在真实项目中要真正零配置几乎是不太可能,只是设计时如何让配置的量减到最低,又或者说让配置本身变得简单而实用且易于扩展,让开发人员压力更小,这才是目的。

    Zero的基础配置规范如下:

  1. 只有两种配置文件名,.json.yml(yaml)格式。

  2. 主配置从src/main/resources中的vertx.yml文件作入口。

    选择yml文件是因为我在设计和开发Zero之前一直使用的是Spring Boot,而Zero框架的很多设计思路也是基于它而来,正因为在实际项目开发中看到了痛点、难点 ,所以一切从简,同时使得曾经用过Spring Boot的开发者可以很流畅过渡。

1.1. Zero配置结构

    Zero预定义了基础框架的部分结构,该结构存储在vertx-co项目中,且它的完整结构如下图:

    Zero中的核心配置主要分两部分:

  • 内部配置:内部配置在您提供了相关配置后会被合并(内部配置 = 默认配置 + 您的配置)。

  • Lime配置:Lime配置主要由用户提供,提供该配置后,Zero会去扫描所有关联的节点,最终生成唯一的一份JsonObject——全环境统一配置。

    从上述配置信息可知,除了内部配置以外,其他Lime相关配置的根节点不能出现重复(重复会覆盖),本章的任务就是带着您看看Zero中目前的Lime有些什么样的魑魅魍魉。

1.2. 异常配置

    异常配置包含两个文件:

文件名Lime方式含义

vertx-error.yml

Lime配置

错误代码异常堆栈信息定义模板,以E打头。

vertx-readible.yml

独立文件

直接读取,和vertx-error.yml代码绑定。

    之前讲解容错部分已经解释过这两个文件的用法,此处就不详细解释它的基本结构了,您可以将这两个文件理解成两个哈希表,针对某一个错误代码code而言:

# vertx-error.yml
# WebException定义时,该文件中的配置是必须的,如果没有则报错。
E<code>: "message, {0}, {1}, {2}"

# vertx-readible.yml
# 如果定义了该文件,那么就会在错误响应信息中追加一个业务描述节点`info`给前端使用。
<code>: "您的错误信息,xxxxx"

配置地图

1.3. 插件配置

    插件配置位于vertx-inject.yml文件中,默认插件配置只包含了日志记录器:

logger: io.vertx.up.log.internal.Log4JAnnal

    除此,您还可以增加以下配置:

# 「Zero框架内置」
# 启用Jooq数据库访问功能,启用后才可使用 Ux.Jooq
jooq: io.vertx.tp.plugin.jooq.JooqInfix
# Cache,缓存专用,内置缓存实现,SharedMap
shared: io.vertx.tp.plugin.shared.MapInfix
# Job,任务插件,启用后台任务系统
job: io.vertx.tp.plugin.job.JobInfix

# 「Zero标准化插件」
# zero-ifx-history专用配置,启用trash回收站功能,可保存删除历史
trash: io.vertx.tp.plugin.history.TrashInfix
# zero-ifx-excel专用配置,启用Excel的导入/导出功能
excel: io.vertx.tp.plugin.excel.ExcelInfix
# zero-ifx-es专用配置,启用ElasticSearch功能
elasticsearch: io.vertx.tp.plugin.elasticsearch.ElasticSearchInfix
# zero-ifx-neo4j专用配置,启用Neo4j,图引擎数据库专用
neo4j: io.vertx.tp.plugin.neo4j.Neo4jInfix

# 「Zero和Vert.x集成插件」
# zero-ifx-redis专用配置,启用Redis
redis: io.vertx.tp.plugin.redis.RedisInfix
# zero-ifx-native专用配置,启用SQLClient
mysql: io.vertx.up.plugin.jdbc.MySqlInfix
# zero-ifx-mongo专用配置,启用MongoClient
mongo: io.vertx.tp.plugin.mongo.MongoInfix

# 「Zero扩展模块插件」
# zero-jet 动态路由专用配置,启用非Annotation模式的动态路由发布功能
router: io.vertx.tp.jet.JetPollux

如果您编写了自定义的Infix,那么上述配置中只要不重名即可。

配置地图

1.4. Resolver配置

    Resolver配置是Zero中的特殊配置,它的基础内容位于vertx-resolver.yml文件中,默认内容如:

default: io.vertx.up.uca.rs.mime.resolver.DefaultResolver
application:
  json: io.vertx.up.uca.rs.mime.resolver.JsonResolver
  octet-stream: io.vertx.up.uca.rs.mime.resolver.BufferResolver
  x-www-form-urlencoded: io.vertx.up.uca.rs.mime.resolver.XFormResolver
multipart:
  form-data: io.vertx.up.uca.rs.mime.resolver.FormResolver

    上述配置在之前的文件中讲解过,按文件结构,它处理的MIME如下表格:

MIME值处理类含义

(默认)

DefaultResolver

处理不带MIME的请求。

application/json

JsonResolver

Json数据处理。

application/octet-stream

BufferResolver

二进制数据处理。

application/x-www-form-urlencoded

XFormResolver

多媒体表单处理。

multipart/form-data

FormResolver

带上传功能请求处理。

配置地图

1.5. 服务器配置

    服务器配置位于vertx-server.yml文件中,默认的配置如下:

server:
# 当前服务节点名称,微服务模式下可标识节点服务器
- name: zero-ws
# 服务器类型
  type: http
# 服务器配置数据,类型不同则配置有所区别
  config:
    # 端口号
    port: 6083
    # 发布服务的Host地址,该值表示任意IP
    host: 0.0.0.0

    注意这里支持的服务器数量是多个,server节点是一个数组,而不是单个服务器,主要是为微服务环境量身打造的,而此处的type节点是读者必须要理解的节点

type值含义Options

http

Http服务器,常用的RESTful容器。

HttpServerOptions

api

微服务模式中的Api Gateway服务。

HttpServerOptions

ipc

微服务模式中的Service服务,此时根据名称进行连接。

HttpServerOptions

sock

「保留」WebSocket专用服务。

rx

「保留」Rx模式下的Http服务器(类名不同。

「保留」为设计了此扩展但还未实现的部分,后续版本会逐渐扩展。

地图配置

1.6. 主配置

    主配置位于vertx.yml文件中,默认的配置内容如:

zero:
  # 默认连接三个扩展文件
  #     vertx-error.yml
  #     vertx-inject.yml
  #     vertx-server.yml
  lime: error, inject, server
  vertx:
    # Vert.x集群服务配置
    clustered:
      # 启用 Vert.x 集群服务
      enabled: false
      # 配置 Vert.x 集群服务中的类名,为ClusterManager
      # 后期版本会使用 HA 配置代替
      manager:
      # 配置数据(根据不同的ClusterManager有所区别)
      options: 
   
    # Vert.x实例配置,为数组结构,如果是集群模式则可使用多个
    instance:
      # Vert.x实例名
    - name: vx-zero
      # Vert.x实例对应的Vert.x配置,VertxOptions类型的Json序列化结构
      options:
        # Fix block 2000 limit issue.
        maxEventLoopExecuteTime: 6000000000

    Zero中设计的完整Vert.x部分的配置结构图如下:

    整个结构包含了两个维度处理RESTful的配置:

  1. 您是使用Vert.x的集群模式还是单点模式(实战可知,单点模式已经够用了)。

  2. 您是使用Zero中的单机模式还是微服务模式(微服务模式下需配置ipc和api两种服务器)。

    主配置的Vert.x实例的每个节点options对应的就是VertxOptions数据结构。

    本章节中所有的配置都包含了固定的文件名,这是Zero内置的固定配置,如果您想要拓展自己的配置只能走Lime,这也是本文第一章节称为内部配置的原因,汇总如下:

文件名Lime方式含义

vertx.yml

独立文件

主配置文件,Vertx实例专用配置。

vertx-inject.yml

Lime配置

插件Infix专用配置文件。

vertx-server.yml

Lime配置

HTTP服务器专用配置。

vertx-resolver.yml

独立文件

MIME解析器(可扩展)。

vertx-error.yml

Lime配置

异常代码表。

vertx-readible.yml

独立文件

业务异常信息配置。

配置地图

「贰」Lime配置

lime的翻译为石灰,石灰遇水就会爆发出能量,在系统中它表示所有的插件遇到了Zero后就可发挥出它的最大能量,对所有lime配置而言,Zero就是:生命之源。

    Lime配置是Zero中最灵活的配置,您可以使用一个文件来配置所有内容,也可以使用多个文件来分开配置,不论多少文件,其文件名都是按照lime中定义的子文件进行汇总,假设您定义了如下片段:

vertx:
    lime: x1, x2, x3

    那么Zero会将vertx-x1.yml、vertx-x2.yml、vertx-x3.yml 三个文件内容合并到一起生成一个唯一的JsonObject配置,这种做法唯一的限制就是Lime针对不同功能时配置的键名必须唯一。

2.1. 常用规范

    此处提供两套完整的文件规范(不包含主配置)。

按功能拆分

文件名含义

vertx-jooq.yml

Jooq主库配置、历史库配置。

vertx-session.yml

会话专用配置。

vertx-redis.yml

Redis相关配置(zero-ifx-redis)。

vertx-trash.yml

历史库备份功能专用配置(zero-ifx-history)。

vertx-es.yml

ElasticSearch专用配置(zero-ifx-es)。

vertx-neo4j.yml

Neo4j图库配置(zero-ifx-neo4j)。

vertx-secure.yml

安全相关配置(包括跨域配置)。

vertx-shell.yml

DevOps命令行专用配置(zero-ifx-shell)。

vertx-router.yml

动态路由启用专用配置(zero-jet)。

vertx-deployment.yml

Verticle部署专用配置。

vertx-init.yml

初始化专用配置。

vertx-extension.yml

Zero Extension模块核心配置。

vertx-job.yml

后台任务专用配置。

vertx-cache.yml

L1、L2、L3缓存专用配置。

vertx-debug.yml

调试专用配置。

vertx-shared.yml

SharedData专用配置。

vertx-sms.yml

阿里短信服务配置(zero-ifx-sms)。

vertx-iqiy.yml

爱奇艺视频服务配置(zero-ifx-iqiy)。

vertx-feign.yml

Feign客户端配置(zero-ifx-feign)。

vertx-excel.yml

Excel导入导出专用配置(zero-ifx-excel)。

vertx-rpc.yml

微服务专用配置(zero-iproxy)。

vertx-etcd.yml

微服务ETCD专用配置。

最佳实践

    最佳实践主要来自于生产环境中的基础文件合并,上述文件过多,如果不做一定程度的压缩,那么对开发人员而言挺繁琐的,压缩文件符合几个基本原则:

  1. 复杂配置和独立功能放到一个独立文件中以方便直接更改。

  2. 常用固定配置基本只需要配置一次,修改后就不变了,放到一起。

  3. 生产部署和开发不同的文件放到一起,每次部署之前统一修改,也方便DevOps脚本。

    压缩过后的文件结构如:

文件名含义

vertx-excel.yml

Excel导入导出专用定义,内容比较长,独立文件。

vertx-cache.yml

L1、L2、L3三级缓存的基础配置(目前只支持L1,Redis)。

vertx-shell.yml

DevOps专用配置。

vertx-secure.yml

维持不变。

vertx-rpc.yml

微服务专用配置(zero-iproxy),原-rpc, -etcd

vertx-extention.yml

-init, -extension,-job, -shared, -session配置。

vertx-jet.yml

-router, -deployment配置。

vertx-jooq.yml

-jooq, -redis, -trash, -es, -neo4j配置,以及跨域。

vertx-tp.yml

-sms, -iqiy相关配置。

    简单说明一下:

  1. vertx-jooq.yml是在切换环境时改动最大的一个文件,这样的结构做环境迁移几乎不需要去改动其他配置文件,仅修改vertx-jooq.yml即可,因为它包含了所有和Zero相关的集成部分。

  2. 单点模式下vertx-tp.yml、vertx-rpc.yml是不用配置的文件。

  3. vertx-jet.yml主控Verticle数量,可做简单模式下的性能调优。

    所以最终形成的配置文件结构如:

    截图中目录配置表如下:

目录名含义

cab

X_MODULE中和前端页面绑定的动态配置。

codex

Zero验证模块专用的接口验证配置(@Codex)。

keys

安全专用jceks文件目录以及其他签名文件目录。

plugin

Zero Extension模块专用文件目录。

pojo

旧系统映射层专用配置文件目录。

init

初始化Excel模板数据存储位置,包含所有OOB数据文件。

runtime

运行时的静态配置(可自由处理)。

    以上目录中除initruntime是可自定义的,其他几个目录几乎是固定的,而且不会重复以及冲突。init目录中包含了系统初始化的所有配置数据,它是产品 第一个版本的OOB(Out-Of-Box)数据,您可以直接使用该目录的数据重置系统,等价于恢复出厂runtime 目录中包含了运行时的各种配置数据,如DevOps、动态建模临时文件、数据模板、特殊插件、测试框架Mock配置等所有和运行相关的配置文件都在此目录中。

接下来按功能来看看各部分的详细配置,瞅瞅这张地图,详细配置图可参考:

2.2. vertx-jooq.yml

配置地图

示例

jooq:
    provider:
        driverClassName: "com.mysql.cj.jdbc.Driver"
        username: cmdb
        password: "????"
        hostname: "ox.engine.cn"
        instance: DB_ORIGIN_X
        jdbcUrl: "jdbc:mysql://ox.engine.cn:3306/DB_ORIGIN_X..."
    # 历史数据库,如果启用逻辑删除则需要使用该库
    orbit:
        driverClassName: "com.mysql.cj.jdbc.Driver"
        username: cmdb
        password: "????"
        hostname: "ox.engine.cn"
        instance: DB_IOP_HIS
        jdbcUrl: "jdbc:mysql://ox.engine.cn:3306/DB_IOP_HIS

说明

  1. provider是主业务数据库配置,如果是动态建模方式,它表示平台数据库,一般用DB_ORIGIN_X或其他,若不启用动态建模,则该数据库就是核心业务数据库。

  2. orbit是历史记录数据库,若启用了删除备份功能,则使用该数据库存储被物理删除的数据。

2.3. vertx-session.yml

配置地图

示例

session:
    config:
        category: DEFINED
        store: io.vertx.tp.plugin.redis.RedisStore
        options: 

说明

    此处需要说明的是会话存储器的核心配置,该会话存储器主要分三类:

category值使用存储类

LOCAL

io.vertx.ext.web.sstore.LocalSessionStore

CLUSTER

io.vertx.ext.web.sstore.ClusteredSessionStore

DEFINE

io.vertx.tp.plugin.redis.RedisStore或其他

    上述配置在配置了session节点时自动生效,而options配置主要针对category = DEFINE 类型,这种情况需开发人员自己提供自定义的SessionStore实现,该实现可参考RedisStore的代码。

2.4. vertx-redis.yml

zero-ifx-redis

配置地图

示例

redis:
    # Redis运行的Host名或IP地址
    host: ox.integration.cn
    # Redis运行的接口
    port: 6379

2.5. vertx-trash.yml

zero-ifx-history

配置地图

示例

trash:
    # 历史记录保留的时间,-1表示在历史库中永久保留。
    keepDay: -1

2.6. vertx-es.yml

zero-ifx-es

配置地图

示例

elasticsearch:
    hostname: ox.integration.cn
    port: 9200
    scheme: http
    index: cmdb
    username: elastic
    password: ???????

2.7. vertx-neo4j.yml

zero-ifx-neo4j

配置地图

示例

neo4j:
    port: 7687
    protocol: bolt
    hostname: ox.integration.cn
    username: neo4j
    password: ?????

说明

    Neo4j一般支持三种连接协议:

协议名默认端口对应neo4j配置

bolt

7687

dbms.connector.bolt

http

7474

dbms.connector.http

https

7473

dbms.connector.https

2.8. vertx-secure.yml

配置地图

示例

# 安全配置
secure:
    # Standard Type
    jwt:
        type: jwt
        config:
            jwtOptions:
                algorithm: HS256
            keyStore:
                type: jceks
                path: keys/keystore.jceks
                password: zeroup
# 跨域配置
cors:
    credentials: true
    methods:
        - DELETE
        - GET
        - POST
        - PUT
        - OPTIONS
    headers:
        - Authorization
        - Accept
        - Content-Disposition
        - Content-Encoding
        - Content-Length
        - Content-Type
        - X-App-Id
        - X-App-Key
        - X-Sigma
        - X-Lang
    origin: "http://ox.server.cn:5000"

这部分配置在安全章节已经讲解,此处就不再过多说明。

2.9. vertx-shell.yml

zero-ifx-shell

配置地图

示例

shell:
    debug: false # 是否开启命令行的Debug模式,Debug模式可以查看堆栈信息
    welcome:
        banner: "Ox Engine Shell ( γραμμή εντολών )"
        version: "1.0"
        message:
            environment: "[ {0} ]"
            wait: "请输入命令,使用 h 可查看帮助文档"
            quit: "您已经成功推出控制台!Successfully"
            back: "您已经退出当前子系统:{0}!Successfully"
            header: "参数选项表:"
            help: "命令表:"
            footer: "版权: 深圳招为科技 Ver.1.0"
            empty: "[ Error ] 您还没有输入任何命令,请输入合法命令!"
            invalid: "对不起,该命令无法识别 \"{0}\",请输入合法命令!"
            previous: "执行命令:\"{0}\", \"{1}\""
            usage: "基本语法:<command> [options...]
                        \t命令名称:{0}, 命令类型:{1}
                        \t参数格式: [-opt1 value1 -opt2 value2]"
    commands:
        default: "runtime/console/commands.default.json"
        defined: "runtime/console/commands.json"
    validate:
        input:
            required: "参数缺失或者长度不匹配(长度必须大于1),请输入合法参数!"
            existing: "请输入合法的参数,参数列表:{0},当前输入:`{1}`"
        args:
            - start
            - config

说明

    注意图中红色部分,还有隐藏的配置,但这些配置太过复杂,在讲解Zero中的命令行框架时会单独讲解所有详细配置。

2.10. vertx-jet.yml

zero-jet

该文件合并表格中的vertx-router.ymlvertx-deployment.yml

配置地图

示例

# 路由配置
router:
    wall: /api
    worker:
        instances: 4
    agent:
        instances: 32
    unity: io.vertx.tp.optic.environment.UnityAmbient

## 配置
deployment:
    mode: CONFIG
    options:
        io.vertx.up.verticle.ZeroHttpAgent:
            instances: 32
        io.vertx.up.verticle.ZeroHttpWorker:
            instances: 128

说明

    这份配置有几点说明:

  1. router主控动态路由配置

    1. Agent组件线程数就是32。

    2. Worker组件线程数为Agent x 4 = 128,Worker依靠Agent发布。

  2. deployment主控静态路由配置

    1. Agent组件线程数为32。

    2. Worker组件线程数为128。

后续版本中会将router中的Worker标准化,instances是多少就发布多少,这是曾经的一次失误开发引起的问题。

2.11. vertx-extension.yml

该文件合并表格中的vertx-init.ymlvertx-extension.yml

配置地图

示例

# -----------------------------------------------------
# 扩展模块专用配置
init:
    # 初始化Crud
    -   component: io.vertx.tp.crud.init.IxPin
    # 初始化Rbac
    -   component: io.vertx.tp.rbac.init.ScPin
    # 初始化Ambient
    -   component: io.vertx.tp.ambient.init.AtPin
    # 初始化Ui
    -   component: io.vertx.tp.ui.init.UiPin
    # 初始化Api
    -   component: io.vertx.tp.jet.init.JtPin
    # 初始化Atom
    -   component: io.vertx.tp.atom.init.AoPin

# -----------------------------------------------------
# Extension 模块中的`数据域`和`Auditor`部分
extension:
    region:
        component: io.vertx.tp.rbac.extension.DataRegion
        config:
            prefix: /api/
    auditor:
        component: io.vertx.tp.rbac.extension.AuditorPin
        config:
            # 重写过 /api/:actor 的模块需要配置
            include:
                - /api/employee                                 # 员工
                - /api/user                                     # 用户
                - /api/permission                               # 权限
            exclude:
                # 员工排除
                - /api/employee/search
                - /api/employee/missing
                - /api/employee/existing
                - /api/employee/export
                - /api/employee/import
                # 权限排除
                - /api/permission/search
                - /api/permission/missing
                - /api/permission/existing
                - /api/permission/export
                - /api/permission/import
                # 用户排除
                - /api/user/existing
                - /api/user/missing
                - /api/user/search
                - /api/user/export
                - /api/user/import

说明

    这部分配置和前文提到过的插件相关,启用了CRUD项目过后,配置本身就变得比较复杂了,特别是Auditor的exclude部分,若不启用CRUD则这部分配置会简单很多,主要目的是开启Zero Extension中的职责模块、数据域等功能,CRUD模块会在Zero Extension中单独介绍。

2.12. vertx-job.yml

配置地图

示例

job:
    store:
        component: io.vertx.tp.jet.uca.micro.JtHypnos

这部分配置会在任务系统章节单独说明。

2.13. vertx-cache.yml

配置地图

示例

cache:
    # L1 Cache between Dao and Database
    l1:
        component: "io.vertx.tp.plugin.redis.cache.L1"
        worker: "io.vertx.tp.plugin.redis.cache.L1Worker"
        address: "EVENT://L1-CACHE/FOR/DAO"
        options:
        # Definition for spec situations
        matrix:
        # 
    # L2 Cache between Service and Dao

    # L3 Cache between Api and Service

直接查看上述注释部分,目前系统只支持Redis的L1级别的缓存信息。

2.14. vertx-debug.yml

配置地图

示例

database:
    sql.debug: false                  # 旧系统用,新版会移除
# Debugger 模块
debug:
    rest.url.detect: false            # Uri 日志关闭(默认打开)
    # job.boot:       false           # Job 详细日志(默认关闭)
    # jooq.condition:   false         # Jooq 条件日志(默认关闭)
    # jooq.password:  false           # Jooq 密码隐藏(默认关闭)
    # excel.range:    false           # Excel 扫描区域日志(默认关闭)

    # Extension Module
    # crud.dao.file:  false           # IxDao 文件读取日志(默认关闭)

0.8.0之后这部分配置有所变化,如:

debug:
    # (默认打开)Restful的路径扫描检查日志,规范检查专用
    web.uri.detecting:      false
    # (默认关闭)Job任务启动时的日志打印
    # job.booting:            true
    # (默认关闭)隐藏初始密码,后台账号可以在日志中看到初始密码
    # password.hidden:        true
    # (默认关闭)打印底层Stack Trace的调试信息
    # stack.tracing:          true
    # Jooq 条件日志(默认关闭)
    # jooq.condition:         true
    # Excel 扫描区域日志(默认关闭)
    # excel.ranging:          true

说明

只用于调试,生产环境部分日志会自动关闭。

选项默认含义

rest.url.detect

web.uri.detecting

true

是否打开Uri的Detect日志,若打开则打印计算日志。

job.boot

job.booting

false

是否打印启动Job的日志。

jooq.condition

jooq.condition

false

是否打印Jooq的SQL底层条件监控日志。

jooq.password

password.hidden

false

是否在后台日志隐藏Jooq密码(防服务端盗窃)。

excel.range

excel.ranging

false

是否开启Excel的区域扫描日志。

crud.dao.file

crud.dao.file

false

是否打开IxDao的文件专用日志。

x

stack.tracing

false

是否打印部分底层异常。

2.15. vertx-tp.yml

该文件合并表格中的vertx-shared.yml, vertx-feign.yml, vertx-iqiy.yml, vertx-sms.yml

zero-ifx-feign, zero-ifx-iqiy, zero-ifx-sms

配置地图

    该文件中主要包含了第三方的详细配置,而vertx-shared.yml配置其实放在哪个文件中都不影响整体,至于Feign, AliSms, IQiy这些第三方都是比较特殊的第三方集成,此处不提供示例。

2.16. vertx-excel.yml

zero-ifx-excel

配置地图

示例

excel:
    pen: "io.vertx.tp.plugin.excel.tpl.BlueTpl"
    environment:
        -   name: environment.ambient.xlsx
            path: "init/oob/environment.ambient.xlsx"
    temp: /tmp/
    mapping:
        # Source
        -   table: X_SOURCE
            pojo: cn.vertxup.ambient.domain.tables.pojos.XSource
            dao: cn.vertxup.ambient.domain.tables.daos.XSourceDao
            key: key
            unique:

0.8.0之后这部分配置有所变化,如:

        # Source
        -   dao: cn.vertxup.ambient.domain.tables.daos.XSourceDao
            key: key
            unique:

说明

    Zero中在处理Excel模板时,支持很复杂的Excel模板,同时也支持复杂的风格渲染,如上边片段中pen配置的是蓝色风格

  • 支持JsonArray的分离和合并导入导出。

  • 支持Formula表达式以及外联文件表达式实现目录下的Excel链接。

  • 2003和2007双格式支持。

  • 支持单元格直接从文件读取序列化成JsonArray或JsonObject操作,JSON:前缀。

  • 支持单元格中的引用值读取,跨表导入导出。

    详细功能在讲解插件时再举例说明。

2.17. vertx-rpc.yml

该文件合并表格中的vertx-rpc.yml、vertx-etcd.yml

zero-iproxy

配置地图

说明

    最后一份配置比较复杂,和微服务相关。

节点含义

rpc

gRpc完整配置,做微服务之间服务通讯专用。

circuit

微服务中熔断专用配置。

etcd

微服务中服务配置中心Etcd相关配置(可支持集群配置中心)。

「叄」小结

    本章节带您领略了整个Zero框架中的所有配置,详细的配置图可参考本文最开始的配置地图专用链接下载该图(2.8M),后续更新会有新版本的配置完整地图。这些配置中某些配置部分是还没讲解的章节,而大部分都是已经讲解过的章节,有关配置的细节只能读者自己在学习过程去体会。

Last updated