DCache搭建测试

栏目: 数据库 · 发布时间: 6年前

内容简介:Dcache使用腾讯Tars框架开发,属于分布式的NoSQL存储系统。数据存储在内存中,还可以连接后端DB做数据的持久化。Linuxtars 内部程序通过'root@{主机名}'登录数据库,需要授权。主机名可以通过/etc/hosts查看。

Dcache使用腾讯Tars框架开发,属于分布式的NoSQL存储系统。数据存储在内存中,还可以连接后端DB做数据的持久化。

支持平台

Linux

特点

  • 高性能存储引擎

    • 支持多种数据结构,如:
      • key-value
      • k-k-row
      • list
      • set
      • zset
    • 支持数据持久化到后端DB
  • 集群模式

    • 高可用
    • 高扩展
    • 异地镜像
    • 就近接入
  • 通过名字访问

    • 支持同步、异步、单向RPC调用
  • 高效运维平台(提供WebUI)

    • 服务部署
    • 扩缩容
    • 迁移
    • 服务配置
    • 质量监控

组成

  • tars框架
  • 业务服务
    • KVCache模块
      • 存储key-value
    • MKVcache模块
      • k-k-row
      • list
      • set
      • zset
  • 公共基础服务
    • OptServer
    • ConfigServer
    • PropertyServer
    • DCache管理平台

安装部署

tars框架

依赖环境

  1. 操作系统

    • linux内核:2.6.18 or later
  2. C++语言框架依赖

    • gcc:4.8.2 or later
    • glibc-devel
    • bison:2.5 or later
    • flex:2.5 or later
    • cmake:2.8.8 or later
    • rapidjson:1.0.2
  3. tars框架运行依赖

    • mysql:5.6.5 or later
  4. web管理系统依赖

    • nvm:0.33.11 or later
    • node:8.11.3 or later

依赖安装

$ yum -y install gcc gcc-c++ cmake yasm glibc-devel flex bison ncurses-devel zlib-devel autoconf python-requests
复制代码

mysql部署

  1. 下载 mysql 源码包(5.6.44版本), 官方要求数据库版本不低于5.6.5。
$ wget "https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.44.tar.gz"
复制代码
  1. 安装 - 编译安装
# 创建普通用户
$ useradd -m -d /home/mysql mysql

# 解压源码包
$ tar zxf mysql-5.6.44.tar.gz

# 创建mysql安装目录, 并做软连接
$ mkdir /usr/local/mysql-5.6.44
$ ln -s /usr/local/mysql-5.6.44 /usr/local/mysql

# 修改属主属组
$ chown mysql:mysql /usr/local/mysql-5.6.44 /usr/local/mysql

# 切换到源码目录,编译安装
$ cd mysql-5.6.44
$ cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.6.44 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_USER=mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
$ make && make install
复制代码
  1. mysql服务配置
# 删除原始数据目录, 在数据盘创建数据目录,进行软连
$ rm -rf /usr/local/mysql/data
$ mkdir -p /data/mysql-data
$ ln -s /data/mysql-data /usr/local/mysql/data

# 修改属主属组
$ chown -R mysql:mysql /data/mysql-data /usr/local/mysql/data

# 配置启动脚本
$ cd /usr/loca/mysql/
$ cp support-files/mysql.server /etc/init.d/mysql

# 初始化数据库
$ rm -rf /etc/my.cnf
$ yum -y install perl
$ yum install -y perl-Module-Install.noarch
$ perl scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql --pid-file=/var/run/mysql/mysql.pid --socket=/tmp/mysql.sock 

# 修改配置文件
$ vim /usr/local/mysql/my.cnf
'''
[mysqld]

# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
innodb_buffer_pool_size = 128M

# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
log_bin

# These are commonly set, remove the # and set as required.
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
# port = .....
# server_id = .....
socket = /tmp/mysql.sock

bind-address={$your machine ip}

# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
join_buffer_size = 128M
sort_buffer_size = 2M
read_rnd_buffer_size = 2M

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
'''

# 启动服务,设置开机自启
$ service mysql start
$ chkconfig mysql on
复制代码
  1. 设置环境变量
