Ejemplo n.º 1
0
    def __init__(self, server_node, iface_cls, config):

        self._section_name = utils.get_module(__name__)
        self._logger = logging.getLogger(__name__)
        self._host = server_node.split(":")[0]
        self._port = int(server_node.split(":")[1])
        self._iface_cls = iface_cls

        self._get_conn_timeout = config.getint(self._section_name, "pool_timeout",
                                               default=settings.DEFAULT_POOL_TIMEOUT)
        self._socket_timeout = config.getint(self._section_name, "request_timeout",
                                             default=settings.DEFAULT_REQUEST_TIMEOUT) * 1000
        self._size = config.getint(self._section_name, "pool_size", default=settings.DEFAULT_POOL_SIZE)

        self._c_module_serialize = config.getboolean(self._section_name, "c_module_serialize",
                                                     default=settings.USE_C_MODULE_SERIALIZE)

        self._closed = False
        if ASYNC_TAG:
            from gevent.lock import BoundedSemaphore
            from gevent import queue as Queue
            self._semaphore = BoundedSemaphore(self._size)
            self._connection_queue = Queue.LifoQueue(self._size)
            self._QueueEmpty = Queue.Empty
        else:
            from threading import BoundedSemaphore
            import Queue
            self._semaphore = BoundedSemaphore(self._size)
            self._connection_queue = Queue.LifoQueue(self._size)
            self._QueueEmpty = Queue.Empty
Ejemplo n.º 2
0
    def __init__(self, hosts, config):
        self._section_name = utils.get_module(__name__)
        self._max_delay = config.getint(
            self._section_name, "max_retry_delay", default=settings.DEFAULT_ZK_RETRY_MAX_DELAY
        )

        self._timeout = config.getint(self._section_name, "time_out", default=settings.DEFAULT_ZK_CONNECTION_TIMEOUT)
        connection_retry = KazooRetry(max_tries=-1, max_delay=self._max_delay)
        super(HARpcZKClientManager, self).__init__(
            hosts=hosts, timeout=self._timeout, connection_retry=connection_retry
        )
Ejemplo n.º 3
0
    def __init__(self, strategy, dynamic_host_set, config, collector=None):
        self._section_name = utils.get_module(__name__)
        self._logger = logging.getLogger(__name__)
        self._strategy = strategy
        self._collector = collector
        self._heartbeat_interval = config.getint(self._section_name, "heartbeat_interval",
                                                 default=settings.DEFAULT_HEARTBEAT_INTERVAL)
        self._monitor = settings.SERVICE_MONITOR
        self._dynamic_host_set = dynamic_host_set
        self._dynamic_host_set.set_onchange(self._create_hostset_onchange())
        self._result_options = {"SUCCESS": self._success, "TIMEOUT": self._timeout, "DEAD": self._dead,
                                "FAILED": self._failed}

        self.spawn(self._heartbeat)
