当前位置: 首页 > news >正文

软件启动时加配置文件 vs 不加配置文件

一、基本概念

  1. 不加配置文件启动

    • 直接执行启动命令,使用软件自带的默认参数。

    • 方便、快速,适合测试环境。

    • 缺点:灵活性差、配置不可控、不安全。

    redis-server
    zookeeper-server-start.sh
    kafka-server-start.sh
    
  2. 指定配置文件启动

    • 启动时加载外部配置文件,覆盖默认参数。

    • 灵活可控,适合生产环境。

    redis-server /etc/redis/redis.conf
    zookeeper-server-start.sh /usr/local/zookeeper/conf/zoo.cfg
    kafka-server-start.sh /usr/local/kafka/config/server.properties
    

二、Redis 示例

  • 不加配置文件

    • 端口:6379

    • 无密码(安全性差)

    • 数据目录:当前目录

    • 日志输出:终端

  • 指定配置文件(redis.conf)

    例如下面的是在redis.conf的配置
    port 6380
    requirepass mypassword
    dir /var/lib/redis
    logfile /var/log/redis.log
    
    • 端口改为 6380

    • 启用密码 mypassword

    • 数据文件存储在 /var/lib/redis

    • 日志写入 /var/log/redis.log


三、ZooKeeper 示例

  • 不加配置文件

    • 默认数据目录 /tmp/zookeeper

    • 客户端端口:2181

    • 重启可能丢数据(因为 /tmp 会清理)

  • 指定配置文件(zoo.cfg)

    例如这个是在zoo.cfg下写的配置
    dataDir=/usr/local/zookeeper/data
    clientPort=2181
    tickTime=2000
    initLimit=5
    syncLimit=2
    
    • 数据保存在固定目录 /usr/local/zookeeper/data

    • 端口仍是 2181(可修改)

    • tickTime、initLimit、syncLimit 用于集群稳定性配置


四、Kafka 示例

  • 不加配置文件

    • 很少直接这样做,因为 Kafka 必须依赖配置文件才能运行(尤其是要指定 ZooKeeper 或 KRaft 模式)。

    • 默认配置在 config/server.properties

  • 指定配置文件(server.properties)

    例如这是在server.properties下写的配置
    broker.id=0
    listeners=PLAINTEXT://:9092
    log.dirs=/usr/local/kafka/logs
    zookeeper.connect=localhost:2181
    
    • 指定 broker 编号

    • 服务监听端口 9092

    • 日志保存路径 /usr/local/kafka/logs

    • 关联 ZooKeeper 地址


五、总结对比

软件不加配置文件(默认模式)指定配置文件(推荐方式)
Redis6379 端口、无密码、数据在当前目录、日志输出到终端自定义端口/密码/数据目录/日志路径,适合生产
ZooKeeper数据在 /tmp/zookeeper、端口 2181、可能丢数据自定义数据目录、端口、集群参数,适合持久运行
Kafka基本不可用(需要配置)必须配置 broker.id、监听地址、日志目录、ZooKeeper/KRaft 模式

一句话总结

  • 不加配置文件:走默认参数,适合测试。

  • 加配置文件:走自定义规则,适合生产,几乎所有生产环境都必须这样做。

http://www.xdnf.cn/news/1466335.html

相关文章:

  • Go 1.25.1基本包
  • 凌力尔特(LINEAR)滤波器LTC1068的二阶滤波器模块设计
  • STM32 USBx Device HID standalone 移植示例 LAT1466
  • 全球企业内容管理ECM市场规模增长趋势与未来机遇解析
  • (4)什么时候引入Seata‘‘
  • 黄金上门回收小程序开发
  • 多路转接介绍及代码实现
  • Rust 基础语法
  • 设计模式笔记
  • 从技术选型到现场配置:DDC 楼宇自控系统全流程落地方案(2025 版)
  • 织信低代码:用更聪明的方式,把想法变成现实!
  • 多语言Qt Linguist
  • 职场礼仪实训室:健康管理专业人才培养的核心支柱与创新实践
  • Springboot实现国际化(MessageSource)
  • AI Compass前沿速览:Kimi K2、InfinityHuman-AI数字人、3D-AI桌面伴侣、叠叠社–AI虚拟陪伴
  • 查询语言的进化:SQL之后,为什么是GQL?数据世界正在改变
  • 生态 | 华院计算与深至科技达成战略合作,携手推动AI+医学影像算法升级迭代
  • 代码随想录70期day3
  • 算法(keep learning)
  • 外包干了3年,技术退步太明显了。。。。。
  • 计算机网络1 第一章 概述——以寄邮件比喻整个流程
  • threeJS 实现开花的效果
  • 概率论第三讲——多维随机变量及其分布
  • 要搞清楚你为什么上班
  • 大型语言模型SEO(LLM SEO)完全手册:驾驭搜索新范式
  • 深入剖析 ThreadLocal 及其生态系统:从基础用法到源码实现,从设计思想到工程实践
  • Android14 init启动Zygote详解
  • 必知!机器人的分类与应用:RPA、人形与工业机器人
  • 大数据毕业设计选题推荐-基于大数据的高级大豆农业数据分析与可视化系统-Hadoop-Spark-数据可视化-BigData
  • solidity函数篇