一.dubbo架构
节点角色说明:
Provider: 暴露服务的服务提供方。
Consumer: 调用远程服务的服务消费方。
Registry: 服务注册与发现的注册中心。
Monitor: 统计服务的调用次调和调用时间的监控中心。
Container: 服务运行容器。
调用关系说明:
0 服务容器负责启动,加载,运行服务提供者。
1. 服务提供者在启动时,向注册中心注册自己提供的服务。
2. 服务消费者在启动时,向注册中心订阅自己所需的服务。
3. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数 据给消费者。
4. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用 失败,再选另一台调用。
5. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监 控中心。
同类项目:
二.dubbo使用方法
Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载。如果不想使用Spring配置,而希望通过API的方式进行调用(不推荐)
1. 下载zookeeper注册中心,下载地址:http://www.apache.org/dyn/closer.cgi/zookeeper/ 下载后解压即可,进入D:\apach-zookeeper-3.4.5\bin,
双击zkServer.cmd启动注册中心服务
2.定义服务提供者接口、实现、定义dubbo-spring的配置文件
注:服务提供者接口需被服务消费者共享到,服务消费者的配置才能找到接口(用maven的话就把服务提供者接口打jar包,服务消费者依赖这个jar)
- package com.unj.dubbotest.provider;
- import java.util.List;
- public interface DemoService {
- String sayHello(String name);
- public List getUsers();
- }
在服务提供方实现接口:(对服务消费方隐藏实现)
- package com.unj.dubbotest.provider;
- import java.util.ArrayList;
- import java.util.LinkedList;
- import java.util.List;
- public class DemoServiceImpl implements DemoService{
- public String sayHello(String name) {
- return "Hello " + name;
- }
- public List getUsers() {
- List list = new ArrayList();
- User u1 = new User();
- u1.setName("jack");
- u1.setAge(20);
- u1.setSex("男");
- User u2 = new User();
- u2.setName("tom");
- u2.setAge(21);
- u2.setSex("女");
- User u3 = new User();
- u3.setName("rose");
- u3.setAge(19);
- u3.setSex("女");
- list.add(u1);
- list.add(u2);
- list.add(u3);
- return list;
- }
- }
- <?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
- ">
- <!-- 具体的实现bean -->
- <bean id="demoService" class="com.unj.dubbotest.provider.DemoServiceImpl" />
- <!-- 提供方应用信息,用于计算依赖关系 -->
- <dubbo:application name="xixi_provider" />
- <!-- 使用multicast广播注册中心暴露服务地址
- <dubbo:registry address="multicast://224.5.6.7:1234" />-->
- <!-- 使用zookeeper注册中心暴露服务地址 -->
- <dubbo:registry address="zookeeper://127.0.0.1:2181" />
- <!-- 用dubbo协议在20880端口暴露服务 -->
- <dubbo:protocol name="dubbo" port="20880" />
- <!-- 声明需要暴露的服务接口 -->
- <dubbo:service interface="com.unj.dubbotest.provider.DemoService" ref="demoService" />
- </beans>
- package com.unj.dubbotest.provider;
- import org.springframework.context.support.ClassPathXmlApplicationContext;
- public class Provider {
- public static void main(String[] args) throws Exception {
- ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"applicationContext.xml"});
- context.start();
- System.in.read(); // 为保证服务一直开着,利用输入流的阻塞来模拟
- }
- }
3.定义服务消费者
通过Spring配置引用远程服务:
- <?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="hehe_consumer" />
- <!-- 使用zookeeper注册中心暴露服务地址 -->
- <!-- <dubbo:registry address="multicast://224.5.6.7:1234" /> -->
- <dubbo:registry address="zookeeper://127.0.0.1:2181" />
- <!-- 生成远程服务代理,可以像使用本地bean一样使用demoService -->
- <dubbo:reference id="demoService"
- interface="com.unj.dubbotest.provider.DemoService" />
- </beans>
- package com.alibaba.dubbo.demo.pp;
- import java.util.List;
- import org.springframework.context.support.ClassPathXmlApplicationContext;
- import com.unj.dubbotest.provider.DemoService;
- public class Consumer {
- public static void main(String[] args) throws Exception {
- ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
- new String[] { "applicationContext.xml" });
- context.start();
- DemoService demoService = (DemoService) context.getBean("demoService"); //
- String hello = demoService.sayHello("tom"); // ִ
- System.out.println(hello); //
- //
- List list = demoService.getUsers();
- if (list != null && list.size() > 0) {
- for (int i = 0; i < list.size(); i++) {
- System.out.println(list.get(i));
- }
- }
- // System.out.println(demoService.hehe());
- System.in.read();
- }
- }
dubbo 官网:http://dubbo.io/
dubbo git 例子地址:https://github.com/dubbo
dubbo git 源码地址:https://github.com/alibaba/dubbo
本文参考 地址:http://www.cnblogs.com/Javame/p/3632473.html
相关推荐
这个dubbo的小demo展示了如何使用Dubbo、Zookeeper、Maven和SpringBoot来构建一个简单的分布式服务系统。服务提供者通过dubbo-provider模块对外提供服务,服务消费者通过dubbo-consumer模块调用这些服务。整个过程中...
【标题】"dubbo的一个小demo"展示了如何在实际开发中集成并运用Dubbo这一分布式服务框架。Dubbo是阿里巴巴开源的一款高性能、轻量级的服务治理框架,它主要用于实现服务的发布、查找和调用,旨在提高微服务架构中的...
【描述】"初学Dubbo的一个简单案例"意味着这个项目包含了一个基本的配置和实现,演示了如何设置服务提供者和服务消费者。服务提供者是系统中提供特定功能模块的组件,而服务消费者则是调用这些功能的模块。通过这个...
【Dubbo入门实例Demo】是针对初学者设计的一个实践教程,旨在帮助新手快速理解并掌握Apache Dubbo这一高性能、轻量级的Java RPC框架。在学习过程中,新手往往会在配置、依赖、通信等方面遇到诸多问题,这个Demo就是...
【标题】"dubbo-demo" 是一个基于阿里巴巴开源框架Dubbo的示例项目,它提供了对Dubbo功能的直观演示,旨在帮助开发者更好地理解和学习如何在实际应用中使用Dubbo。 【描述】"dubbo-demo" 提供了一个全面的演示环境...
本项目“dubbo整合springmvc项目搭建Demo”旨在为初学者提供一个基础的示例,展示如何将Dubbo与SpringMVC整合,构建一个完整的微服务架构。在开始之前,确保你已经安装了Zookeeper,这是Dubbo的服务注册与发现中心。...
总的来说,这个"Dubbo简单测试DEMO"是一个很好的起点,它涵盖了Dubbo的基本使用流程,包括服务的创建、消费、注册与发现。通过实践这个DEMO,初学者能对Dubbo有更直观的认识,并为进一步深入学习和应用Dubbo打下坚实...
【Dubbo + ZooKeeper + Jar Demo】:这是一个关于如何整合分布式服务框架Dubbo与分布式协调服务ZooKeeper,并以Jar包形式运行的演示项目。在这个项目中,我们将深入理解Dubbo和ZooKeeper的核心概念,以及如何将它们...
通过以上步骤,你已经完成了Dubbo环境的搭建,并且编写了一个简单的入门Demo。在实际项目中,还需要考虑服务的负载均衡策略、容错机制、监控等高级特性。Dubbo提供了丰富的配置项和扩展点,可以根据需求进行定制,以...
在这个“dubbo入门demo样例”中,我们将探讨如何使用Dubbo构建一个简单的服务消费者和服务提供者。 首先,项目采用Maven作为构建工具,Maven可以帮助我们管理项目的依赖关系,简化构建过程。在项目中,你将看到两个...
1. `Dubbo入门---搭建一个最简单的Demo框架 - CSDN博客.html`:这是一个CSDN博客文章,很可能详细介绍了如何搭建这个Dubbo Demo,包括步骤、配置、代码示例等。CSDN是中国知名的程序员社区,其中的博客文章通常由...
【标题】"dubbo资源 dubbo-admin dubbo demo" 提供的是关于Apache Dubbo的相关素材,主要包括了Dubbo-admin的管理和示例项目。Dubbo是一个高性能、轻量级的开源Java RPC框架,它提供了丰富的服务治理功能,是阿里...
Spring Dubbo Demo是一个基于Spring和Dubbo框架的简单示例项目,主要用于展示如何在IntelliJ IDEA(简称Idea)开发环境中实现生产者-消费者模式。在这个项目中,我们将探讨Dubbo的核心概念、Spring整合Dubbo的方式...
基于springboot的dubbo微服务应用demo,加入了springHttpInvoker接口作为学习测试 api模块为公共实体及服务接口,内有测试用的sql数据脚本 consumer为dubbo服务的消费者及测试 两个provider为不同的dubbo服务...
本地搭建一套dubbo架构demo,包括zookeeper及后台DubboKeeper dubbo-admin后台管理 dubbo-monitor简易监控中心
Dubbo是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点 这是我参照前人自己搭建的一个demo,详细过程可以参考 ...
这个“dubbo+zookeeper+spring -demo”是一个实际应用了这三者的分布式系统演示项目。 1. **Dubbo服务框架**: Dubbo的核心设计理念是面向接口的编程,它允许服务提供者暴露服务,而服务消费者透明地调用。服务...