Jusene's Blog

Jusene's Blog

There are more ways than difficulties

python 网络服务器框架socketserver

socketserver

socketserver模块有四种基本的服务器类型:

  • socketserver.TCPServer(server_address,RequestHandlerClass,bind_and_activate=True)
    这使用了网络TCP协议,它提供了客户机和服务器之间的连续数据流。如果bind_and_activate是真的,构造函数会自动尝试调用server_bind()和server_activate()。其他参数传递给BaseServer基类。
  • class socketserver.UDPServer(server_address, RequestHandlerClass, bind_and_activate=True)
    它使用网络UDP协议,它是在传输过程中可能出现故障或丢失信息的离散信息包。参数与TCPServer相同。
  • class socketserver.UnixStreamServer(server_address, RequestHandlerClass, bind_and_activate=True)¶
  • class socketserver.UnixDatagramServer(server_address, RequestHandlerClass, bind_and_activate=True)¶
Python argparse参数解析

argparse

argparse是python内置的用于命令选项与参数解析的模块,通过在程序中定义好的需要的参数将从sys.argv中解析出这些参数,并自动生成帮助和使用信息。

Saltstack 学习笔记(三)

salt job管理

salt每次发布一个任务都会为该服务创建一个j。obid,不同的jobid对应一个独立的操作任务,master默认会缓存24小时的所有job的详细操作。

Saltstack 学习笔记(二)

Jinja2模版扩展主机状态

  1. Jinja2变量
    1
    ~]# cat var.sls
    2
    {% set var='hello world' %}
    3
    test_var:
    4
      cmd.run:
    5
        - name: echo "var is {{var}}"
    6
    ~]# salt '*' state.sls var
Saltstack 学习笔记(一)

SaltStack基本架构

  • 第一种: master-minion,这种架构master和所有minion都直接连接,minion接受来自master的指令,完成命令执行或配置管理。
  • 第二种: master-syndic-minion,这种架构中master通过sydic对minion进行管理,可以进行多级扩展。
  • 第三种: 无master的minion,这种架构中minion不受任何master控制,通过本地运行即可完成相关工作。
Docker flannel网络

flannel

flannel是CoreOS开发的容器网络解决方案。flannel为每个host分配一个subnet,容器从此subnet中分配IP,这些IP可以在host间路由,容器间无需NAT和port mapping就可以跨主机通信。

Docker macvlan跨主机通信

macvlan

macvlan是linux kernel的模块,其功能是允许在同一个物理卡上配置多个mac地址,即多个interface, 每个insterface可以配置自己的IP。

macvlan的最大优点就是性能极好,相比其他实现,macvlan不需要创建Linux Bridge,而是通过以太interface连接到物理网络。

Docker overlay跨主机通信

driver

Docker Host内容器通信,none、host、bridge、joind容器解决了单个Docker Host内的容器通信问题,而multi host容器间的通信问题的解决方案:

  • docker network: overlay,macvlan
  • third part network: flannel、weave、calico
avatar
Jusene
纸上得来终觉浅 绝知此事要躬行