# d7c_init **Repository Path**: d7c/d7c_init ## Basic Information - **Project Name**: d7c_init - **Description**: 该项目用于为由 d7c_plugins 插件扩展的项目提供服务中心初始化配置参数,还可用于执行数据库版本迁移。 - **Primary Language**: Java - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: http://www.d7c.top/ - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-04-06 - **Last Updated**: 2022-05-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # d7c_init ## 介绍 该项目用于为由 d7c_plugins 插件扩展的项目提供服务中心初始化配置参数,还可用于执行数据库版本迁移。 ## 软件架构 d7c_init 采用 Maven 进行项目构建系统,zookeeper 3.4.14 作为配置中心服务,支持 JDK1.8+、MySQL5.7/8+。该项目需要依赖 d7c_plugins_dbs 和 d7c_plugins_config 模块,如需源码请前往 [d7c_plugins](https://gitee.com/d7c/d7c_plugins)。 ## 安装教程 1. 克隆项目到本地 2. 导入开发工具,获取 [开发工具](https://pan.baidu.com/s/1bNUzfSV7d-kQdXC5tkl-FA),提取码:7777 ## 使用说明 ### 1. 修改 /resources/config 下的配置 #### 1.1 zookeeper.properties ``` # zookeeper 配置 # dubbo 连接 zookeeper 地址 zookeeper.address=zookeeper://127.0.0.1:2181 # zookeeper 客户端连接 zookeeper 地址 zookeeper.connectString=127.0.0.1:2181 # session timeout in milliseconds zookeeper.sessionTimeout=60000 # 连接超时时间,默认是 15s,单位是毫秒 zookeeper.connectionTimeoutMs=5000 # 初始的 sleep 时间,用于计算失败之后的每次重试 sleep 时间,计算公式:当前 sleep 时间 = baseSleepTimeMs*Math.max(1, random.nextInt(1<<(retryCount+1))) zookeeper.baseSleepTimeMs=1000 # 最大重试次数 zookeeper.maxRetries=3 # 最大 sleep 时间,如果 baseSleepTimeMs 计算出来的 sleep 时间大于此时间,将使用此值作为 sleep 时间 zookeeper.maxSleepMs=86400000 ### config 配置 # 应用配置在 zookeeper 上的根节点 config.root=/d7c # 加密字符串前缀 config.secretPrefix= # 加密字符串后缀 config.secretSuffix= # 需要上传的配置文件目录路径,此目录下所包含的子目录名为各子应用在 root 节点下的节点名,该子目录下的配置为对应子应用的独有配置 config.upload.dir=E:\\config\\upload # 加密私钥 config.private.key= # 配置文件下载到本地的目录路径,会按照上传时的目录结构下载 config.download.dir=E:\\config\\download # 解密公钥 config.public.key= # 当前应用的应用名 config.application.name=web # 当前应用独有配置的文件名,由于应用下有多个子应用可能存在相同的配置,所以要指定当前应用独有配置名 config.name=d7c # 当前应用可能用到的配置列表,该配置列表只能是上传目录根目录下的文件名,以逗号分割 config.list=redis,db # 配置模式 config.schema=CREATE # 是否从远端的配置中心获取属性,默认设置为 false 兼容从本地文件夹获取 config.centre=true # 下载远端配置的实现类 config.download.service.impl=top.d7c.plugins.config.WatcherDownloadCuratorServiceImpl ``` #### 1.2 d7c.properties ``` ####### init 系统初始化配置 # Flyway 数据库迁移 db.url=jdbc:mysql://127.0.0.1:3306/test2?useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&zeroDateTimeBehavior=convertToNull db.username=root db.password=000000 ``` ### 2. 初始化服务中心配置参数运行 top.d7c.init.ConfigInit.java 类的 main 方法 ### 3. 执行数据库版本迁移运行 top.d7c.init.db.FlywayMigration.java 类的 main 方法 ## 运行展示 ### 初始化服务中心配置参数 ``` [d7c][INFO ] [2021-06-09 15:03:17] org.apache.curator.framework.imps.CuratorFrameworkImpl.start(235) | Starting [d7c][INFO ] [2021-06-09 15:03:17] org.apache.zookeeper.Environment.logEnv(100) | Client environment:zookeeper.version=3.4.14-4c25d480e66aadd371de8bd2fd8da255ac140bcf, built on 03/06/2019 16:18 GMT [d7c][INFO ] [2021-06-09 15:03:17] org.apache.zookeeper.Environment.logEnv(100) | Client environment:host.name=192.168.1.123 [d7c][INFO ] [2021-06-09 15:03:17] org.apache.zookeeper.Environment.logEnv(100) | Client environment:java.version=1.8.0_281 [d7c][INFO ] [2021-06-09 15:03:17] org.apache.zookeeper.Environment.logEnv(100) | Client environment:java.vendor=Oracle Corporation [d7c][INFO ] [2021-06-09 15:03:17] org.apache.zookeeper.Environment.logEnv(100) | Client environment:java.home=D:\Develop\Environment\jdk1.8.0_281\jre [d7c][INFO ] [2021-06-09 15:03:17] org.apache.zookeeper.Environment.logEnv(100) | Client environment:java.class.path=D:\Develop\Environment\jdk1.8.0_281\jre\lib\resources.jar;D:\Develop\Environment\jdk1.8.0_281\jre\lib\rt.jar;D:\Develop\Environment\jdk1.8.0_281\jre\lib\jsse.jar;D:\Develop\Environment\jdk1.8.0_281\jre\lib\jce.jar;D:\Develop\Environment\jdk1.8.0_281\jre\lib\charsets.jar;D:\Develop\Environment\jdk1.8.0_281\jre\lib\jfr.jar;D:\Develop\Environment\jdk1.8.0_281\jre\lib\ext\access-bridge-64.jar;D:\Develop\Environment\jdk1.8.0_281\jre\lib\ext\cldrdata.jar;D:\Develop\Environment\jdk1.8.0_281\jre\lib\ext\dnsns.jar;D:\Develop\Environment\jdk1.8.0_281\jre\lib\ext\jaccess.jar;D:\Develop\Environment\jdk1.8.0_281\jre\lib\ext\jfxrt.jar;D:\Develop\Environment\jdk1.8.0_281\jre\lib\ext\localedata.jar;D:\Develop\Environment\jdk1.8.0_281\jre\lib\ext\nashorn.jar;D:\Develop\Environment\jdk1.8.0_281\jre\lib\ext\sunec.jar;D:\Develop\Environment\jdk1.8.0_281\jre\lib\ext\sunjce_provider.jar;D:\Develop\Environment\jdk1.8.0_281\jre\lib\ext\sunmscapi.jar;D:\Develop\Environment\jdk1.8.0_281\jre\lib\ext\sunpkcs11.jar;D:\Develop\Environment\jdk1.8.0_281\jre\lib\ext\zipfs.jar;E:\eclipseWorkspace\myproject\d7c_init\target\classes;E:\eclipseWorkspace\myproject\d7c_plugins\d7c_plugins_config\target\classes;E:\eclipseWorkspace\myproject\d7c_plugins\d7c_plugins_tools\target\classes;E:\eclipseWorkspace\myproject\d7c_plugins\d7c_plugins_net\target\classes;D:\Repository\Maven\org\apache\httpcomponents\httpclient\4.5.6\httpclient-4.5.6.jar;D:\Repository\Maven\org\apache\httpcomponents\httpcore\4.4.10\httpcore-4.4.10.jar;D:\Repository\Maven\org\apache\httpcomponents\httpmime\4.5.6\httpmime-4.5.6.jar;D:\Repository\Maven\eu\bitwalker\UserAgentUtils\1.21\UserAgentUtils-1.21.jar;D:\Repository\Maven\org\freemarker\freemarker\2.3.28\freemarker-2.3.28.jar;D:\Repository\Maven\org\bouncycastle\bcprov-jdk15on\1.64\bcprov-jdk15on-1.64.jar;D:\Repository\Maven\org\apache\poi\poi\4.1.1\poi-4.1.1.jar;D:\Repository\Maven\org\apache\commons\commons-collections4\4.4\commons-collections4-4.4.jar;D:\Repository\Maven\org\apache\commons\commons-math3\3.6.1\commons-math3-3.6.1.jar;D:\Repository\Maven\org\apache\poi\poi-ooxml\4.1.1\poi-ooxml-4.1.1.jar;D:\Repository\Maven\org\apache\poi\poi-ooxml-schemas\4.1.1\poi-ooxml-schemas-4.1.1.jar;D:\Repository\Maven\org\apache\xmlbeans\xmlbeans\3.1.0\xmlbeans-3.1.0.jar;D:\Repository\Maven\com\github\virtuald\curvesapi\1.06\curvesapi-1.06.jar;D:\Repository\Maven\net\sf\json-lib\json-lib\2.4\json-lib-2.4-jdk15.jar;D:\Repository\Maven\commons-lang\commons-lang\2.5\commons-lang-2.5.jar;D:\Repository\Maven\commons-logging\commons-logging\1.1.1\commons-logging-1.1.1.jar;D:\Repository\Maven\net\sf\ezmorph\ezmorph\1.0.6\ezmorph-1.0.6.jar;D:\Repository\Maven\io\jsonwebtoken\jjwt\0.9.0\jjwt-0.9.0.jar;D:\Repository\Maven\com\alibaba\easyexcel\2.1.7\easyexcel-2.1.7.jar;D:\Repository\Maven\cglib\cglib\3.1\cglib-3.1.jar;D:\Repository\Maven\org\ow2\asm\asm\4.2\asm-4.2.jar;D:\Repository\Maven\org\ehcache\ehcache\3.7.1\ehcache-3.7.1.jar;D:\Repository\Maven\QRCode\QRCode\3.0\QRCode-3.0.jar;D:\Repository\Maven\com\google\zxing\core\3.3.3\core-3.3.3.jar;D:\Repository\Maven\com\google\zxing\javase\3.3.3\javase-3.3.3.jar;D:\Repository\Maven\com\beust\jcommander\1.72\jcommander-1.72.jar;D:\Repository\Maven\com\github\jai-imageio\jai-imageio-core\1.4.0\jai-imageio-core-1.4.0.jar;D:\Repository\Maven\com\fasterxml\jackson\dataformat\jackson-dataformat-xml\2.10.1\jackson-dataformat-xml-2.10.1.jar;D:\Repository\Maven\com\fasterxml\jackson\module\jackson-module-jaxb-annotations\2.10.1\jackson-module-jaxb-annotations-2.10.1.jar;D:\Repository\Maven\jakarta\xml\bind\jakarta.xml.bind-api\2.3.2\jakarta.xml.bind-api-2.3.2.jar;D:\Repository\Maven\jakarta\activation\jakarta.activation-api\1.2.1\jakarta.activation-api-1.2.1.jar;D:\Repository\Maven\org\codehaus\woodstox\stax2-api\4.2\stax2-api-4.2.jar;D:\Repository\Maven\com\fasterxml\woodstox\woodstox-core\6.0.2\woodstox-core-6.0.2.jar;D:\Repository\Maven\dom4j\dom4j\1.6.1\dom4j-1.6.1.jar;D:\Repository\Maven\javax\mail\mail\1.4.7\mail-1.4.7.jar;D:\Repository\Maven\javax\activation\activation\1.1\activation-1.1.jar;E:\eclipseWorkspace\myproject\d7c_plugins\d7c_plugins_zookeeper\target\classes;D:\Repository\Maven\org\apache\zookeeper\zookeeper\3.4.14\zookeeper-3.4.14.jar;D:\Repository\Maven\com\github\spotbugs\spotbugs-annotations\3.1.9\spotbugs-annotations-3.1.9.jar;D:\Repository\Maven\jline\jline\0.9.94\jline-0.9.94.jar;D:\Repository\Maven\org\apache\yetus\audience-annotations\0.5.0\audience-annotations-0.5.0.jar;D:\Repository\Maven\org\apache\curator\curator-framework\2.12.0\curator-framework-2.12.0.jar;D:\Repository\Maven\org\apache\curator\curator-client\2.12.0\curator-client-2.12.0.jar;D:\Repository\Maven\org\apache\curator\curator-recipes\2.12.0\curator-recipes-2.12.0.jar;E:\eclipseWorkspace\myproject\d7c_plugins\d7c_plugins_dbs\target\classes;E:\eclipseWorkspace\myproject\d7c_plugins\d7c_plugins_core\target\classes;D:\Repository\Maven\org\springframework\spring-core\4.3.30.RELEASE\spring-core-4.3.30.RELEASE.jar;D:\Repository\Maven\org\springframework\spring-beans\4.3.30.RELEASE\spring-beans-4.3.30.RELEASE.jar;D:\Repository\Maven\org\springframework\spring-aop\4.3.30.RELEASE\spring-aop-4.3.30.RELEASE.jar;D:\Repository\Maven\org\springframework\spring-context\4.3.30.RELEASE\spring-context-4.3.30.RELEASE.jar;D:\Repository\Maven\org\springframework\spring-expression\4.3.30.RELEASE\spring-expression-4.3.30.RELEASE.jar;D:\Repository\Maven\org\springframework\spring-context-support\4.3.30.RELEASE\spring-context-support-4.3.30.RELEASE.jar;D:\Repository\Maven\commons-beanutils\commons-beanutils\1.9.3\commons-beanutils-1.9.3.jar;D:\Repository\Maven\commons-collections\commons-collections\3.2.2\commons-collections-3.2.2.jar;D:\Repository\Maven\commons-fileupload\commons-fileupload\1.3.3\commons-fileupload-1.3.3.jar;D:\Repository\Maven\commons-io\commons-io\2.6\commons-io-2.6.jar;D:\Repository\Maven\org\apache\commons\commons-lang3\3.8.1\commons-lang3-3.8.1.jar;D:\Repository\Maven\commons-validator\commons-validator\1.6\commons-validator-1.6.jar;D:\Repository\Maven\commons-digester\commons-digester\1.8.1\commons-digester-1.8.1.jar;D:\Repository\Maven\org\apache\commons\commons-compress\1.18\commons-compress-1.18.jar;D:\Repository\Maven\org\apache\commons\commons-pool2\2.6.2\commons-pool2-2.6.2.jar;D:\Repository\Maven\commons-codec\commons-codec\1.13\commons-codec-1.13.jar;D:\Repository\Maven\com\fasterxml\jackson\core\jackson-databind\2.10.1\jackson-databind-2.10.1.jar;D:\Repository\Maven\com\fasterxml\jackson\core\jackson-core\2.10.1\jackson-core-2.10.1.jar;D:\Repository\Maven\com\fasterxml\jackson\core\jackson-annotations\2.10.1\jackson-annotations-2.10.1.jar;D:\Repository\Maven\com\alibaba\fastjson\1.2.54\fastjson-1.2.54.jar;D:\Repository\Maven\com\google\guava\guava\28.1-jre\guava-28.1-jre.jar;D:\Repository\Maven\com\google\guava\failureaccess\1.0.1\failureaccess-1.0.1.jar;D:\Repository\Maven\com\google\guava\listenablefuture\9999.0-empty-to-avoid-conflict-with-guava\listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar;D:\Repository\Maven\com\google\code\findbugs\jsr305\3.0.2\jsr305-3.0.2.jar;D:\Repository\Maven\org\checkerframework\checker-qual\2.8.1\checker-qual-2.8.1.jar;D:\Repository\Maven\com\google\errorprone\error_prone_annotations\2.3.2\error_prone_annotations-2.3.2.jar;D:\Repository\Maven\com\google\j2objc\j2objc-annotations\1.3\j2objc-annotations-1.3.jar;D:\Repository\Maven\org\codehaus\mojo\animal-sniffer-annotations\1.18\animal-sniffer-annotations-1.18.jar;D:\Repository\Maven\org\yaml\snakeyaml\1.25\snakeyaml-1.25.jar;D:\Repository\Maven\org\springframework\spring-jdbc\4.3.30.RELEASE\spring-jdbc-4.3.30.RELEASE.jar;D:\Repository\Maven\org\springframework\spring-tx\4.3.30.RELEASE\spring-tx-4.3.30.RELEASE.jar;D:\Repository\Maven\mysql\mysql-connector-java\5.1.47\mysql-connector-java-5.1.47.jar;D:\Repository\Maven\com\alibaba\druid\1.0.9\druid-1.0.9.jar;D:\Repository\Maven\org\mybatis\mybatis\3.4.6\mybatis-3.4.6.jar;D:\Repository\Maven\org\mybatis\mybatis-spring\1.3.2\mybatis-spring-1.3.2.jar;D:\Repository\Maven\org\flywaydb\flyway-core\6.3.3\flyway-core-6.3.3.jar;D:\Repository\Maven\log4j\log4j\1.2.17\log4j-1.2.17.jar;D:\Repository\Maven\org\slf4j\slf4j-log4j12\1.7.25\slf4j-log4j12-1.7.25.jar;D:\Repository\Maven\org\slf4j\slf4j-api\1.7.25\slf4j-api-1.7.25.jar [d7c][INFO ] [2021-06-09 15:03:17] org.apache.zookeeper.Environment.logEnv(100) | Client environment:java.library.path=D:\Develop\Environment\jdk1.8.0_281\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;D:/Develop/Environment/jre1.8.0_281/bin/server;D:/Develop/Environment/jre1.8.0_281/bin;D:/Develop/Environment/jre1.8.0_281/lib/amd64;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;D:\Develop\TortoiseGit\bin;D:\Tools\Git\cmd;D:\Develop\TortoiseSVN\bin;D:\Tools\Xshell 7\;D:\Tools\Xftp 7\;C:\Users\WUJIALONG\AppData\Local\Microsoft\WindowsApps;D:\Develop\Environment\jdk1.8.0_281\jre\bin;D:\Develop\Environment\jdk1.8.0_281\bin;D:\Develop\apache-maven-3.5.2\bin;D:\DataBase\mysql-5.7.23-winx64\bin;D:\Develop\nvm;D:\Develop\nodejs;D:\Develop\nodejs\node_modules;D:\Develop\nvm\node_global;D:\Develop\nvm;D:\Develop\nodejs;D:\Develop\nodejs\node_modules;D:\Develop\nvm\node_global;D:\Develop\Environment\erl10.7\bin;D:\DataBase\rabbitmq_server-3.7.24\sbin;D:\DataBase\Redis-x64-3.2.100;;D:\Develop\eclipse;;. [d7c][INFO ] [2021-06-09 15:03:17] org.apache.zookeeper.Environment.logEnv(100) | Client environment:java.io.tmpdir=C:\Users\WUJIAL~1\AppData\Local\Temp\ [d7c][INFO ] [2021-06-09 15:03:17] org.apache.zookeeper.Environment.logEnv(100) | Client environment:java.compiler= [d7c][INFO ] [2021-06-09 15:03:17] org.apache.zookeeper.Environment.logEnv(100) | Client environment:os.name=Windows 10 [d7c][INFO ] [2021-06-09 15:03:17] org.apache.zookeeper.Environment.logEnv(100) | Client environment:os.arch=amd64 [d7c][INFO ] [2021-06-09 15:03:17] org.apache.zookeeper.Environment.logEnv(100) | Client environment:os.version=10.0 [d7c][INFO ] [2021-06-09 15:03:17] org.apache.zookeeper.Environment.logEnv(100) | Client environment:user.name=WUJIALONG [d7c][INFO ] [2021-06-09 15:03:17] org.apache.zookeeper.Environment.logEnv(100) | Client environment:user.home=C:\Users\WUJIALONG [d7c][INFO ] [2021-06-09 15:03:17] org.apache.zookeeper.Environment.logEnv(100) | Client environment:user.dir=E:\eclipseWorkspace\myproject\d7c_init [d7c][INFO ] [2021-06-09 15:03:17] org.apache.zookeeper.ZooKeeper.(442) | Initiating client connection, connectString=127.0.0.1:2181 sessionTimeout=60000 watcher=org.apache.curator.ConnectionState@4bec1f0c [d7c][INFO ] [2021-06-09 15:03:17] org.apache.zookeeper.ClientCnxn$SendThread.logStartConnect(1025) | Opening socket connection to server 127.0.0.1/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error) [d7c][INFO ] [2021-06-09 15:03:17] org.apache.zookeeper.ClientCnxn$SendThread.primeConnection(879) | Socket connection established to 127.0.0.1/127.0.0.1:2181, initiating session [d7c][INFO ] [2021-06-09 15:03:17] org.apache.zookeeper.ClientCnxn$SendThread.onConnected(1299) | Session establishment complete on server 127.0.0.1/127.0.0.1:2181, sessionid = 0x10003528da7005f, negotiated timeout = 40000 [d7c][INFO ] [2021-06-09 15:03:17] org.apache.curator.framework.state.ConnectionStateManager.postState(228) | State change: CONNECTED [d7c][INFO ] [2021-06-09 15:03:17] org.apache.curator.framework.imps.CuratorFrameworkImpl.backgroundOperationsLoop(821) | backgroundOperationsLoop exiting [d7c][INFO ] [2021-06-09 15:03:17] org.apache.zookeeper.ZooKeeper.close(693) | Session: 0x10003528da7005f closed [d7c][INFO ] [2021-06-09 15:03:17] top.d7c.init.ConfigInit.main(32) | =======> d7c 系统参数初始化完成,处理结果:true [d7c][INFO ] [2021-06-09 15:03:17] org.apache.zookeeper.ClientCnxn$EventThread.run(522) | EventThread shut down for session: 0x10003528da7005f ``` ![服务中心 zookeeper 上数据](https://images.gitee.com/uploads/images/2021/0609/151001_fbc63dc1_1070311.png "QQ图片20210609150454.png") ## 捐助打赏 如果您觉得我们的开源软件对你有所帮助,请扫下方二维码打赏我们一杯咖啡。 ![微信收款码](https://images.gitee.com/uploads/images/2021/0222/174352_b22739f5_1070311.jpeg "微信收款码.jpg") ![微信赞赏码](https://images.gitee.com/uploads/images/2021/0222/174521_67e18b39_1070311.jpeg "微信赞赏码.jpg") ![支付宝收款码](https://images.gitee.com/uploads/images/2021/0222/174540_94a9ac41_1070311.jpeg "支付宝收款码.jpg") ## 参与贡献 1. Fork 本仓库 2. 新建 d7c_init_xxx 分支 3. 提交代码 4. 新建 Pull Request ## 码云特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目 5. 码云官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)