dubbo服务的运行方式


 1、使用Servlet容器运行(Tomcat、Jetty等)----不可取 

  缺点:增加复杂性(端口、管理) 浪费资源(内存) 

假设1个服务模块时,需要1台tomcat,消耗3个端口,和200MB左右内存

假设10个服务模块时,需要10台tomcat,消耗30个端口,和2000MB左右内存

假设100个服务模块时,需要100台tomcat,消耗300个端口,和20000MB左右内存

.......大型的分布式项目将不可想象!!!!



 2、自建Main方法类来运行(Spring容器) ----不建议(本地调试可用) 
 缺点:Dobbo本身提供的高级特性没用上 

 自已编写启动类可能会有缺陷。

比如关闭dubbo的时候,控制台直接点击关闭,如果此时dubbo有服务正在调用,就会导致失败。

代码:

package dubbo.test;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * 
 * @描述: 启动Dubbo服务用的MainClass.
 */
public class DubboProvider {
	
	private static final Log log = LogFactory.getLog(DubboProvider.class);

	public static void main(String[] args) {
		try {
			ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring/spring-context.xml");
			context.start();
		} catch (Exception e) {
			log.error("== DubboProvider context start error:",e);
		}
		synchronized (DubboProvider.class) {
			while (true) {
				try {
					DubboProvider.class.wait();
				} catch (InterruptedException e) {
					log.error("== synchronized error:",e);
				}
			}
		}
	}
    
}



 3、使用Dubbo框架提供的Main方法类来运行(Spring容器)----建议使用 
 优点:框架本身提供(com.alibaba.dubbo.container.Main) 

        可实现优雅关机(ShutdownHook ) ,即解决第2点关闭dubbo问题。


参见:

dubbo-user-book.pdf  第110~111页

下载地址:

https://www.gitbook.com/@dubbo


相关文章
相关标签/搜索