文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

改了配置,不想重启,怎么整?

2024-12-24 21:58

关注

不妨设,读取与设置超时的伪代码如下:

  1. // 从配置文件中读取超时配置 
  2. timeout = CGlobalConf::readFileConf(“timeout”); 
  3. // 设置请求超时阈值 
  4. CConnectionPool::setTimeout(timeout); 

不重启服务,重新载入配置的常见方式有3这么几种,不难但很使用,花1分钟和大家说一说。

方案一:发信号触发配置重载

这种方法无需加入任何组件,新增一个信号捕捉函数,来处理配置的重新载入。

  1. // 服务启动时,设置ctrl+c回调函数 
  2. signal(SIGINT, sigint_shenjian_process); 
  3.   
  4. // 捕获ctrl+c时,执行配置重新载入动作 
  5. void sigint_shenjian_process(int){ 
  6.          //从配置中读取超时配置 
  7.          timeoutCGlobalConf::readFileConf(“timeout”); 
  8.          //设置请求超时阈值 
  9.          CConnectionPool::setTimeout(timeout); 
  10.   

当需要变更配置时,只需要:

画外音:啥,不知道如何向服务发信号?

方案二:检测配置文件变化,自动重新载入

这种方法无需手动发送信号,修改完配置文件,自动检测,自动载入,需要加入文件监控组件。

画外音:这类组件开源的也不少。

文件监控组件如何能监控文件的变化呢?

别想复杂了,可以定期检查文件的md5或者last_modify_time。

  1. // 服务启动时,初始化 
  2. CFileMonitor::init(){ 
  3.  // 获取初始md5 
  4.  old_md5=xxx
  5.   
  6. // 启动一个进程,监控文件变化 
  7. CFileMonitor::start(){ 
  8.  while(1){ // 循环检查 
  9.  // 获取最新md5 
  10.  now_md5=xxx
  11.  // 比对md5是否变化,如果变化 
  12.  if(now_md5!=old_md5){ 
  13.          //从配置中读取超时配置 
  14.          timeoutCGlobalConf::readFileConf(“timeout”); 
  15.          //设置请求超时阈值 
  16.          CConnectionPool::setTimeout(timeout); 
  17.          //修改md5 
  18.          old_md5=now_md5
  19.  } 
  20.  // 一秒后再检查 
  21.  sleep(1000); 
  22.  } 

方案三:配置中心,配置变化时回调

次方案抛弃了配置文件,需要引入配置中心:

  1. // 服务启动时,从配置中心获取配置,并注册回调函数 
  2. timeout = CConfCenter::(“timeout”, callback_shenjian); 
  3. // 设置请求超时阈值 
  4. CConnectionPool::setTimeout(timeout); 
  5.   
  6. void callback_shenjian(timeout){ 
  7.          //在配置中心修改配置时,会收到回调 
  8.          CConnectionPool::setTimeout(timeout); 
  9.   

修改配置,不重启服务,上面三种方式都很常见,不难但实用。

画外音:特别是前两种方式,瞬间就能实现。

希望大家有收获。

【本文为51CTO专栏作者“58沈剑”原创稿件,转载请联系原作者】

戳这里,看该作者更多好文

来源:51CTO专栏内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