最简单的dubbo应用包括三部分:服务提供者provider、服务消费者consumer、注册中心。
前两个都是我们自己编写的,第三个注册中心推荐使用稳定性更好的zookeeper。
所以我们需要先下载zookeeper: http://apache.fayea.com/zookeeper/current/
下载后解压到某个目录,进入里面的conf目录。将zoo_sample.cfg复制一份,改名为zoo.cfg。
修改其内容为
tickTime=2000 initLimit=10 syncLimit=5 dataDir=D:\\data\\zookeeper clientPort=2181
其中的dataDir可以自由修改。
进入zookeeper的bin目录,运行zkServer.cmd
{ 要测试是否运行良好的话可以运行zkCli.cmd }
接下来打开eclipse,新建maven项目,arctype使用默认的quickstart就可以。
修改pom.xml文件:
<dependencies> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.0.13</version> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.3.6</version> <exclusions> <exclusion> <groupId>log4j</groupId> <artifactId>log4j</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.16</version> </dependency> </dependencies>
在Java源文件夹下新建接口,这个接口要给provider和consumer都使用
public interface DemoService { public void sayHello(); public String returnHello(); public MsgInfo returnMsgInfo(MsgInfo info); }
新建其实现类
public class DemoServiceImpl implements DemoService{ public void sayHello() { System.err.println("Hello world."); } public String returnHello() { return "hello world"; } public MsgInfo returnMsgInfo(MsgInfo info) { info.getMsgs().add("done!"); return info; } }
新建一个测试实体
public class MsgInfo implements Serializable { int id; String name; List<String> msgs; //getters setters }
在资源文件夹下新建目录spring(虽然不是必要的,不过我们是和spring集成的)。
在里面新建xml文件dubbo-provider.xml
<?xml version="1.0" encoding="UTF-8"?> <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:application name="hello-world-app" /> <dubbo:registry protocol="zookeeper" address="127.0.0.1:2181" /> <!-- 用dubbo协议在20880端口暴露服务 --> <dubbo:protocol name="dubbo" port="20880" /> <!-- 声明需要暴露的服务接口 --> <dubbo:service interface="com.abc.qkdb.DemoService" ref="demoService" /> <!-- 和本地bean一样实现服务 --> <bean id="demoService" class="com.abc.qkdb.DemoServiceImpl" /> </beans>
其中的<dubbo:registry>就是注册中心这里使用的是zookeeper,其他选项可以参考http://dubbo.io/Administrator+Guide-zh.htm#AdministratorGuide-zh-Redis%E6%B3%A8%E5%86%8C%E4%B8%AD%E5%BF%83%E5%AE%89%E8%A3%85
相同目录下新建dubbo-consumer.xml
<?xml version="1.0" encoding="UTF-8"?> <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:application name="consumer-of-helloworld-app" /> <!--zookeeper注册中心 --> <dubbo:registry protocol="zookeeper" address="127.0.0.1:2181" /> <!-- 生成远程服务代理,可以和本地bean一样使用demoService--> <dubbo:reference id="demoService" interface="com.abc.qkdb.DemoService" /> </beans>
注意里面也包含<dubbo:registry>结点。
回到Java文件夹,新建服务类
import java.io.IOException; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class LuncherProvider { public static void main(String[] args) throws InterruptedException, IOException { LuncherProvider provider = new LuncherProvider(); provider.start(); System.in.read(); } void start() { String configLocation = "spring/dubbo-provider.xml"; ApplicationContext context = new ClassPathXmlApplicationContext(configLocation); String[] names = context.getBeanDefinitionNames(); for (String name : names) { System.err.println(name); } } }
新建消费者类
import java.util.ArrayList; import java.util.List; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class LuncherConsumer { public static void main(String[] args) { LuncherConsumer provider = new LuncherConsumer(); provider.start(); } void start() { String configLocation = "spring/dubbo-consumer.xml"; ApplicationContext context = new ClassPathXmlApplicationContext(configLocation); DemoService ds = (DemoService) context.getBean("demoService"); String[] names = context.getBeanDefinitionNames(); System.out.print("Beans:"); for (String string : names) { System.out.println(string); } MsgInfo info = new MsgInfo(); info.setId(1); info.setName("ruisheh"); List<String> msgs = new ArrayList<String>(); msgs.add("I"); msgs.add("am"); msgs.add("test"); info.setMsgs(msgs); System.out.println(ds.returnMsgInfo(info).getMsgs()); System.err.println(ds.returnHello()); } }
编码完毕。
先运行LuncherProvider类,没有错误输出后(会输出context中的bean)运行LuncherConsumer,输出
[I, am, test, done!]
hello world
即为正常。
相关推荐
在你的应用程序中,你需要配置Dubbo的相关参数,如服务提供者和服务消费者的地址、接口、版本等。这些信息通常在`dubbo.properties`文件中定义,或者在代码中硬编码。例如: ``` dubbo.application.name=my-...
### Dubbo下的代码整合环境搭建及运行 #### Zookeeper环境搭建 **Zookeeper**作为分布式协调服务,在**Dubbo**框架中起到了至关重要的作用。它主要用于管理服务注册与发现、配置管理和分布式锁等功能。 1. **下载...
Dubbo的核心架构基于服务提供者(Provider)、消费者(Consumer)、注册中心(Registry)和服务监控(Monitor)四大部分构建。Provider暴露服务,Consumer调用服务,Registry负责服务的注册与发现,Monitor则用于...
这个文件包含了运行Dubbo服务所需的所有核心组件和依赖。确保你的计算机已经安装了Java运行环境(JRE)或Java开发工具包(JDK),因为Dubbo是基于Java语言开发的,它的运行离不开Java环境。 安装过程相对简单,只需...
Dubbo Monitor Simple 2.5.3是该监控组件的一个特定版本,包含了必要的组件和服务,使得用户可以快速部署并开始监控自己的Dubbo服务。在下载的压缩包“dubbo-monitor-simple-2.5.3.tar.gz”中,包含了所有必要的文件...
【Dubbo学习笔记】 Dubbo是一款高性能、轻量级的Java RPC框架,它旨在提供面向接口的远程方法...了解并掌握这些知识点,有助于深入理解Dubbo及其在分布式系统中的作用,从而更好地在实际项目中应用和优化服务架构。
通过以上步骤,你就可以在Windows环境下利用Apache Dubbo Admin对你的Dubbo服务进行便捷的管理和监控,提升开发和运维效率。记得在实际生产环境中,还需要结合Zookeeper或其他注册中心,以及监控系统,确保服务的...
其中,Dubbo Monitor就是其监控体系的核心组件,用于收集和展示服务调用的各类数据,帮助开发者实时了解服务运行状态,及时发现并解决问题。本文将深入探讨Dubbo Monitor Simple 2.5.3,带你了解其安装、配置和实际...
在这个页面中,你可以看到服务提供者和服务消费者的相关信息,包括服务注册、调用次数、异常情况等,帮助你实时监控系统健康状态。 然而,值得注意的是,虽然在Windows环境下已测试成功,但在Linux环境下尚未经过...
对于搭建Dubbo示例,你需要创建一个提供者和服务消费者项目,配置ZooKeeper地址,并使用Dubbo的API声明服务接口和实现。在Windows上,你可以利用IDEA或Eclipse等Java开发工具进行快速开发和测试。 总的来说,...
这个工具提供了一个直观的用户界面,方便开发者和服务管理员监控、管理和调试分布式服务。在 Dubbo 架构中,它扮演着至关重要的角色,帮助提升开发效率和运维能力。 1. **Dubbo 框架概述** Dubbo 是一款高性能、轻...
在Windows环境下安装和运行nacos-server-2.0.3,用户通常需要解压zip文件,启动Nacos的启动脚本,然后通过浏览器访问Nacos的Web管理页面进行操作。需要注意的是,Windows环境下可能需要配置Java环境,因为Nacos是...
通过Nacos,开发者可以快速地构建复杂的应用和服务网络,并且方便地管理和维护服务的元数据和配置信息。 二、服务发现 Nacos服务发现功能允许微服务实例向Nacos注册,其他服务通过Nacos查询这些实例的位置信息,...
本地仓库的默认位置通常位于用户主目录下的`.m2`文件夹中,路径为`~/.m2/repository`(在Windows系统上通常是`%USERPROFILE%\.m2\repository`)。每当Maven在构建项目时需要某个依赖,它首先会在本地仓库查找,如果...
服务发现则是服务治理的一部分,主要解决服务提供者和服务消费者之间的通信问题,使得服务消费者能动态找到服务提供者的位置。 Nacos 2.1.0 for Windows 的安装包包含了运行 Nacos 所需的所有组件,如服务器端应用...
Nacos是阿里巴巴开源的一款分布式服务治理和配置中心的框架,主要应用于微服务架构中的服务发现、配置管理和服务管理。在本例中,我们讨论的是Nacos的1.1.3版本,适用于Windows操作系统。这个压缩包文件“nacos-...
总之,Nacos-server-1.3.1.tar.gz和nacos-server-1.3.1.zip是Nacos在不同操作系统环境下使用的两种压缩包,它们都包含了完整的Nacos服务治理功能,用户可以根据实际需求选择合适的版本进行安装和使用。
在Windows环境下,解压"nacos-server-1.3.0.zip"后,会得到Nacos的运行目录。启动Nacos通常通过运行startup.cmd脚本,根据提示设置环境变量,然后启动服务器。访问默认的8848端口,可以打开Nacos的Web管理界面,...
总的来说,最新版的Nacos-server-1.2.0为开发者提供了更强大、更稳定的分布式服务治理解决方案,尤其在配置管理和服务发现方面表现卓越。在Windows操作系统上,安装和使用都非常便捷,是构建大规模分布式系统的理想...
Nacos是阿里巴巴开源的一款分布式服务治理和配置管理平台,它主要功能包括服务发现和服务配置,广泛应用于微服务架构中。Nacos-server-1.1.4.zip是一个包含Nacos服务器1.1.4版本的压缩包,这个版本经过了实际测试,...