Dubbo_入门
来源:互联网 发布:蒙泰5.0软件官方下载 编辑:程序博客网 时间:2024/06/05 02:14
1、各个应用节点中的url管理维护困难、依赖关系模糊(注册中心)
2、应用节点的性能、访问量、响应时间等无法进行评估(监控中心)
二、使用入门
首先搭建一个demo,我理解的大致图如下:
1、在pom中需要引入dubbo的依赖:
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.5.3</version> </dependency> <dependency> <groupId>com.github.sgroschupf</groupId> <artifactId>zkclient</artifactId> <version>0.1</version> </dependency> </dependencies>
2、在provider的项目中src/main/java/resources下添加log4j.properties(dubbo适配器默认使用log4j后续进行说明)
log4j.rootLogger=info, stdoutlog4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
3、在provider的模块或项目中添加src/main/java/resources/META-INF/spring/order-provider.xml的dubbo需要的spring配置,因为spring源码默认会到该路径下进行加载。
引入命名空间:
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
dubbo配置说明在后续专门进行说明,将服务的接口进行暴露(也可以使用注解形式进行配置):
<!--服务发布的配置,需要暴露的服务接口--> <dubbo:service interface="com.kevin.dubbo.order.IOrderServices" ref="orderService"/> <!--Bean bean定义--> <bean id="orderService" class="com.kevin.dubbo.order.OrderServiceImpl"/>
三、dubbo在zookeeper中的使用
在zookeeper的节点下可以看见注册的节点信息大致如下,因为dubbo的基于url总线的方式(其余参数则是dubbo基于我们的配置进行添加的参数信息):
dubbo://192.168.1.1/20880/com.kevin.dubbo.order.IOrderServices%3Fanyhost%3Dtrue%26application%3Dorder-provider%26dubbo%3D2.5.3%26interface%3Dcom.gupao.vip.mic.dubbo.order.IOrderServices%26methods%3DdoOrder%26owner%3Dmic%26pid%3D10804%26side%3Dprovider%26timestamp%3D1502890818766
节点大致如下:四、使用dubbo提供的方式启动
public class App { public static void main( String[] args ) { Main.main(args); }}
dubbo使用的扩展和钩子机制,在后续进行说明,源码如下:
* Copyright 1999-2011 Alibaba Group.package com.alibaba.dubbo.container;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Arrays;import java.util.Date;import java.util.List;import com.alibaba.dubbo.common.Constants;import com.alibaba.dubbo.common.extension.ExtensionLoader;import com.alibaba.dubbo.common.logger.Logger;import com.alibaba.dubbo.common.logger.LoggerFactory;import com.alibaba.dubbo.common.utils.ConfigUtils;/** * Main. (API, Static, ThreadSafe) * * @author william.liangf */public class Main { public static final String CONTAINER_KEY = "dubbo.container"; public static final String SHUTDOWN_HOOK_KEY = "dubbo.shutdown.hook"; private static final Logger logger = LoggerFactory.getLogger(Main.class); private static final ExtensionLoader<Container> loader = ExtensionLoader.getExtensionLoader(Container.class); private static volatile boolean running = true; public static void main(String[] args) { try { if (args == null || args.length == 0) { String config = ConfigUtils.getProperty(CONTAINER_KEY, loader.getDefaultExtensionName()); args = Constants.COMMA_SPLIT_PATTERN.split(config); } final List<Container> containers = new ArrayList<Container>(); for (int i = 0; i < args.length; i ++) { containers.add(loader.getExtension(args[i])); } logger.info("Use container type(" + Arrays.toString(args) + ") to run dubbo serivce."); if ("true".equals(System.getProperty(SHUTDOWN_HOOK_KEY))) { Runtime.getRuntime().addShutdownHook(new Thread() { public void run() { for (Container container : containers) { try { container.stop(); logger.info("Dubbo " + container.getClass().getSimpleName() + " stopped!"); } catch (Throwable t) { logger.error(t.getMessage(), t); } synchronized (Main.class) { running = false; Main.class.notify(); } } } }); } for (Container container : containers) { container.start(); logger.info("Dubbo " + container.getClass().getSimpleName() + " started!"); } System.out.println(new SimpleDateFormat("[yyyy-MM-dd HH:mm:ss]").format(new Date()) + " Dubbo service server started!"); } catch (RuntimeException e) { e.printStackTrace(); logger.error(e.getMessage(), e); System.exit(1); } synchronized (Main.class) { while (running) { try { Main.class.wait(); } catch (Throwable e) { } } } } }
- Dubbo_入门
- dubbo_初识DUBBO
- dubbo_信息交换Exchanger
- dubbo_网络传输transport
- dubbo_ Linux安装配置
- Dubbo_特性1
- Dubbo_特性2
- dubbo_远程同步调用原理
- Dubbo_服务化改造注意事项
- dubbo_负载均衡算法_一致性算法
- Dubbo_创建Dubbo服务并在ZooKeeper注册,然后通过Jar包执行【转】
- 入门
- 入门
- 入门
- 入门
- 入门
- 入门
- 入门
- 判断多边形凹凸(计算几何)
- 洛谷 P1807 最长路_NOI导刊2010提高(07)
- 读书笔记_代码大全2第十章_变量初始化
- 内核源码阅读(八)进程调度器的实现
- CVE-2014-3153
- Dubbo_入门
- Windows NTSTATUS Values 进程终止消息标识符
- poj 1001
- MySQL与PHP连接
- Shader_vert和frag函数的学习004
- springIoCAndDI
- GC垃圾回收
- linux 下安装solr
- 4.Spring4.x学习[核心篇][IOC/DI简介以及Spring中IOC的方式介绍]