Thrift 客户端 C# ---从zookeeper获取服务器信息、实现负载(2)

干货---实现思路:RPC Thrift 服务端 注册服务端信息到zookeeper上。客户端从zookeeper获取服务端信息,并实现负载。
经验---注意事项。
如图:

Thrift 坑:

1)Thrift 二次封装的socket 使用   using (TBufferedTransport transport = new TBufferedTransport(GetTSocket())),会被活生生坑死。IDisposable中为实现close()..

所以必须使用如下代码, transport.Close();是重点

            using (TBufferedTransport transport = new TBufferedTransport(GetTSocket()))
            {
                try
                {
                    transport.Open();
                    TProtocol protocol = new TBinaryProtocol(transport);
                    CityService.Client client = new CityService.Client(protocol);
                    return func(client);
                    //return "";
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.StackTrace);
                    return "fales:" + e.Message;
                }
                finally
                {
                    transport.Close();
                }
            }

经验:
     1)当zookeeper服务器节点信息如有异常服务时,会自动轮询可用RPC Thrift服务。(指无法连接RPC Thrift服务端,代码层面报错不在此范围内。)
     2)客户端实现注意去除异常服务器连接,如下代码实现。
        /// <summary>
        /// 记录error数
        /// </summary>
        private int errorCount = 0;
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值