Ejemplo n.º 4
0
    def __init__(self, processor, handler, config):
        self._logger = logging.getLogger(__name__)
        self._section_name = utils.get_module(__name__)
        self._server = None
        self._service_name = config.get(self._section_name, "service", required=True)
        self._port = config.getint(self._section_name, "port", required=True)
        self._zk_connect_str = config.get(self._section_name, "zk_connect_str", required=True)
        self._auth_user = config.get(self._section_name, "auth_user", required=True)
        self._auth_password = config.get(self._section_name, "auth_password", required=True)
        self._monitor = config.getboolean(self._section_name, "monitor", default=settings.SERVICE_MONITOR)
        self._c_module_serialize = config.getboolean(self._section_name, "c_module_serialize",
                                                     default=settings.USE_C_MODULE_SERIALIZE)
        self._server_name = config.get(self._section_name, "name")
        self._owner = config.get(self._section_name, "owner")

        hosts = "%s/%s" % (self._zk_connect_str, settings.DEFAULT_ZK_NAMESPACE_ROOT)

        self._server_path = "%s/%s" % (self._service_name, settings.DEFAULT_ZK_NAMESPACE_SERVERS)
        self._statistic_path = "%s/%s/%s" % (self._service_name, settings.DEFAULT_ZK_NAMESPACE_STATISTICS,
                                             settings.DEFAULT_ZK_NAMESPACE_SERVERS)
        # create zk acl
        self._acls = []
        self._acls.append(make_digest_acl(self._auth_user, self._auth_password, all=True))
        self._acls.append(make_acl("world", "anyone", read=True))
        # create zk_client
        self._zkclient = HARpcZKClientManager.make(hosts, config, "server")
        self._zkclient.add_auth("digest", "%s:%s" % (self._auth_user, self._auth_password))

        # create zkpath
        if not self._zkclient.exists(self._service_name):
            self._zkclient.create(self._service_name, makepath=True)
        if not self._zkclient.exists(self._server_path):
            self._zkclient.create(self._server_path, acl=self._acls)
        if not self._zkclient.exists(self._statistic_path):
            self._zkclient.create(self._statistic_path, makepath=True)

        self.transport = TSocket.TServerSocket(port=self._port)
        self.tfactory = TTransport.TBufferedTransportFactory()

        if self._monitor:
            self._collector = StatisticsCollector(self._zkclient, config, is_server=True)
            self._processor = self._statistics_wrapper(processor)(handler)
        else:
            self._processor = processor(handler)

        if self._c_module_serialize:
            self.pfactory = TBinaryProtocol.TBinaryProtocolAcceleratedFactory()
        else:
            self.pfactory = TBinaryProtocol.TBinaryProtocolFactory()
Ejemplo n.º 5
0
    def __init__(self, hosts, config):
        self._section_name = utils.get_module(__name__)
        self._max_delay = config.getint(
            self._section_name,
            "max_retry_delay",
            default=settings.DEFAULT_ZK_RETRY_MAX_DELAY)

        self._timeout = config.getint(
            self._section_name,
            "time_out",
            default=settings.DEFAULT_ZK_CONNECTION_TIMEOUT)
        connection_retry = KazooRetry(max_tries=-1, max_delay=self._max_delay)
        super(HARpcZKClientManager,
              self).__init__(hosts=hosts,
                             timeout=self._timeout,
                             connection_retry=connection_retry)
Ejemplo n.º 6
0
 def __init__(self, zkclient, config, is_server=False):
     self._section_name = utils.get_module(__name__)
     self._logger = logging.getLogger(__name__)
     self._zkclient = zkclient
     self._is_server = is_server
     self.queue = multiprocessing.Queue()
     self._info = {}
     self._current_info = StatisticsInfo()
     self._total_info = StatisticsInfo()
     self._lock = threading.RLock()
     self._path = None
     self._start_time = None
     self._last_update_time = None
     self.__class__.collect = self.__class__._update_info
     self._collect_interval = config.getint(self._section_name, "interval",
                                            default=settings.DEFAULT_SEND_INFO_INTERVAL)
     self._collect_nodes = config.getint(self._section_name, "node_num",
                                         default=settings.DEFAULT_MAX_DETAILINFO_NODE_NUM)
     if self._is_server:
         self.__class__.collect = self.__class__._server_collect
Ejemplo n.º 7
0
    def __init__(self, strategy, dynamic_host_set, config, collector=None):
        self._section_name = utils.get_module(__name__)
        self._logger = logging.getLogger(__name__)
        self._strategy = strategy
        self._collector = collector
        self._heartbeat_interval = config.getint(
            self._section_name,
            "heartbeat_interval",
            default=settings.DEFAULT_HEARTBEAT_INTERVAL)
        self._monitor = settings.SERVICE_MONITOR
        self._dynamic_host_set = dynamic_host_set
        self._dynamic_host_set.set_onchange(self._create_hostset_onchange())
        self._result_options = {
            "SUCCESS": self._success,
            "TIMEOUT": self._timeout,
            "DEAD": self._dead,
            "FAILED": self._failed
        }

        self.spawn(self._heartbeat)
