配置解读

说在前头

  • 配置中的路径可以是相对路径也可以是绝对路径,如果是相对路径则相对于工作目录而言的,容器模式下配置的路径表示容器中的路径。
  • 支持的单位:
    • 大小:b:字节(byte);k:千字节(kilobyte);m:兆字节(megobyte),g:吉字节(gigabyte)
    • 时间:s:秒;m:分;h:小时

主程序配置

主程序的配置和应用配置是分离的,默认配置文件是:工作目录下的etc/openedge/openedge.yml配置解读如下:

  1. mode: [必须]主程序运行模式。dockerdocker容器模式;nativenative进程模式
  2. grace: 默认值:30s,主程序优雅退出超时时间
  3. api: 主程序api server配置项
  4. address: 默认值可读取环境变量:OPENEDGE_MASTER_API,主程序api server地址。
  5. timeout: 默认值:30s,主程序api server超时时间
  6. cloud: 主程序对接云端管理套件的配置项,包括MQTTHTTPS
  7. clientid: [必须]mqtt client连接云端的client id,必须是云端核心设备的ID
  8. address: [必须]mqtt client连接云端的接入地址,必须使用ssl endpoint
  9. username: [必须]mqtt client连接云端的用户名,必须是云端核心设备的用户名
  10. ca: [必须]mqtt client连接云端的CA证书所在路径
  11. key: [必须]mqtt client连接云端的客户端私钥所在路径
  12. cert: [必须]mqtt client连接云端的客户端公钥所在路径
  13. timeout: 默认值:30smqtt client连接云端的超时时间
  14. interval: 默认值:1mmqtt client连接云端的重连最大间隔时间,从500微秒翻倍增加到最大值
  15. keepalive: 默认值:1mmqtt client连接云端的保持连接时间
  16. cleansession: 默认值:falsemqtt client连接云端的clean session
  17. validatesubs: 默认值:falsemqtt client是否检查订阅结果,如果是发现订阅失败报错退出
  18. buffersize: 默认值:10mqtt client发送消息给云端的内存队列大小,异常退出会导致消息丢失
  19. logger: 日志配置项
  20. path: 默认为空,即不打印到文件;如果指定文件则输出到文件
  21. level: 默认值:info,日志等级,支持debuginfowarnerror
  22. format: 默认值:text,日志打印格式,支持textjson
  23. console: 默认值:false,日志是否输出到控制台
  24. age:
  25. max: 默认值:15,日志文件保留的最大天数
  26. size:
  27. max: 默认值:50,日志文件大小限制,单位MB
  28. backup:
  29. max: 默认值:15,日志文件保留的最大数量

应用配置

应用配置的默认配置文件是:工作目录下的var/db/openedge/module/module.yml配置解读如下:

  1. version: 应用版本
  2. modules: 应用的模块列表
  3. - name: [必须]模块名,在模块列表中必须唯一
  4. entry: [必须]模块入口。docker容器模式下表示模块镜像;native进程模式下表示模块可执行程序所在路径
  5. restart: 模块的重启策略配置项
  6. retry:
  7. max: 默认为空,表示总是重试,模块重启最大次数
  8. policy: 默认值:always,重启策略。no:不重启;always:总是重启;on-failure:模块异常退出就重启;unless-stopped:模块正常退出就重启
  9. backoff:
  10. min: 默认值:1s,重启最小间隔时间
  11. max: 默认值:5m,重启最大间隔时间
  12. factor: 默认值:2,重启间隔增大倍数
  13. expose: Docker容器模式下暴露的端口,例如:
  14. - 0.0.0.0:1883:1883 # 如果不想暴露给宿主机外的设备访问,可以改成127.0.0.1:1883:1883
  15. - 0.0.0.0:1884:1884/tcp
  16. - 8080:8080/tcp
  17. - 8884:8884
  18. params: 模块的启动参数,例如:
  19. - '-c'
  20. - 'conf/conf.yml'
  21. env: 模块的环境变量,例如:
  22. version: v1
  23. resources: [只支持docker容器模式]模块的资源限制配置项
  24. cpu:
  25. cpus: 模块可用的CPU比例,例如:1.5,表示可以用1.5CPU内核
  26. setcpus: 模块可用的CPU内核,例如:0-2,表示可以使用第02CPU内核;0,表示可以使用第0CPU内核;1,表示可以使用第1CPU内核
  27. memory:
  28. limit: 模块可用的内存,例如:500m,表示可以用500兆内存
  29. swap: 模块可用的交换空间,例如:1g,表示可以用1G内存
  30. pids:
  31. limit: 模块可创建的进程数

