最近项目中有用到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 框架是一种分布式服务框架,旨在提供高性能和透明化的 RPC 远程服务调用方案,以及 SOA 服务治理方案。 Dubbo 框架的核心部分包含远程通讯、集群容错和自动发现三个部分。 在 ...
首先,"dubbo使用例子"这个标题表明我们要讨论的是关于在实际项目中如何集成和使用Dubbo。Dubbo的核心功能包括服务注册与发现、远程调用、负载均衡、容错机制以及监控等。在实际应用中,Dubbo可以帮助我们构建微服务...
Dubbo框架和SSM框架搭建。
【标题】"dubbo框架的代码" Dubbo是阿里巴巴开源的一款高性能、轻量级的Java分布式服务框架,它旨在提高微服务架构中的服务治理效率,促进服务间的通信和协同。Dubbo的核心特性包括服务发现、服务调用、负载均衡、...
### Dubbo框架详解 #### 一、Dubbo框架概述 Dubbo是由阿里巴巴开源的一款高性能、轻量级的微服务框架,旨在提供一个基于Java的分布式服务解决方案。它可以帮助开发者更轻松地构建、部署和管理复杂的应用程序和服务...
分布式Dubbo框架是一种高性能的Java RPC框架,它基于微服务的设计理念,用于实现服务的注册与发现,以及服务之间的通信。在公司级项目中,分布式Dubbo框架常用于构建微服务架构,将大型的单一应用程序拆分为一组小的...
【Dubbo框架技术开发文档】 Dubbo是一款由阿里巴巴开源的高性能、轻量级的Java RPC框架,它专注于服务治理,提供了服务注册、发现、调用、负载均衡、容错、监控等一系列完整的服务治理方案。本文档将深入探讨Dubbo...
【标题】"dubbo入门例子"提供了一个适合初学者了解和学习Dubbo的简单实践,这个实例通过Spring框架进行配置,旨在帮助新手快速上手分布式服务框架的基本操作。Dubbo是一个高性能、轻量级的开源Java RPC框架,由阿里...
《Dubbo框架源码解析深度探索》 Dubbo,作为阿里巴巴开源的一款高性能、轻量级的服务治理框架,已经成为Java世界中分布式服务的重要选择。本文将深入探讨Dubbo的核心概念、设计模式以及源码实现,旨在帮助读者理解...
【Dubbo小例子】是一个基于Java的开源RPC框架,它为服务治理提供了强大的支持,使得分布式系统的开发变得简单而高效。这个"简单实用"的例子旨在帮助开发者快速理解并上手Dubbo的核心功能。 首先,我们要了解Dubbo的...
通过这个小例子,我们可以了解到如何利用Spring配置Dubbo服务,包括服务的提供和消费、注册中心的设置以及基本的Spring配置。对于初学者来说,这是一个很好的起点,帮助理解Dubbo和Spring的整合以及分布式服务治理的...
【标题】"dubbo小例子"揭示了我们即将探讨的主题是关于Dubbo框架的一个实践应用,特别是它如何与ZooKeeper结合实现服务注册与发现。Dubbo,阿里巴巴开源的高性能Java RPC框架,允许服务提供者暴露服务给消费者,同时...
【Dubbo入门例子程序】是针对初学者设计的一个简单示例,旨在帮助理解并快速上手Apache Dubbo这一高性能、轻量级的Java远程服务框架。这个例子通过一个"Hello, World!"的应用来演示Dubbo的基本用法,采用Maven作为...
【标题】"Dubbo框架设计原则ppt"与【描述】"dubbo框架设计Java并发ppt"揭示了本次讨论的核心——Dubbo框架的设计原则以及在Java并发环境中的应用。这两个主题对于理解和优化分布式服务架构至关重要。 首先,让我们...
Dubbo框架是阿里巴巴开源的一款高性能、轻量级的服务治理框架,它主要应用于分布式服务的开发、部署和管理。在使用Dubbo时,我们经常会遇到XML配置文件中的标签无法被识别的问题,这通常是因为缺少了对相关XML ...
【Dubbo框架搭建详解】 Dubbo,作为阿里巴巴开源的一款高性能、轻量级的Java RPC框架,旨在简化分布式系统开发,实现服务的透明调用。它提供了丰富的服务治理功能,包括服务注册与发现、负载均衡、容错机制、监控等...
【标题】"Dubbo使用小例子"涉及到的核心知识点主要集中在分布式服务框架Dubbo的实践应用上。Dubbo是由阿里巴巴开源的高性能、轻量级的服务治理框架,它主要应用于微服务架构中,提供服务的发布、订阅、调用等功能。...
因此,为了满足这些业务需求,设计并使用Dubbo框架对视频网站进行架构,可以充分利用Dubbo框架的技术优势,如高并发处理、高效的数据传输、强大的服务治理能力等。 通过视频网站案例的实验结果表明,使用Dubbo框架...