Ejemplo n.º 1
0
Archivo: Program.cs Proyecto: lcksy/Dot
        static void Main(string[] args)
        {
            var weightCalculator = new ServiceMetadataWeightCalculator(30);
            var loadBalance      = new RoundRobinLoadBalance();

            // 创建注册中心
            var registery = new ZooKeeperRegistery(ZooKeeperClient.Instance);

            // 启动并注册 UnaryService
            Enumerable.Range(UNARY_SERVICE_MIN_PORT, UNARY_SERVICE_MAX_COUNT)
            .Select(port => HostUnaryService(port))
            .ForEach(meta => registery.Register(meta, true), 1000);

            // 调用 UnaryService
            var unaryInvoker = new UnaryServiceInvoker(registery, UNARY_SERVICE_PROVIDER_PATH, loadBalance, weightCalculator);

            for (int i = -1; i >= -10; i--)
            {
                Console.WriteLine("unaryInvoker.Negate({0}) = {1}", i, unaryInvoker.Negate(i));
            }
            Console.WriteLine("------------------");


            // 启动并注册 CalcService
            Enumerable.Range(CALC_SERVICE_MIN_PORT, CALC_SERVICE_MAX_COUNT)
            .Select(port => HostCalcService(port))
            .ForEach(meta => registery.Register(meta, true), 1000);

            // 调用 CalcService
            var calcInvoker = new CalculateServiceInvoker(registery, CALC_SERVICE_PROVIDER_PATH, loadBalance, weightCalculator);

            for (int i = 1; i <= 10; i++)
            {
                calcInvoker.Multicast(i);
                Console.WriteLine("{0} + {1} = {2}", i, i + 1, calcInvoker.Add(i, i + 1));
                Console.WriteLine("-------------------");
                System.Threading.Thread.Sleep(1000);
            }

            Console.Read();

            // 断开与 ZooKeeper 服务器的连接
            ZooKeeperClient.Instance.Dispose();
        }
Ejemplo n.º 2
0
Archivo: Program.cs Proyecto: lcksy/Dot
        static void Main2(string[] args)
        {
            // 创建注册中心
            var registery = new ZooKeeperRegistery(ZooKeeperClient.Instance);

            // 监听 UnaryService 变化(推模式获取服务元数据)
            var listener = new DebugNotifyListener();

            registery.Subscribe(UNARY_SERVICE_PROVIDER_PATH, listener, true);

            // 启动 UnaryService
            var ports     = Enumerable.Range(UNARY_SERVICE_MIN_PORT, UNARY_SERVICE_MAX_COUNT).ToList();
            var metadatas = ports.Select(port => HostUnaryService(port)).ToList();

            // 注册 UnaryService
            metadatas.ForEach(metadata => registery.Register(metadata, true), 1000);

            // 取消注册 UnaryService
            metadatas.ForEach(metadata => registery.Unregister(metadata, true), 1000);

            // 取消监听 UnaryService 变化
            registery.Unsubscribe(UNARY_SERVICE_PROVIDER_PATH, listener, true);

            // 再次注册 UnaryService
            metadatas.ForEach(metadata => registery.Register(metadata, true), 1000);

            // 拉模式获取 UnaryService 元数据
            var metas = registery.Lookup(CALC_SERVICE_PROVIDER_PATH);

            Console.WriteLine(string.Join(",", metas.Select(m => m.FullPath)));
            Console.WriteLine("-------------------");

            // 再次取消 UnaryService 注册
            metadatas.ForEach(metadata => registery.Unregister(metadata, true), 1000);

            Console.Read();
        }