美文网首页
dubbo 并发控制和连接控制

dubbo 并发控制和连接控制

作者: 钟mh | 来源:发表于2018-11-14 17:23 被阅读0次

    并发控制

                actives参数

                            CONSUMER端配置, ActiveLimitFilter里, count.wait(remain); 线程wait方式,  配合 timeout 配置,   需要配置 actives 参数才会开启 ActiveLimitFilter,应该是为了性能考虑

                executes参数

                            PROVIDER端配置,ExecuteLimitFilter里,信号量的方式,限制方法级别的并发调用

                            如果要统计调用数呢?

                                        RpcStatus.SERVICE_STATISTICS 记录了service级别的计数

                                        RpcStatus.METHOD_STATISTICS 记录了method级别的计数

                            需要配置 executes 参数才会开启 ExecuteLimitFilter,应该是为了性能考虑

                        todo: Semaphore.tryAcquire(), 并没有使用 tryAcquire(long timeout, TimeUnit unit) ,超时怎么控制

    挑2个不太好的地方

    1. RpcStatus.METHOD_STATISTICS = new ConcurrentHashMap<String, ConcurrentMap<String, RpcStatus>>();

    String = dubbo://10.1.9.55:20800/com.alibaba.boot.dubbo.service.IHelloService

    如果是 dubbo://10.1.9.55:20800/com.alibaba.boot.dubbo.service.IHelloService/consumser 会不会好点,  一个项目有provider,也有consumser,这样就分开了

    2. 泛化调用, method key = '$invoke' , 也可以改进

    连接控制

    服务端配置 accepts参数

            TomcatHttpServer 里

    tomcat.getConnector().setProperty(

                    "maxConnections", String.valueOf(url.getParameter(Constants.ACCEPTS_KEY, -1)));

    NettyServer里

                if (accepts > 0 && channels.size() > accepts) {

                logger.error("Close channel " + ch + ", cause: The server " + ch.getLocalAddress() + " connections greater than max config " + accepts);

                ch.close();

                return;

            }

    客户端配置 connections 参数

    1.DubboProtocol . getClients

    2. RestProtocol 里 connectionManager.setMaxTotal(url.getParameter(Constants.CONNECTIONS_KEY, 20));

    3. ThriftProtol  里 new ExchangeClient[connections];


    总结

    1. 并发控制和连接控制只需要配置1种就好,并发控制较好一些

    2. 并发控制配置时注意cluster的配置

    相关文章

      网友评论

          本文标题:dubbo 并发控制和连接控制

          本文链接:https://www.haomeiwen.com/subject/awwjfqtx.html