$ echo -e 'PATH=$PATH:/usr/local/mysql/bin\nexport PATH' > /etc/profile.d/mysql_env.sh
$ source /etc/profile
复制代码
  1. 修改root初始密码, 授权登录
$ mysqladmin -u root password 'root@appinside'
$ mysql -uroot -p
mysql> grant all on *.* to "root"@"%" identified by 'root@appinside' with grant option;
mysql> grant all on *.* to "root"@"localhost" identified by 'root@appinside' with grant option;
mysql> grant all on *.* to "root"@"10.80.137.193" identified by 'root@appinside' with grant option;
mysql> grant all on *.* to "root"@"platformxxxx.cdn.idc.com" identified by 'root@appinside' with grant option;
复制代码

tars 内部程序通过'root@{主机名}'登录数据库,需要授权。主机名可以通过/etc/hosts查看。

  1. 添加mysql库路径
$ vim /etc/ld.so.conf

/usr/local/mysql/lib/
ldconfig
复制代码
  1. mysql主从配置

测试环境暂不需要,待正式部署后再做补充。#TODO

tars部署

  1. git clone Tars
# 使用递归方式clone
$ git clone  https://github.com/TarsCloud/Tars.git --recursive

复制代码
  1. 使用一键部署脚本
$ cd Tars/deploy

# 修改数据库信息
$ vim comm.propertys

host = 10.80.137.139
port = 3306
pwd = root@appinside

# 授权tars用户权限
mysql> grant all on *.* to 'tars'@'%' identified by 'tars2015' with grant option;
mysql> grant all on *.* to 'tars'@'localhost' identified by 'tars2015' with grant option;
mysql> grant all on *.* to 'tars'@'platformxxxx.cdn.idc.com' identified by 'tars2015' with grant option;

# 执行脚本
$ python deploy.py all
复制代码
  1. deploy.py脚本在执行过程中,会报错tars用户的'Access denied', 但是在部署脚本中有tars用户的授权操作。目前观察问题现象是授权未执行成功,且没有报错,具体原因未查明,先手动授权预防报错。
  2. 该执行脚本不具有幂等性,不能重复执行。若必须重新执行的情况,需要修改脚本,注释掉已完成的函数部分,还要根据情况对应修改脚本。
  3. 脚本执行完成后,会自启动web服务,若端口冲突,需要修改/usr/local/app/web/config/webConf.js文件,将port端口号修改。详细操作可以见下面的步骤。
  1. web启停、web切换dcache-alpha分支,以及端口冲突问题解决
## 切换DCache的web分支。
## 目前web管理界面,DCache服务暂时只提供体验版,需要在部署过程中手动切换分支(后期可以考虑修改部署脚本,直接指定tag来clone)。
# 备份文件 config/webConf.js, config/tars.conf
$ cp config/webConf.js ~
$ cp config/tars.conf ~
$ cp package-lock.json ~

# 暂存当前master分支, 切换alpha分支。
$ rm -rf package-lock.json
$ git stash
$ git checkout -b dcache-alpha origin/dcache-alpha

# 恢复文件
$ cp ~/webConf.js config/webConf.js
$ cp ~/tars.conf config/tars.conf

# 端口冲突解决
$ vim config/webConf.js

    webConf: {
        port: 33000,              //服务启动端口, 默认3000
        loggerPath: path.join(__dirname, '../log'),    //本地日志的目录
        logFileKeepDays: '1',         //日志保留时间
        defaultLanguage: 'cn',    //cn 或 en ,用户默认的语言环境
    },


# 修改dcache配置
$ vim config/dcacheConf.js

module.exports = {
  enableDcache: true        //启动dcache界面,默认false
}

# 从新安装npm依赖包
$ npm install --registry=https://registry.npm.taobao.org

# web启停
# 启动web(prd为脚本名,详细查看package.json)
$ npm run prd

# 停止所有web
$ pm2 kill

# 使用别名启停单个web
$ pm2 stop tars-node-web
$ pm2 start tars-node-web