Ejemplo n.º 8
0
    def __init__(self, server_node, iface_cls, config):

        self._section_name = utils.get_module(__name__)
        self._logger = logging.getLogger(__name__)
        self._host = server_node.split(":")[0]
        self._port = int(server_node.split(":")[1])
        self._iface_cls = iface_cls

        self._get_conn_timeout = config.getint(
            self._section_name,
            "pool_timeout",
            default=settings.DEFAULT_POOL_TIMEOUT)
        self._socket_timeout = config.getint(
            self._section_name,
            "request_timeout",
            default=settings.DEFAULT_REQUEST_TIMEOUT) * 1000
        self._size = config.getint(self._section_name,
                                   "pool_size",
                                   default=settings.DEFAULT_POOL_SIZE)

        self._c_module_serialize = config.getboolean(
            self._section_name,
            "c_module_serialize",
            default=settings.USE_C_MODULE_SERIALIZE)

        self._closed = False
        if ASYNC_TAG:
            from gevent.lock import BoundedSemaphore
            from gevent import queue as Queue
            self._semaphore = BoundedSemaphore(self._size)
            self._connection_queue = Queue.LifoQueue(self._size)
            self._QueueEmpty = Queue.Empty
        else:
            from threading import BoundedSemaphore
            import Queue
            self._semaphore = BoundedSemaphore(self._size)
            self._connection_queue = Queue.LifoQueue(self._size)
            self._QueueEmpty = Queue.Empty
Ejemplo n.º 9
0
    def __init__(self, processor, handler, config):
        self._logger = logging.getLogger(__name__)
        self._section_name = utils.get_module(__name__)
        self._server = None
        self._service_name = config.get(self._section_name,
                                        "service",
                                        required=True)
        self._port = config.getint(self._section_name, "port", required=True)
        self._zk_connect_str = config.get(self._section_name,
                                          "zk_connect_str",
                                          required=True)
        self._auth_user = config.get(self._section_name,
                                     "auth_user",
                                     required=True)
        self._auth_password = config.get(self._section_name,
                                         "auth_password",
                                         required=True)
        self._monitor = config.getboolean(self._section_name,
                                          "monitor",
                                          default=settings.SERVICE_MONITOR)
        self._c_module_serialize = config.getboolean(
            self._section_name,
            "c_module_serialize",
            default=settings.USE_C_MODULE_SERIALIZE)
        self._server_name = config.get(self._section_name, "name")
        self._owner = config.get(self._section_name, "owner")

        hosts = "%s/%s" % (self._zk_connect_str,
                           settings.DEFAULT_ZK_NAMESPACE_ROOT)

        self._server_path = "%s/%s" % (self._service_name,
                                       settings.DEFAULT_ZK_NAMESPACE_SERVERS)
        self._statistic_path = "%s/%s/%s" % (
            self._service_name, settings.DEFAULT_ZK_NAMESPACE_STATISTICS,
            settings.DEFAULT_ZK_NAMESPACE_SERVERS)
        # create zk acl
        self._acls = []
        self._acls.append(
            make_digest_acl(self._auth_user, self._auth_password, all=True))
        self._acls.append(make_acl("world", "anyone", read=True))
        # create zk_client
        self._zkclient = HARpcZKClientManager.make(hosts, config, "server")
        self._zkclient.add_auth(
            "digest", "%s:%s" % (self._auth_user, self._auth_password))

        # create zkpath
        if not self._zkclient.exists(self._service_name):
            self._zkclient.create(self._service_name, makepath=True)
        if not self._zkclient.exists(self._server_path):
            self._zkclient.create(self._server_path, acl=self._acls)
        if not self._zkclient.exists(self._statistic_path):
            self._zkclient.create(self._statistic_path, makepath=True)

        self.transport = TSocket.TServerSocket(port=self._port)
        self.tfactory = TTransport.TBufferedTransportFactory()

        if self._monitor:
            self._collector = StatisticsCollector(self._zkclient,
                                                  config,
                                                  is_server=True)
            self._processor = self._statistics_wrapper(processor)(handler)
        else:
            self._processor = processor(handler)

        if self._c_module_serialize:
            self.pfactory = TBinaryProtocol.TBinaryProtocolAcceleratedFactory()
        else:
            self.pfactory = TBinaryProtocol.TBinaryProtocolFactory()