Kafka Notes

Tutorials

设计目标

  • 消息持久化,时间复杂度 o(1),TB 级以上数据
  • 高吞吐量

    • 消息传输速率 100KB/s (单机模式下)

Generate Python Documentation

Tools

  • pydoc

    • python 自带工具,命令行,功能简单
  • pdoc

    • 无需配置,界面美观,功能简单
  • sphinx

    • 功能强大,需要配置
  • doxygen

    • 古老工具
    • 可以解析 依赖和继承关系

msys2

shell 分类

参考:

区别:

  • msys

    • cygwin
  • Msys mingw 64

    • x86_x64 windows
    • 提供基于 windows 的 程序和 mingw-w64 编译系统
  • Msys mingw 32

    • x86 windows

启动不同 msystem 的方法

参考:

  1. 使用 msys2_shell.cmd

    1
    
    E:\soft\msys64\msys2_shell.cmd -mingw64 -shell zsh
  2. 使用 env 命令

    1
    
    e:\msys64\usr\bin\env MSYSTEM=MSYS /usr/bin/bash -li
  3. .exe 工具

Python Locker Implementation Notes ---- python 中锁的实现

分布式锁

portalocker.RedisLock

  • 实现方式

    • redis pubsub channel
  • 创建

    1
    2
    3
    4
    5
    6
    7
    8
    
    import portalocker
    
    lock = portalocker.RedisLock('some_lock_channel_name')
    
    with lock:
    print('do something here')
    
    # *** Redis 连接设定
    • Redis 连接设定

      • 使用 redis.client.Redis 类 实现
    • 用 RedisLock 可选关键字参数 redis_kwargs: typing.Optional[typing.Dict] = None 指定
    • 参考

       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      14
      
      class Redis:
          def __init__(self, host='localhost', port=6379,
                   db=0, password=None, socket_timeout=None,
                   socket_connect_timeout=None,
                   socket_keepalive=None, socket_keepalive_options=None,
                   connection_pool=None, unix_socket_path=None,
                   encoding='utf-8', encoding_errors='strict',
                   charset=None, errors=None,
                   decode_responses=False, retry_on_timeout=False,
                   ssl=False, ssl_keyfile=None, ssl_certfile=None,
                   ssl_cert_reqs='required', ssl_ca_certs=None,
                   ssl_check_hostname=False,
                   max_connections=None, single_connection_client=False,
                   health_check_interval=0, client_name=None, username=None):

python-redis-lock pip 包实现