# 命令行启动界面
┌───────────────┬────┬─────────┬──────┬───────┬────────┬─────────┬────────┬──────┬────────────┬──────┬──────────┐
│ App name      │ id │ version │ mode │ pid   │ status │ restart │ uptime │ cpu  │ mem        │ user │ watching │
├───────────────┼────┼─────────┼──────┼───────┼────────┼─────────┼────────┼──────┼────────────┼──────┼──────────┤
│ tars-node-web │ 0  │ 0.1.0   │ fork │ 29648 │ online │ 0       │ 27h    │ 0.5% │ 103.1 MB   │ root │ disabled │
└───────────────┴────┴─────────┴──────┴───────┴────────┴─────────┴────────┴──────┴────────────┴──────┴──────────┘

# Web端访问地址
http://10.80.137.193:33000

# tars核心或普通服务端口占用修改
1. 登录web端界面
2. 依次点击 -> 需要修改的服务 -> 服务管理 -> 管理Servants -> 编辑 -> 绑定地址框 -> 修改'-p'后参数 -> 确认
3. 重启 -> 服务管理 -> 重启按钮
复制代码
  1. Tars用户体系模块使用

登录和管理权限模块,测试环境未部署,待补充。#TODO [ 官方文档 ]

[坑] web 管理系统中有一处 BUG,将导致“接口测试”功能总是报错。

$ sed -i "s/setName ? setName : '')/setName ? setName : '', {})/g" web/app/service/infTest/TarsClient.js

  1. tars服务手动启停
# 启动基础服务
$ cd /usr/local/app/tars
$ tarsregistry/util/start.sh
$ tarsAdminRegistry/util/start.sh
$ tarsnode/util/start.sh
$ tarsconfig/util/start.sh
$ tarspatch/util/start.sh

# 停止基础服务
$ cd /usr/local/app/tars
$ tarsregistry/util/stop.sh
$ tarsAdminRegistry/util/stop.sh
$ tarsnode/util/stop.sh
$ tarsconfig/util/stop.sh
$ tarspatch/util/stop.sh
复制代码
  1. tarsnode配置监控(crontab)
* * * * * /usr/local/app/tars/tarsnode/util/monitor.sh
复制代码
  1. 业务服务节点扩容

主要涉及tarsnode服务的手动安装,测试环境暂无需要,后续补充。#TODO

  1. 放张web端效果图

    DCache搭建测试

Tars框架部分,部署完成。

DCache部署

1. 准备工作

# 克隆DCache项目
$ git clone https://github.com/Tencent/DCache.git

# 下载第三方依赖代码
$ cd src/thirdParty
$ chmod +x thirdparty.sh
$ ./thirdparty.sh

# 编译
# [坑]自动部署脚本将tarscpp编译到framework目录下,与DCache项目指定的路径不一致
# 需要在Tars/cpp目录下从新编译。(说明DCache是按照tarscpp子项目路径规则来指定的,没毛病。)
$ cd Tars/cpp/
$ cmake . && make && make install

# 编译DCache服务
$ cd src/
$ make release
$ make all

# 分别进入以下目录,生成发布包
$ cat dir_list.txt

src/OptServer/
src/ConfigServer/
src/PropertyServer/
src/Router/
src/Proxy/
src/KVCacheServer/
src/MKVCacheServer/

$ cat dir_list.txt |while read line; do cd ${line}; make tar; cd -; done

# 将所有tar包都下载到本地
# 几种方式(看个人喜好)
- sz
- wget (python -m SimpleHTTPServer 8080)
- scp
- git
复制代码

2. 公共服务部署

  • 2.1 安装OptServer
## 数据库环境初始化
# 授权账户
mysql> grant all on *.* to 'dcache'@'%' identified by 'dcache2019' with grant option;
mysql> grant all on *.* to 'dcache'@'localhost' identified by 'dcache2019' with grant option;
mysql> grant all on *.* to 'dcache'@'platformxxxx.cdn.idc.com' identified by 'dcache2019' with grant option;
mysql> flush privileges;

# 创建数据库
$ vim src/OptServer/sql/exec-sql.sh

db_install_ip="10.80.137.193"
root="root@appinside"
mysql -h $db_install_ip -uroot -p$root -e "drop database if exists db_dcache_relation; create database db_dcache_relation"

mysql -h $db_install_ip -uroot -p$root --default-character-set=utf8 db_dcache_relation < db_dcache_relation.sql

复制代码

以下为服务部署,图片及说明大部分来源于 官方文档

DCache搭建测试

