• yconsole使用说明


    介绍:

      yconsole是yhd用于管理缓存的工具(python实现),它的主要功能是为各个应用分配和管理缓存,以及错误修复。和它配合使用的还有ycache-client、yagent、zookeeper。参见:ycache分布式缓存框架

    当应用需要缓存时,仅需要说需要多少空间的缓存,然后yconsole会从缓存系统中按照一定策略分配缓存空间给这个应用。这个缓存空间用一个"cache-id"表示,应用仅需要在ycache-client中配置这个cacheid,就能使用这些缓存。应用不需要知道缓存在哪里,ip是什么,它只知道自己拥有这么多的缓存空间并总是能使用的。

    依赖:主要是zk的client:kazoo

    import os, sys, subprocess,time
    import threading
    from kazoo.client import KazooClient
    from kazoo.exceptions import *
     
    定制参数:

    #指定是memcached或者redis,同时也是zk上的对应的目录名称。
    YCONSOLED_MODE           = "ycache"     #It should be "redis" for redis, while "ycache" for memcached. 
    #对外显示的程序名字,没什么用。
    YCONSOLED_NAME           = "yconsole"  #Program name for log.
    #操作缓存的粒度(或者说单位)。也就是在命令行指定1,对应的缓存大小。
    CACHE_GRANULAR           = 1024  #defautl granularity for cache size (to Mb).
    #是否允许指定已经被其他cacheid分配的实例,然后将其分配给另一个cachid;
    ALLOW_USE_ASSIGNED       = False       #Whether allow to assigned an instance to different cache id when the instance is specified by command. 
    是否允许使用状态为deactive的实例
    ALLOW_USE_DEACTIVE       = False       #Whether allow to assigned a deactive instance  when the instance is specified by command. 
    是否打印颜色。不支持打印颜色的可以设置为fasle,否则会有乱码。颜色就是特殊字符。
    PRINT_PRETTY             = True        #Print with color.
     
    #默认的读取配置中心的url。仅用于读取zk的地址。读取优先级为:
      #1 当前目录的yconsole.conf配置文件(例如:zoo_svr=127.0.0.1:2181)
      #2 这个路径配置文件:/etc/ycache/yagent/yagent.conf
      #3 到下面的配置文件找配置中心的zk服务器。
    DEFAULT_ENV_INI_FILE     = "/var/www/config/env.ini"   #for getting zk server address.
    #重试次数,基本上没用
    OPERATION_RETRY          = 3
     
    配置说明:

      yconsole [ ls    | list-cacheid   ]

    # 显示所有的cacheid对应的cache实例,以及实际占用的cache总空间,以及当前可用空间。如果有任何一个实例为deactive,则高亮;如果所有实例都deactive,则标红加粗;
     
     
       yconsole [ lspc  | list-machine   ]

    # 显示所有的server的状态、信息、对应的cache实例,以及每个实例对应的cacheid。
       yconsole [ lsser | list-server    ]

    # 显示所有的server的状态、信息(包括实例总数,yagent版本,cache版本,cache实例大小,分组,优先级,服务器位置),如果这个server为down,则标红加粗。
     
     
      yconsole [ rmid  | remove-cacheid ] cacheid

    参数:
      cacheid: string, 要删除的cacheid
    #删除一个cachid。其实就是把zk上对应的节点删除。


       yconsole [ rmser | remove-server  ] ServerIP

    参数:
       ServerIP   : string, 要删除的服务器ip
    #删除一台服务器。 其实就是把zk上对应的节点删除。注意:只有在这台服务器上的实例没有被使用,才能被删除;

       yconsole [ add   | add-cacheid    ] cacheid size(int,Gb) [min(0) max(4) [group(default) [priority(100) ] ] ]

    #添加一个cacheid。
    参数:
       cacheid : string,cacheid的名字,应该以pool名字为前缀,方便管理;
       size: int,指定要分配cache的大小(以CACHE_GRANULAR为单位)  
       min(0) max(4):指定要分配的单个cache实例大小的范围。默认为[0,4]
       group(default):指定要从那个分组的服务器分配cache实例,默认是default分组
       priority(100) :指定要从大于某个优先级的服务器上分配实例,默认是100.
     
    如果存在很多满足上面参数要求的实例,在选择每一个实例时,则按照以下偏好分配:
    分配优先级:
       Cache instances are assigned bias on a cache server as following:
         1. Least number of instance have been assigned; or   优先这个cachid使用最少cache实例的服务器的实例;否则
         2. Largest priority; or  优先使用优先级高的服务器的实例;否则
         3. Largest number of available instance  优先使用可用实例最多的实例; 否则
         4. Largest cache size 优先使用cache空间大的实例;否则
         5. use the cache with smaller ip address.   使用ip地址小的cache实例
       yconsole [ mod   | mod-cacheid    ] cacheid instance1,instance2...

    #修改一个cacheid对应的cache实例
    参数:
      cacheid: string, 要删除的cacheid
      cacheid instance1,instance2... :string, 新的cache实例,例如192.1.1.1:8888,192.2.2.2:9999
       yconsole [ app   | append-cacheid ] cacheid {instance1,...| size(int, Gb)} [min(0) max(4) [group(default) [priority(100) ] ] ] 

       #向一个cacheid添加cache实例。
    参数:
       cacheid : string,cacheid的名字,应该以pool名字为前缀,方便管理;
       size: int,指定要分配cache的大小(以CACHE_GRANULAR为单位)  
       cacheid instance1,instance2... :string, 新的cache实例,例如192.1.1.1:8888,192.2.2.2:9999   
       min(0) max(4):指定要分配的单个cache实例大小的范围。默认为[0,4]
       group(default):指定要从那个分组的服务器分配cache实例,默认是default分组
       priority(100) :指定要从大于某个优先级的服务器上分配实例,默认是100.

        yconsole [ cop   | copy-cacheid   ] fCacheid toCacheid...

    #用一个旧的cacheid对应的内容创建一个新的cacheid
    参数:
       fCacheid    : string, 源cacheid
       toCacheid    : string, 新cacheid   
       yconsole [ fix   | fix-cacheid    ] [Cacheid | all] [fix-size(int, Gb,0)]

    #快速修复命令。检测一个(或所有)cacheid是否至少存在一个活跃的实例,如果没有,就分配fix-size大小的空间给它;如果一个cacheid仅有一个实例,则高亮这个cacheid
    参数: 
        Cacheid | all: string,指定cacheid,当为all时,代表所有cacheid。
        fix-size(int, Gb,0): int,指定分配多少可用空间给那些有故障的cacheid。当为0时,只检测状态,不分配空间。
     
    yconsole [ test  | test-cacheid   ] [Cacheid | all] [set-delay(int,ms,10),get-delay(int,ms,10)]

    参数: 
        Cacheid | all: string,指定cacheid,当为all时,代表所有cacheid;
        set-delay(int,ms,10): set操作延时的阈值,超过了会认为是warning
        get-delay(int,ms,10):get操作延时的阈值,超过了会认为是warning

     
     
     





  • 相关阅读:
    Log4net的一点改进
    SONY的几款秋季新品都还是很不错的
    在VisualStudio 工具箱中隐藏用户控件
    WPF中的DesignMode判断
    SONY的一款Win8平板
    .Net中的不可变集合(Immutable Collection)简介
    C++ 11中几个我比较喜欢的语法(三)
    很好用的谷歌字体以及Gravatar头像一键替换WordPress插件----WP Acceleration for China 插件
    关于微信获取access_token接口,返回值为-1000的问题
    主合同与补充合同的区别有哪些?
  • 原文地址:https://www.cnblogs.com/zwCHAN/p/3994137.html
Copyright © 2020-2023  润新知