1.概述
Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案
Dubbo是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点:
那么,Dubbo是什么?
Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。
其核心部分包含:
-
远程通讯:提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。
-
集群容错:提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。
-
自动发现:基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。
Dubbo能做什么?
- 透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。
- 软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点。
- 服务自动注册与发现,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者。
Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载。
主要核心部件
Remoting: 网络通信框架,实现了sync-over-async 和 request-response 消息机制.
RPC: 一个远程过程调用的抽象,支持负载均衡、容灾和集群功能
Registry: 服务目录框架用于服务的注册和服务事件发布和订阅。
Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载。
2.简单实例
实例源码:
http://download.csdn.net/detail/morning99/8077301
首先简历maven工程pom.xml引用 dubbo zkclient zookeeper 和 spring jar 包
因为要增加zookeeper的注册管理,所以如果有可用的zookeeper就用可用的zookeeper,没有可以按照如下的安装去本地安装一个。
http://blog.csdn.net/morning99/article/details/40426133
特别注意:zookeeper的服务端 和 本地调用 客户端的jar包版本最好要一致,否则会出现意想不到的惊喜。
本人使用的zookeeper 是3.3.6 版本
项目结构图
服务端
applicationProvider.xml
-
<?xmlversion="1.0"encoding="UTF-8"?>
-
<beansxmlns="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:applicationname="hello-world-app"/>
-
-
<dubbo:registryprotocol="zookeeper"address="192.9.145.19:2181,192.9.145.19:2182,192.9.145.19:2183"/>
-
<dubbo:protocolname="dubbo"port="20880"/>
-
<dubbo:serviceinterface="com.mor.server.dubbo.service.DemoServer"
-
ref="demoService"/>
-
<beanid="demoService"class="com.mor.server.dubbo.service.DemoServerImpl"/>
-
</beans>
客户端:
applicationConsumer.xml
-
<?xmlversion="1.0"encoding="UTF-8"?>
-
<beansxmlns="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:applicationname="consumer-of-helloworld-app"/>
-
<spanstyle="white-space:pre"></span>
-
<dubbo:registryprotocol="zookeeper"address="192.9.145.19:2181,192.9.145.19:2182,192.9.145.19:2183"/>
-
<dubbo:referenceid="demoService"interface="com.mor.server.dubbo.service.DemoServer"/>
-
</beans>
在客户端要引入服务端生成的jar包
服务端代码:
demodubboserver\src\main\java\com\mor\server\dubbo\service\DemoServer.java
-
packagecom.mor.server.dubbo.service;
-
publicinterfaceDemoServer{
-
StringsayHello(Stringstr);
-
}
demodubboserver\src\main\java\com\mor\server\dubbo\service\DemoServerImpl.java
-
<spanstyle="font-family:CourierNew;">packagecom.mor.server.dubbo.service;
-
importjava.util.Date;
-
publicclassDemoServerImplimplementsDemoServer{
-
publicStringsayHello(Stringstr){
-
str="Hello"+str+"2:"+newDate();
-
System.out.println("server:"+str);
-
returnstr;
-
}
-
}</span><strongstyle="font-family:Arial;">
-
</strong>
demodubboserver\src\main\java\com\mor\main\Main.java
-
packagecom.mor.main;
-
importjava.io.IOException;
-
importorg.springframework.context.support.ClassPathXmlApplicationContext;
-
-
publicclassMain{
-
publicstaticvoidmain(String[]args)throwsIOException{
-
ClassPathXmlApplicationContextcontext=newClassPathXmlApplicationContext(newString[]{"applicationProvider.xml"});
-
context.start();
-
System.out.println("按任意键退出");
-
System.in.read();
-
}
-
}
log4j.properties
-
log4j.appender.Stdout=org.apache.log4j.ConsoleAppender
-
log4j.appender.Stdout.layout=org.apache.log4j.PatternLayout
-
log4j.appender.Stdout.layout.conversionPattern=%-5p-%-26.26c{1}-%m\n
-
-
log4j.rootLogger=INFO,Stdout
-
-
log4j.logger.org.apache.wicket=INFO
-
log4j.logger.org.apache.wicket.protocol.http.HttpSessionStore=INFO
-
log4j.logger.org.apache.wicket.version=INFO
-
log4j.logger.org.apache.wicket.RequestCycle=INFO
客户端代码:
-
packagecom.mor.client.dubbo.action;
-
importjava.util.Date;
-
importorg.springframework.context.support.ClassPathXmlApplicationContext;
-
importcom.mor.server.dubbo.service.DemoServer;
-
-
publicclassChatAction{
-
publicvoidSayHello(){
-
ClassPathXmlApplicationContextcontext=newClassPathXmlApplicationContext(newString[]{"applicationConsumer.xml"});
-
context.start();
-
DemoServerdemoServer=(DemoServer)context.getBean("demoService");
-
System.out.println("client:"+demoServer.sayHello("Morning"+"1:"+newDate())+"3:"+newDate());
-
}
-
}
dubboclient\src\main\java\com\mor\client\dubbo\main\Main.java
-
packagecom.mor.client.dubbo.main;
-
importcom.mor.client.dubbo.action.ChatAction;
-
-
publicclassMain{
-
publicstaticvoidmain(String[]args){
-
ChatActionact=newChatAction();
-
act.SayHello();
-
}
-
}
============启动顺序================
1.先启动 zookeeper 集群
2.在启动 服务端
3.最后 启动客户端调用服务
服务端打包
分享到:
相关推荐
【Dubbo入门教程+实例源码】是一份针对初学者设计的教程,旨在帮助开发者快速理解和掌握Apache Dubbo这一高性能、轻量级的服务治理框架。Dubbo是阿里巴巴开源的一个分布式服务框架,它提供了服务注册与发现、负载...
本示例"**dubbo-demo(ZK集群).zip**"提供了如何在实际项目中搭建和使用Dubbo与Zookeeper集群的实例。下面我们将深入探讨这两个组件的核心功能、它们的集成方式以及实际操作步骤。 **Dubbo** 是阿里巴巴开源的一款...
总的来说,这个集群Demo旨在帮助开发者了解和实践Dubbo与Zookeeper的集成,为构建高可用的分布式系统奠定基础。通过实际操作,你可以更好地掌握服务注册、服务发现、服务调用等核心概念,进一步提升你在分布式架构...
当服务消费者发起调用请求时,Dubbo会根据配置的负载均衡策略(如轮询、随机、最少活跃调用数等)选择一个服务实例进行调用。 5. **集群容错机制**: Dubbo支持多种容错机制,例如Fail-fast(快速失败)、Fail-...
本实例“dubbo_demo”是一个基于Dubbo框架的简单应用,旨在帮助学习者深入理解Dubbo的核心概念和工作原理。Dubbo是中国阿里巴巴公司开源的一款高性能、轻量级的服务治理框架,它主要应用于分布式系统中的服务调用、...
【标题】"Dubbo实例代码"涉及的知识点主要围绕分布式服务框架Dubbo和Zookeeper注册中心展开。Dubbo是阿里巴巴开源的一款高性能、轻量级的Java RPC框架,它提供了服务治理、集群容错、负载均衡等功能,极大地提升了...
【描述】中提到的"入门实例",意味着这个dubbo-demo项目是一个初学者友好的教程,旨在帮助开发者快速理解Dubbo服务端的基本操作。它通过集成Zookeeper作为服务注册与发现的中心节点,展示了Dubbo如何与分布式环境...
【标题】"dubbo demo" 是一个展示阿里开源框架Dubbo使用的基本示例,它包含了服务提供者(provider)和消费者(consumer)的实现。这个项目旨在帮助开发者理解和学习如何在实际应用中部署和使用Dubbo。 【描述】中...
这个“springcloudalibaba微服务dubbo+sentinel+gateway+zookeeper+nacos的demo”压缩包文件,显然是一个实战示例,旨在帮助开发者理解并实践这些关键组件的集成与使用。下面将详细解析这些组件以及它们在微服务架构...
【描述】提到的" dubbo+zookeeper+springmvc实例demo"是一个综合性的应用示例,它将Dubbo的远程调用能力、Zookeeper的服务发现和注册功能与Spring MVC的Web开发框架结合在一起。这个实例通常会展示如何在Spring MVC...
2. **集群(Cluster)**:负责多个服务实例的负载均衡和容错处理,如Failover、Failfast、Failsafe、Fallback等策略。 3. **路由(Router)**:根据特定规则对请求进行路由,如基于IP、版本号等条件过滤。 4. **...
【标题】"Dubbo-demo" 是一个基于IntelliJ IDEA开发的示例项目,它用于演示和学习如何使用Apache Dubbo这一高性能的Java RPC框架。这个项目被细分为三个主要部分,分别是`dubbo-api`, `dubbo-provider`, 和 `dubbo-...
本Demo工程是针对初学者设计的一个实例,它展示了如何使用Apache Dubbo和Zookeeper进行服务的注册与发现,帮助我们理解这两个组件的协同工作原理。 Dubbo,由阿里巴巴开源,是一款高性能、轻量级的Java RPC框架,它...
8. **集群(Cluster)**:集群层负责对多个服务提供者的实例进行管理,包括负载均衡、容错处理等。 9. **监控(Monitor)**:监控中心收集服务的调用统计信息,如调用次数、调用时间、异常信息等,帮助开发者分析...
【标题】"dubbo+zookeeper+SpringMVC Demo"是一个示例项目,它演示了如何在实际应用中整合这三个关键组件:Dubbo、Zookeeper和SpringMVC。Dubbo是阿里巴巴开源的一个高性能、轻量级的服务框架,用于构建微服务架构;...
2. **接口级调用**:Dubbo支持基于接口的远程调用,使得服务调用就像调用本地方法一样简单。 3. **负载均衡**:Dubbo内置多种负载均衡策略,如随机、轮询、最少活跃调用数等,确保请求能均衡地分发到各个服务实例。 ...
由于是“zookeeper伪集群”,这意味着虽然ZooKeeper可能只运行在一个节点上,但其设计和配置是按照集群模式进行的,以模拟多节点环境下的行为。 再者,Spring MVC是Spring框架的一部分,主要用于构建Web应用。它...
【Java Dubbo初学者入门指南】 Java Dubbo是一款高性能、轻量级的开源Java RPC框架,由阿里巴巴开发并维护,它主要解决了企业服务治理的问题,包括服务注册、服务发现、负载均衡、容错机制等。这个"java-demo-dubbo...