1 ) 在Tars管理平台主页点击“运维管理”,然后填写必要的信息,如下图:

DCache搭建测试

以上信息除“节点”、“OBJ绑定地址”和“端口号”外,其他必须和上图保持一致;

“节点”填写欲安装OptServer服务的机器IP,“OBJ绑定地址”和“节点”一致,“端口号”可点击右下角“获取端口”按钮自动获取。 一路点击“确定”,等待服务部署完成,最后回到Tars管理平台主页,可看到OptServer已经成功部署,如下图:

DCache搭建测试

2 ) 上传发布包

DCache搭建测试

根据上图数字序号,依次点击,得到如下提示框:

DCache搭建测试

点击“上传发布包”,在新的提示页面上传DCacheOptServer.tgz发布包,得到如下页面:

DCache搭建测试

点击“发布版本”下的输入框,选择目标发布包,然后点击“发布”,如发布成功,会显示如下页面:

DCache搭建测试

3 ) 添加配置文件

DCache搭建测试
<Main>
    # admin registry obj
    AdminRegObj = tars.tarsAdminRegistry.AdminRegObj
    <DB>
        <tars>
            charset = utf8
            dbname  = db_tars
            dbhost  = 10.80.137.193
            dbport  = 3306
            dbuser  = root
            dbpass  = root@appinside
        </tars>
        <relation>
            charset = utf8
            dbname  = db_dcache_relation
            dbhost  = 10.80.137.193
            dbport  = 3306
            dbuser  = dcache	
            dbpass  = dcache2019
        </relation>
    </DB>
    # 创建路由数据库的用户名和密码
    <CreateRouterDb>
        dbuser = router_dcache
        dbpass = router_dcache_2019
    </CreateRouterDb>
    <Release>
        # 发布服务线程数
        ThreadCount = 5
    </Release>
    <Uninstall>
        # 通知node下线服务超时时间(秒)
        Timeout = 20
        # 下线服务备份目录
        BakPath = /data/dcacheuninstall/
        # 下线服务线程数
        ThreadCount = 2
    </Uninstall>
</Main>
复制代码

根据上图,依次点击,得到下图:

DCache搭建测试

其中文件名称填“DCacheOptServer.conf”, 文件内容按照上面格式填写

4 ) 重启OptServer

DCache搭建测试

根据上图,依次点击,重启OptServer,重启成功后,“当前状态”从“Off”变成“Active”,如下图所示:

DCache搭建测试
  • 2.2 ConfigServer部署

安装ConfigServer的步骤和安装OptServer的步骤类似,除了不需要创建数据库外

添加配置时,可以参考 DCache服务配置说明

以下为我的测试配置示例:

### config
#db_dcache_relation的数据库信息
<Main>
    <DB>
        dbhost=10.80.137.193
        dbpass=dcache2019
        dbuser=dcache
        dbname=db_dcache_relation
        charset=utf8
        dbport=3306
    </DB>
</Main>
复制代码
  • 2.3 安装PropertyServer

安装PropertyServer的步骤和安装OptServer的步骤类似,除了不需要创建数据库外。 添加配置时,可以参考 DCache服务配置说明

以下为我的测试配置示例:

