`

dubbo框架例子探究

阅读更多

       最近项目中有用到dubbo技术框架作为分布式服务的架子,作为用了一段时间的使用者来讲,dubbo确实是一个不错的SOA框架,用着很舒服,而且还比较轻量,这里写一个例子来简单介绍一下dubbo.

      在任何的SOA框架中,面向服务都得需要三个参与者,第一个是服务提供者,第二个是消费者,第三个是提供服务路由的服务监控者。在dubbo中同样也是基于这三部分的。

      1.服务提供者:基于接口编程,提供对该接口的实现,把接口注册到注册中心。

      2.注册中心:提供服务路由的管理中心,方便消费者找到提供者

      3.消费者:根据路由到的服务提供者,调用接口服务实现。

      Dubbo的路由规则,在服务中有接口类、组名、版本号唯一定位一个服务,大体的格式如下:

        com.DemoService/group1/0.0.1,如果对于同一个服务有不同的实现,可以通过组名和版本号区分,而消费者在调用服务时,也是需要指定对应的组名和版本号。

     以下是一个很简单的例子:

     首先是服务端:

      1.先定义一个接口类

       

package service;

public interface DemoService {

	public String sayHello(String name);
}

    2.增加一个该接口的实现

   

import service.DemoService;


public class DemoServiceImpl implements DemoService{

	@Override
	public String sayHello(String name) {
		// TODO Auto-generated method stub
		return "你好," + name;
	}

}

    3.服务暴露

    对于服务的暴露,有一个地方是要注意的,就是最后一句话System.out.println("暴露成功");dubbo服务是需要一直提供的,这句话的含义就是为了阻塞线程。但是在linux后台启动服务的方式下,这样的方式有时候是不起作用的,根据线程阻塞的原理,使用了第二种的方式,以下会有介绍。

import java.io.IOException;

import service.DemoService;

import com.alibaba.dubbo.config.ApplicationConfig;
import com.alibaba.dubbo.config.ProtocolConfig;
import com.alibaba.dubbo.config.RegistryConfig;
import com.alibaba.dubbo.config.ServiceConfig;


public class Main {
	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		//加载应用配置
    	ApplicationConfig config = new ApplicationConfig();
    	config.setName("1111");
    	
    	RegistryConfig registry = new RegistryConfig();
    	//registry.setProtocol(iniUtil.getValue("zookeeper.protocol"));
    	registry.setAddress("zookeeper://192.168.6.184:2181");
    	
    	ProtocolConfig protocol = new ProtocolConfig();
    	protocol.setName("dubbo");
    	protocol.setPort(20191);
    	protocol.setThreads(200);
    	
    	//应用服务启动
    	DemoService service = new DemoServiceImpl();
    	ServiceConfig<DemoService> appService = new ServiceConfig<DemoService>();
    	appService.setApplication(config);
    	appService.setRegistry(registry);
    	appService.setProtocol(protocol);
    	appService.setInterface(DemoService.class);
    	appService.setRef(service);
    	//增加组名和版本
//    	appService.setGroup("group1");
//    	appService.setVersion("0.0.1");
    	
    	
    	appService.export();
    	System.out.println("暴露成功");
    	
    	System.in.read();
	}

}

   线程阻塞方式

synchronized (obj) {
			try {
				obj.wait();
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

    再看看注册中心

1.对于注册中心,只需要启动zookeeper即可,真正的配置是在消费者和提供者中配置的。

  registry.setAddress("zookeeper://192.168.6.184:2181");

这里要注意正确地址的写法,zookeeper要写完整

 

再来看看消费者

消费者只需要提供注册中心地址,以及要获取的服务接口(如有需要组名和版本号也是需要的),就可以直接获取服务调用了。

import service.DemoService;

import com.alibaba.dubbo.config.ApplicationConfig;
import com.alibaba.dubbo.config.ReferenceConfig;
import com.alibaba.dubbo.config.RegistryConfig;


public class ClientMain {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		// 当前应用配置
		ApplicationConfig application = new ApplicationConfig();
		application.setName("yyy");

		// 连接注册中心配置
		RegistryConfig registry = new RegistryConfig();
		registry.setAddress("zookeeper://192.168.6.184:2181");

		// 注意:ReferenceConfig为重对象,内部封装了与注册中心的连接,以及与服务提供方的连接

		// 引用远程服务
		ReferenceConfig<DemoService> reference = new ReferenceConfig<DemoService>(); // 此实例很重,封装了与注册中心的连接以及与提供者的连接,请自行缓存,否则可能造成内存和连接泄漏
		reference.setApplication(application);
		reference.setRegistry(registry); // 多个注册中心可以用setRegistries()
		reference.setInterface(DemoService.class);

		// 和本地bean一样使用xxxService
		DemoService re = reference.get(); // 注意:此代理对象内部封装了所有通讯细节,对象较重,请缓存复用
	
		System.out.println(re.sayHello("ss"));
	}

}

 

  

分享到:
评论

相关推荐

    dubbo框架及dubbo环境搭建

    dubbo框架及dubbo环境搭建 Dubbo 框架是一种分布式服务框架,旨在提供高性能和透明化的 RPC 远程服务调用方案,以及 SOA 服务治理方案。 Dubbo 框架的核心部分包含远程通讯、集群容错和自动发现三个部分。 在 ...

    dubbo使用例子 dubbo使用例子

    首先,"dubbo使用例子"这个标题表明我们要讨论的是关于在实际项目中如何集成和使用Dubbo。Dubbo的核心功能包括服务注册与发现、远程调用、负载均衡、容错机制以及监控等。在实际应用中,Dubbo可以帮助我们构建微服务...

    Dubbo框架和SSM框架搭建

    Dubbo框架和SSM框架搭建。

    dubbo框架的代码

    【标题】"dubbo框架的代码" Dubbo是阿里巴巴开源的一款高性能、轻量级的Java分布式服务框架,它旨在提高微服务架构中的服务治理效率,促进服务间的通信和协同。Dubbo的核心特性包括服务发现、服务调用、负载均衡、...

    Dubbo框架视屏讲解

    ### Dubbo框架详解 #### 一、Dubbo框架概述 Dubbo是由阿里巴巴开源的一款高性能、轻量级的微服务框架,旨在提供一个基于Java的分布式服务解决方案。它可以帮助开发者更轻松地构建、部署和管理复杂的应用程序和服务...

    分布式dubbo框架项目解说

    分布式Dubbo框架是一种高性能的Java RPC框架,它基于微服务的设计理念,用于实现服务的注册与发现,以及服务之间的通信。在公司级项目中,分布式Dubbo框架常用于构建微服务架构,将大型的单一应用程序拆分为一组小的...

    Dubbo框架技术开发文档

    【Dubbo框架技术开发文档】 Dubbo是一款由阿里巴巴开源的高性能、轻量级的Java RPC框架,它专注于服务治理,提供了服务注册、发现、调用、负载均衡、容错、监控等一系列完整的服务治理方案。本文档将深入探讨Dubbo...

    dubbo入门例子

    【标题】"dubbo入门例子"提供了一个适合初学者了解和学习Dubbo的简单实践,这个实例通过Spring框架进行配置,旨在帮助新手快速上手分布式服务框架的基本操作。Dubbo是一个高性能、轻量级的开源Java RPC框架,由阿里...

    dubbo入门学习框架源码

    《Dubbo框架源码解析深度探索》 Dubbo,作为阿里巴巴开源的一款高性能、轻量级的服务治理框架,已经成为Java世界中分布式服务的重要选择。本文将深入探讨Dubbo的核心概念、设计模式以及源码实现,旨在帮助读者理解...

    DUBBO小例子

    【Dubbo小例子】是一个基于Java的开源RPC框架,它为服务治理提供了强大的支持,使得分布式系统的开发变得简单而高效。这个"简单实用"的例子旨在帮助开发者快速理解并上手Dubbo的核心功能。 首先,我们要了解Dubbo的...

    spring配置的dubbo 小例子

    通过这个小例子,我们可以了解到如何利用Spring配置Dubbo服务,包括服务的提供和消费、注册中心的设置以及基本的Spring配置。对于初学者来说,这是一个很好的起点,帮助理解Dubbo和Spring的整合以及分布式服务治理的...

    dubbo小例子

    【标题】"dubbo小例子"揭示了我们即将探讨的主题是关于Dubbo框架的一个实践应用,特别是它如何与ZooKeeper结合实现服务注册与发现。Dubbo,阿里巴巴开源的高性能Java RPC框架,允许服务提供者暴露服务给消费者,同时...

    dubbo入门例子程序

    【Dubbo入门例子程序】是针对初学者设计的一个简单示例,旨在帮助理解并快速上手Apache Dubbo这一高性能、轻量级的Java远程服务框架。这个例子通过一个"Hello, World!"的应用来演示Dubbo的基本用法,采用Maven作为...

    Dubbo框架设计原则ppt

    【标题】"Dubbo框架设计原则ppt"与【描述】"dubbo框架设计Java并发ppt"揭示了本次讨论的核心——Dubbo框架的设计原则以及在Java并发环境中的应用。这两个主题对于理解和优化分布式服务架构至关重要。 首先,让我们...

    dubbo框架标签dubbo.xsd

    Dubbo框架是阿里巴巴开源的一款高性能、轻量级的服务治理框架,它主要应用于分布式服务的开发、部署和管理。在使用Dubbo时,我们经常会遇到XML配置文件中的标签无法被识别的问题,这通常是因为缺少了对相关XML ...

    dubbo框架搭建文档

    【Dubbo框架搭建详解】 Dubbo,作为阿里巴巴开源的一款高性能、轻量级的Java RPC框架,旨在简化分布式系统开发,实现服务的透明调用。它提供了丰富的服务治理功能,包括服务注册与发现、负载均衡、容错机制、监控等...

    dubbo使用小例子

    【标题】"Dubbo使用小例子"涉及到的核心知识点主要集中在分布式服务框架Dubbo的实践应用上。Dubbo是由阿里巴巴开源的高性能、轻量级的服务治理框架,它主要应用于微服务架构中,提供服务的发布、订阅、调用等功能。...

    基于Dubbo框架的分布式视频网站架构设计.pdf

    因此,为了满足这些业务需求,设计并使用Dubbo框架对视频网站进行架构,可以充分利用Dubbo框架的技术优势,如高并发处理、高效的数据传输、强大的服务治理能力等。 通过视频网站案例的实验结果表明,使用Dubbo框架...

Global site tag (gtag.js) - Google Analytics