• dubbo服务的运行方式(2)


    1、使用servlet容器运行,如tomcat,jetty等—->不可取
    缺点:增加复杂性
    a. 端口:tomcat需要端口,dubbo也需要端口
    b. 管理复杂:不仅要管理dubbo还要管理tomcat
    浪费资源:servlet容器需要占用内存
    2、自建main方法类运行(得到spring容器方式)—->不建议(本地调试可用)

    public void main(String args[]) throws IOException {
             ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"provider.xml"});
             context.start();
             System.in.read(); // 按任意键退出
    
        }
    

    缺点:dubbo本身提供的高级性能没有使用上
    自己编写的启动类可能有缺陷
    3、使用dubbo框架提供的main方法类来运行—->建议使用
    优点:框架自身提供(com.alibaba.dubbo.container.Main)
    可实现优雅关机(ShutdownHook):服务正在运行中,如果强行停止会数据丢失,而优雅关机会等待正在运行的服务停止后才完全停
    优雅停机
    (+) (#)

    Dubbo是通过JDK的ShutdownHook来完成优雅停机的,所以如果用户使用"kill -9 PID"等强制关闭指令,是不会执行优雅停机的,只有通过"kill PID"时,才会执行。

    原理:

    服务提供方
    停止时,先标记为不接收新请求,新请求过来时直接报错,让客户端重试其它机器。
    然后,检测线程池中的线程是否正在运行,如果有,等待所有线程执行完成,除非超时,则强制关闭。
    服务消费方
    停止时,不再发起新的调用请求,所有新的调用在客户端即报错。
    然后,检测有没有请求的响应还没有返回,等待响应返回,除非超时,则强制关闭。
    设置优雅停机超时时间,缺省超时时间是10秒:(超时则强制关闭)

  • 相关阅读:
    android数据恢复
    UVA 690 Pipeline Scheduling
    2017 国庆湖南 Day4
    2017 国庆湖南 Day5
    2017 国庆湖南 Day6
    2017国庆 清北学堂 北京综合强化班 Day1
    2017 国庆湖南Day2
    bzoj 2962 序列操作
    UVA 818 Cutting Chains
    UVA 211 The Domino Effect
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13310670.html
Copyright © 2020-2023  润新知