<Main>
    <DB>
            Sql=CREATE TABLE `${TABLE}` (`stattime` timestamp NOT NULL default  CURRENT_TIMESTAMP,`f_date` date NOT NULL default '1970-01-01',`f_tflag` varchar(8) NOT NULL default '',`app_name` varchar(20) default NULL,`module_name` varchar(50) default NULL,`group_name` varchar(100) default NULL,`idc_area` varchar(10) default NULL,`server_status` varchar(10) default NULL,`master_name` varchar(128) NOT NULL default '',`master_ip` varchar(16) default NULL,`set_name` varchar(15) NOT NULL default '',`set_area` varchar(15) NOT NULL default '',`set_id` varchar(15) NOT NULL default  '',`value1` varchar(255) default NULL,`value2` varchar(255) default NULL,`value3` varchar(255) default NULL,`value4` varchar(255) default NULL,`value5` varchar(255) default NULL,`value6` varchar(255) default NULL,`value7` varchar(255) default NULL,`value8` varchar(255) default NULL,`value9` varchar(255) default NULL,`value10` varchar(255) default NULL,`value11` varchar(255) default NULL,`value12` varchar(255) default NULL,`value13` varchar(255) default NULL,`value14` varchar(255) default NULL,`value15` varchar(255) default NULL,`value16` varchar(255) default NULL,`value17` varchar(255) default NULL,`value18` varchar(255) default NULL,`value19` varchar(255) default NULL,`value20` varchar(255) default NULL,`value21` varchar(255) default NULL,`value22` varchar(255) default NULL,`value23` varchar(255) default NULL,`value24` varchar(255) default NULL,`value25` varchar(255) default NULL,`value26` varchar(255) default NULL,`value27` varchar(255) default NULL,`value28` varchar(255) default NULL,`value29` varchar(255) default NULL,`value30` varchar(255) default NULL,`value31` varchar(255) default NULL,`value32` varchar(255) default NULL,`value33` varchar(255) default NULL,`value34` varchar(255) default NULL,`value35` varchar(255) default NULL,KEY(`f_date`,`f_tflag`,`master_name`,`master_ip`),KEY `IDX_MASTER_NAME` (`master_name`),KEY `IDX_MASTER_IP` (`master_ip`),KEY `IDX_TIME` (`stattime`),KEY `IDX_F_DATE` (`f_date`))ENGINE\=MyISAM
            TbNamePre=t_property_realtime
            AppName=dcache_idc5min_147
        <property>
            dbhost=10.80.137.193
            dbname=taf_property_147
            dbuser=dcache
            dbpass=dcache2019
            dbport=3306
            charset=gbk
        </property>
        <relation>
            charset=gbk
            dbname=db_dcache_relation
            dbhost=10.80.137.193
            dbpass=dcache2019
            dbport=3306
            dbuser=dcache
        </relation>
    </DB>
    <HashMap>
        InsertInterval=1
    </HashMap>
    <NameMap>
        BakCenterError = property1
        BinLogErr = property2
        BinLogSyn = property3
        CacheError = property4
        Chunks/OnceElement = property5
        BackUpObjAdapter.connectRate = property6
        BackUpObjAdapter.queue = property7
        BinLogObjAdapter.connectRate = property8
        BinLogObjAdapter.queue = property9
        CacheObjAdapter.connectRate = property10
        CacheObjAdapter.queue = property11
        RouterClientObjAdapter.connectRate = property12
        RouterClientObjAdapter.queue = property13
        WCacheObjAdapter.connectRate = property14
        WCacheObjAdapter.queue = property15
        asyncqueue = property16
        memsize = property17
        DataMemUsedRatio = property18
        DbError = property19
        DbException = property20
        DirtyNum = property21
        DirtyRatio = property22
        ElementCount = property23
        Exception = property24
        HitCount = property25
        MemSize = property26
        getBatchCount = property27
        setBatchCount = property28
        MKMemUsedRatio = property29
        eraseCount = property30
        eraseCountUnexpire = property31
        asyncqueue0 = property32
        Jmem0DataUsedRatio = property33
        Jmem1DataUsedRatio = property34
        ColdDataRatio = property35
        expireCount = property36
        OnlyKeyCount = property37
        BigChunk = property38
    </NameMap>
</Main>
复制代码

3. DCache管理平台安装

# 修改web配置文件(前面已经做过了)
$ cat /usr/local/app/web/config/dcacheConf.js

# 安装 tars-dcache 模块
$ cd /usr/local/app/web/
$ npm install tars-dcache --save

# 新建 db_cache_web 数据库, 并执行 Tars web service 项目 sql 文件夹下的db_cache_web.sql脚本,创建DCache web所需要的表。
mysql> CREATE DATABASE db_cache_web;
mysql> use db_cache_web;
mysql> source sql/db_cache_web.sql;

# 启动或者重启管理平台即可在管理平台看到 Dcache 管理平台的入口。
$ pm2 kill 
$ npm run prd 
复制代码

4. 创建DCache应用

DCache创建应用操作

  • 上传发布包
  • 上线模块
  • 模块配置

名词解释:

  • 模块:可以理解为mysql中table表的概念,需要创建对应模块来存储数据。两种Cache模块对应功能,上面已有说明不再赘述。
  • 应用:既多个模块的集合,该应用下的所有模块共享Proxy和Router服务,可以理解为mysql中db的概念。
  • 4.1 发布包上传