Hub模块配置

  1. name: [必须]模块名
  2. listen: [必须]监听地址,例如:
  3. - tcp://0.0.0.0:1883 # Native进程模式下,如果不想暴露给宿主机外的设备访问,可以改成tcp://127.0.0.1:1883
  4. - ssl://0.0.0.0:1884
  5. - ws://:8080/mqtt
  6. - wss://:8884/mqtt
  7. certificate: SSL/TLS证书认证配置项,如果启用sslwss必须配置
  8. ca: mqtt server CA证书所在路径
  9. key: mqtt server 服务端私钥所在路径
  10. cert: mqtt server 服务端公钥所在路径
  11. principals: 接入权限配置项,如果不配置则mqtt client无法接入hub,支持账号密码和证书认证
  12. - username: mqtt client接入hub的用户名
  13. password: mqtt client接入hub的密码
  14. permissions:
  15. - action: 操作权限。pub:发布权限;sub:订阅权限
  16. permit: 操作权限允许的主题列表,支持+和#匹配符
  17. - serialnumber: mqtt client使用证书双向认证接入hub时使用的client证书的serial number
  18. permissions:
  19. - action: 操作权限。pub:发布权限;sub:订阅权限
  20. permit: 操作权限允许的主题列表,支持+和#匹配符
  21. subscriptions: 主题路由配置项
  22. - source:
  23. topic: 订阅的主题
  24. qos: 订阅的QoS
  25. target:
  26. topic: 发布的主题
  27. qos: 发布的QoS
  28. message: 消息相关的配置项
  29. length:
  30. max: 默认值:32k;最大值:268,435,455字节(约256MB),可允许传输的最大消息长度
  31. ingress: 消息接收配置项
  32. qos0:
  33. buffer:
  34. size: 默认值:10000,可缓存到内存中的QoS0的消息数,增大缓存可提高消息接收的性能,若设备掉电,则会直接丢弃QoS0的消息
  35. qos1:
  36. buffer:
  37. size: 默认值:100,等待持久化的QoS1的消息缓存大小,增大缓存可提高消息接收的性能,但潜在的风险是模块异常退出(比如设备掉电)会丢失缓存的消息,不回复确认(puback)。模块正常退出会等待缓存的消息处理完,不会丢失数据。
  38. batch:
  39. max: 默认值:50,批量写QoS1的消息到数据库(持久化)的最大条数,消息持久化成功后会回复确认(ack
  40. cleanup:
  41. retention: 默认值:48hQoS1的消息保存在数据库中的时间,超过该时间的消息会在清理时物理删除
  42. interval: 默认值:1mQoS1的消息清理时间间隔
  43. egress: 消息发送配置项
  44. qos0:
  45. buffer:
  46. size: 默认值:10000,内存缓存中的待发送的QoS0的消息数,若设备掉电会直接丢弃消息;缓存满后,新推送的消息直接丢弃
  47. qos1:
  48. buffer:
  49. size: 默认值:100QoS1的消息发送后,未确认(ack)的消息缓存大小,缓存满后,不再读取新消息,一直等待缓存中的消息被确认。QoS1的消息发送给客户端成功后等待客户端确认(puback),如果客户端在规定时间内没有回复确认,i消息会一直重发,直到客户端回复确认或者session关闭
  50. batch:
  51. max: 默认值:50,批量从数据库读取消息的最大条数
  52. retry:
  53. interval: 默认值:20s,消息重发时间间隔
  54. offset: 消息序列号持久化相关配置
  55. buffer:
  56. size: 默认值:10000,被确认(ack)的消息的序列号的缓存队列大小。比如当前批量发送了QoS1且序列号为123的三条消息给客户端,客户端确认了序列号13的消息,此时序列号1会入列并持久化,序列号3虽然已经确认,但是还是得等待序列号2被确认入列后才能入列。该设计可保证模块异常重启后仍能从持久化的序列号恢复消息处理,保证消息不丢,但是会出现消息重发,也因此暂不支持QoS2的消息
  57. batch:
  58. max: 默认值:100,批量写消息序列号到数据库的最大条数
  59. logger: 日志配置项
  60. path: 默认为空,即不打印到文件;如果指定文件则输出到文件
  61. level: 默认值:info,日志等级,支持debuginfowarnerror
  62. format: 默认值:text,日志打印格式,支持textjson
  63. console: 默认值:false,日志是否输出到控制台
  64. age:
  65. max: 默认值:15,日志文件保留的最大天数
  66. size:
  67. max: 默认值:50,日志文件大小限制,单位MB
  68. backup:
  69. max: 默认值:15,日志文件保留的最大数量
  70. status: 模块状态配置项
  71. logging:
  72. enable: 默认值:false,是否打印iotedge状态信息
  73. interval: 默认值:60s,状态信息打印时间间隔
  74. storage: 数据库存储配置项
  75. dir: 默认值:var/db,数据库存储目录
  76. shutdown: 模块退出配置项
  77. timeout: 默认值:10m,模块退出超时时间

函数计算模块配置

  1. name: [必须]模块名
  2. hub:
  3. clientid: mqtt client连接hubclient id,如果为空则随机生成,且clean session强制变成true
  4. address: [必须]mqtt client连接hub的地址,docker容器模式下地址为hub模块名,native进程模式下为127.0.0.1
  5. username: 如果采用账号密码,必须填mqtt client连接hub的用户名
  6. password: 如果采用账号密码,必须填mqtt client连接hub的密码
  7. ca: 如果采用证书双向认证,必须填mqtt client连接hubCA证书所在路径
  8. key: 如果采用证书双向认证,必须填mqtt client连接hub的客户端私钥所在路径
  9. cert: 如果采用证书双向认证,必须填mqtt client连接hub的客户端公钥所在路径
  10. timeout: 默认值:30smqtt client连接hub的超时时间
  11. interval: 默认值:1mmqtt client连接hub的重连最大间隔时间,从500微秒翻倍增加到最大值
  12. keepalive: 默认值:1mmqtt client连接hub的保持连接时间
  13. cleansession: 默认值:falsemqtt client连接hubclean session
  14. validatesubs: 默认值:falsemqtt client是否检查订阅结果,如果是发现订阅失败报错退出
  15. buffersize: 默认值:10mqtt client发送消息给hub的内存队列大小,异常退出会导致消息丢失,恢复后QoS1的消息依赖hub重发
  16. rules: 路由规则配置项
  17. - id: [必须]路由规则ID
  18. subscribe:
  19. topic: [必须]向hub订阅的消息主题
  20. qos: 默认值:0,向hub订阅的消息QoS
  21. compute:
  22. function: [必须]处理消息的函数名
  23. publish:
  24. topic: [必须]函数处理输出结果消息发布到hub的主题
  25. qos: 默认值:0,函数处理输出结果消息发布到hubQoS
  26. functions:
  27. - name: [必须]函数名
  28. runtime: 配置函数依赖的runtime模块名称,sql即为'sql'tensorflow'tensorflow'python则为'python2.7'
  29. entry: 同模块的entry,运行函数实例的runtime模块的镜像或可执行程序
  30. handler: [必须]函数处理函数。sqlsql语句,比如:'select uuid() as id, topic() as topic, * where id < 10'python为函数包和处理函数名,比如:'sayhi.handler'tensorflow对应的配置信息为'tag:input_tensor:output_tensor',其中tag为模型标签,input_tensor为模型网络结构的输入节点Tensor名称,output_tensor为模型网络结构的输出节点Tensor名称,强制模型"单一输入、单一输出"
  31. codedir: 如果是python,必须填python代码所在路径;如果是tensorflow,必须填写AI推断模型所在路径,且要求模型文件名必须为saved_model.pb
  32. env: 环境变量配置项,例如:
  33. USER_ID: acuiot
  34. instance: 函数实例配置项
  35. min: 默认值:0,最小值:0,最大值:100,最小函数实例数
  36. max: 默认值:1,最小值:1,最大值:100,最大函数实例数
  37. timeout: 默认值:5m 函数实例调用超时时间
  38. idletime: 默认值:10m,函数实例最大空闲时间,超过后销毁,定期检查的时间间隔是idletime的一半。
  39. message:
  40. length:
  41. max: 默认值:4m 函数实例允许接收和发送的最大消息长度
  42. cpu: [只支持docker容器模式]
  43. cpus: 函数实例模块可用的CPU比例,例如:1.5,表示可以用1.5CPU内核
  44. setcpus: 函数实例模块可用的CPU内核,例如:0-2,表示可以使用第02CPU内核;0,表示可以使用第0CPU内核;1,表示可以使用第1CPU内核
  45. memory: [只支持docker容器模式]
  46. limit: 函数实例模块可用的内存,例如:500m,表示可以用500兆内存
  47. swap: 函数实例模块可用的交换空间,例如:1g,表示可以用1G内存
  48. pids: [只支持docker容器模式]
  49. limit: 函数实例模块可创建的进程数
  50. logger: 日志配置项
  51. path: 默认为空,即不打印到文件;如果指定文件则输出到文件
  52. level: 默认值:info,日志等级,支持debuginfowarnerror
  53. format: 默认值:text,日志打印格式,支持textjson
  54. console: 默认值:false,日志是否输出到控制台
  55. age:
  56. max: 默认值:15,日志文件保留的最大天数
  57. size:
  58. max: 默认值:50,日志文件大小限制,单位MB
  59. backup:
  60. max: 默认值:15,日志文件保留的最大数量

远程服务模块配置

  1. name: [必须]模块名
  2. hub:
  3. clientid: mqtt client连接hubclient id,如果为空则随机生成,且clean session强制变成true
  4. address: [必须]mqtt client连接hub的地址,docker容器模式下地址为hub模块名,native进程模式下为127.0.0.1
  5. username: 如果采用账号密码,必须填mqtt client连接hub的用户名
  6. password: 如果采用账号密码,必须填mqtt client连接hub的密码
  7. ca: 如果采用证书双向认证,必须填mqtt client连接hubCA证书所在路径
  8. key: 如果采用证书双向认证,必须填mqtt client连接hub的客户端私钥所在路径
  9. cert: 如果采用证书双向认证,必须填mqtt client连接hub的客户端公钥所在路径
  10. timeout: 默认值:30smqtt client连接hub的超时时间
  11. interval: 默认值:1mmqtt client连接hub的重连最大间隔时间,从500微秒翻倍增加到最大值
  12. keepalive: 默认值:1mmqtt client连接hub的保持连接时间
  13. cleansession: 默认值:falsemqtt client连接hubclean session
  14. validatesubs: 默认值:falsemqtt client是否检查订阅结果,如果是发现订阅失败报错退出
  15. buffersize: 默认值:10mqtt client发送消息给hub的内存队列大小,异常退出会导致消息丢失,恢复后QoS1的消息依赖remote重发
  16. rules: 默认值为空,消息路由规则
  17. - id: [必须]路由规则ID
  18. hub:
  19. subscriptions: 默认值为空,向hub订阅的消息,会发送给指定的remote,例如
  20. - topic: say
  21. qos: 1
  22. - topic: hi
  23. qos: 0
  24. remote:
  25. name: [必须]指定的remote名称
  26. subscriptions: 默认值为空,向remote订阅的消息,会发送给指定的hub,例如
  27. - topic: remote/say
  28. qos: 0
  29. - topic: remote/hi
  30. qos: 0
  31. remotes: 默认值为空,remote列表
  32. - name: [必须]remote名称
  33. clientid: mqtt client连接remoteclient id,如果为空则随机生成,且clean session强制变成true
  34. address: [必须]mqtt client连接remote的地址
  35. username: 如果采用账号密码,必须填mqtt client连接remote的用户名
  36. password: 如果采用账号密码,必须填mqtt client连接remote的密码
  37. ca: 如果采用证书双向认证,必须填mqtt client连接remoteCA证书所在路径
  38. key: 如果采用证书双向认证,必须填mqtt client连接remote的客户端私钥所在路径
  39. cert: 如果采用证书双向认证,必须填mqtt client连接remote的客户端公钥所在路径
  40. timeout: 默认值:30smqtt client连接remote的超时时间
  41. interval: 默认值:1mmqtt client连接remote的重连最大间隔时间,从500微秒翻倍增加到最大值。
  42. keepalive: 默认值:1mmqtt client连接remote的保持连接时间
  43. cleansession: 默认值:falsemqtt client连接remoteclean session
  44. validatesubs: 默认值:falsemqtt client是否检查订阅结果,如果是发现订阅失败报错退出
  45. buffersize: 默认值:10mqtt client发送消息给remote的内存队列大小,异常退出会导致消息丢失,恢复后QoS1的消息依赖hub重发
  46. logger: 日志配置项
  47. path: 默认为空,即不打印到文件;如果指定文件则输出到文件
  48. level: 默认值:info,日志等级,支持debuginfowarnerror
  49. format: 默认值:text,日志打印格式,支持textjson
  50. console: 默认值:false,日志是否输出到控制台
  51. age:
  52. max: 默认值:15,日志文件保留的最大天数
  53. size:
  54. max: 默认值:50,日志文件大小限制,单位MB
  55. backup:
  56. max: 默认值:15,日志文件保留的最大数量

配置参考

最后更新于 2018-12-28 10:23:09

原文: https://openedge.tech/docs/tutorials/local/Config-interpretation