码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 写日志模块与zookeeper的作用


    目录

    • 写日志模块
      • 怎么实现写日志模块
      • 为什么要设置分离属性,守护线程来写日志?
    • zookeeper是用来干什么的
      • zookeeper为什么选用多线程版本mt 而不是单线程版本st
      • zookeeper的节点需设置为临时节点
      • zookeeper的watcher机制
        • watcher机制是什么?
      • zookeeper别的功能

    写日志模块

      写日志是个磁盘IO,很慢,如果让主线程来等是很耗时间的,所以肯定需要开线程。

    怎么实现写日志模块

      需要一个日志队列,一把锁,一个条件变量。当多线程写日志的时候将队列上锁,写完后下锁并通知其他线程队列不为空了可以取数据了。(在静态获得实例函数中定义静态变量,这样所有线程操作的都是同一个静态变量)

    为什么要设置分离属性,守护线程来写日志?

      单纯为了懒得回收这个线程的资源,怕它变成僵尸线程。

    zookeeper是用来干什么的

      解除耦合,在本项目中起到服务注册中心。将在服务端的方法都注册到znode节点上去,节点的内容储存该服务端的ip地址和端口(znode节点只存储简单的byte字节数组),当客户端访问的时候先访问服务注册中心,如果服务注册中心有相应的方法就get节点的内容,然后根据内容的ip与端口进行远程程序调用。

    zookeeper为什么选用多线程版本mt 而不是单线程版本st

      因为在init的时候会创建多个线程,zookeeper的API提供了三个线程,分别是

    • API调用线程 :负责创建句柄,也就是当前线程,执行zookeeper_init的线程

    • 网络I/O线程 :负责与zkserver服务端连接

    • watcher回调线程:完成watcher机制

    zookeeper的节点需设置为临时节点

      zk服务端和服务端通过心跳包进行通信,证明服务方法还可以使用,当断开连接的时候,心跳包不再发送了就将服务注册中心上的相应方法节点自动删除。心跳包是由zookeeper帮我们发送的。

    zookeeper的watcher机制

    watcher机制是什么?

      通知回调机制,用来监听父节点中子节点的变化,如果有变化,会有zk主动的告知。本项目这个回调函数起到的作用是zkserver给zkclient发通知,根据宏值的判断连接是否成功,连接成功后给信号量加一,主线程就继续执行了。
      当有服务注册的时候,监听watcher只能是一次性的,每次触发后需要重复设置。

    zookeeper别的功能

      zookeeper还有全局分布式锁的功能,同一个进程内的两个线程可以有锁来控制临界资源但是两个进程就没有办法了,就需要用到全局分布式锁的功能。

  • 相关阅读:
    chatgpt赋能python:Python中如何实现内循环到外循环
    【软考笔记】 (下午题)数据流图
    高级套接字
    JavaBean事件
    公园【百度之星】/图论+dijkstra
    Spring是如何管理事务的?@Transactional注解详解
    LeetCode——动态规划篇(六)
    UART、SPI、I2C通信协议超全入门教程
    基于分水岭分割算法的CT图像智能诊断研究-含Matlab代码
    SpringBoot 01: JavaConfig + @ImportResource + @PropertyResource
  • 原文地址:https://blog.csdn.net/weixin_60208935/article/details/127697782
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号