上传Proxy,Router,Cache对应的发布包是部署对应服务的前提。

1 ) Proxy发布包上传

DCache搭建测试

依次点击,然后在弹出的提示框页面选择Proxy服务的发布包,上传。点击“默认”,将该发布包设置为Proxy服务的默认发布包,如下图:

DCache搭建测试

2 ) Router发布包上传

Router发布包的上传和Proxy发布包的上传步骤相同。

3 ) Cache发布包上传

Cache发布包的上传和Proxy发布包上传步骤类似,只不过Cache有两种不同类型(KVCache和MKVCache)的发布包(本地也需分目录保存包文件),在“上传提示框”页面要注意类型匹配,如下图:

DCache搭建测试

上传完两种不同类型的发布包并分别设置为默认,得到下图:

DCache搭建测试
  • 4.2 部署和发布Proxy和Router服务
    DCache搭建测试

根据上图,依次点击“DCache”和“运维管理”,其中“应用”和“管理员”必填,可自定义,然后点击“创建应用”,得到下图:

DCache搭建测试

在输入框填写相关信息,其余保持不变,点击“创建router、proxy服务”,得到下图:

DCache搭建测试

确认填写无误后,点击“安装发布”,等待安装完成,结果如下图所示(先看个问题,稍后放图):

[坑] 在创建router、proxy服务环节,数据库的用户名和密码我采用之前创建的user: dcache, pwd: dcache2019 这一套。然后当点击安装发布时,出现以下报错:

DCache搭建测试

从报错上来看,是服务访问数据库时被denied。这让我很疑惑,dcache账户明明已经做过授权。再仔细一看发现这里报错的账户是'router_dcache',并不是我输入的用户名。难道程序做了其他操作给用户名加上了router前缀?

带着疑惑,再在数据库创建router_dcache用户并授权,密码使用与dcache相同的密码再次执行,结果仍然报错。

通过排查mysql的general log,服务确实是通过router_dcache这个用户访问的,那问题可能就出在,这个用户使用的密码也与前面输入的不一致。

又尝试了几次其他用户的密码,结果与前面相同,最后无奈只能先设置数据库跳过grant验证,这才执行成功。

这块问题后面没有查明,有清楚的朋友可以帮忙指出(抱拳)。

安装完成图如下:

DCache搭建测试
  • 4.3 上线一个KVCache模块
    DCache搭建测试

按照上图箭头依次点击,“应用”选择在部署和发布Proxy和Router服务创建的应用名称,“cache类型”选择KVCache,所填信息确认无误后,点击“下一步”进入“模块配置”步骤,如下图:

DCache搭建测试

填写必要信息之后,点击“下一步”,进入“服务配置”步骤,如下图:

DCache搭建测试

注意: 共享内存key必须是唯一的,不能在服务部署机器上已存在,否则会造成服务拉起失败,可使用ipcs命令确认。(该共享内存key为十进制数,可以自定义,不能重复)。备机部署后续补充。#TODO

必要信息填写完毕,点击“下一步”进入“安装发布”步骤,如下图:

DCache搭建测试

再次确认信息填写无误,点击“安装发布”,等待服务发布完成。刷新管理平台主页,左侧目录树出现此模块信息,如下图:

DCache搭建测试
  • 4.4 上线一个MKVCache模块

步骤和部署和发布KVCache类似,参考即可

  • 4.5 Cache配置管理
    DCache搭建测试

按照上图箭头依次点击,可添加配置项。

  • 4.6 模块和单节点的配置管理
DCache搭建测试

按照上图箭头依次点击,可在该页面上修改和添加配置。该页面的配置管理分两种类型:针对模块所有节点的配置管理和针对模块特定节点的配置管理。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Developer's Guide to Social Programming

Developer's Guide to Social Programming

Mark D. Hawker / Addison-Wesley Professional / 2010-8-25 / USD 39.99

In The Developer's Guide to Social Programming, Mark Hawker shows developers how to build applications that integrate with the major social networking sites. Unlike competitive books that focus on a s......一起来看看 《Developer's Guide to Social Programming》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具