DUBBO 一个高性能,基于Java的开源RPC框架
2018-03-19 16:46
921 查看
1.Dubbo介绍
Dubbo是由阿里巴巴开源的基于Java的高性能RPC框架。和许多RPC系统一样,dubbo基于定义服务的想法,指定可以通过参数和返回类型远程调用的方法。在服务器端,服务器实现此接口并运行一个dubbo服务器来处理客户端调用。在客户端,客户端有一个存根,提供与服务器相同的方法。2.架构图
Dubbo提供三种主要功能,包括基于接口的远程呼叫,容错和负载均衡以及自动服务注册和发现。
3.快速入门
(1)引入依赖
<dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.5.3</version> </dependency>
(2)定义服务接口以及服务提供商
由于服务提供者和服务使用者都依赖于相同的接口,因此强烈建议将接口定义放在一个单独的模块中,该模块可由提供者模块和消费者模块共享。①编写服务接口:
package com.alibaba.dubbo.demo; public interface DemoService { String sayHello(String name); }
②编写服务提供商:
package com.alibaba.dubbo.demo.provider; import com.alibaba.dubbo.demo.DemoService; public class DemoServiceImpl implements DemoService { public String sayHello(String name) { return "Hello " + name; } }
③配置服务接口以及提供商:
<?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="demo-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.alibaba.dubbo.demo.DemoService" ref="demoService"/> <!-- 服务实现类 --> <bean id="demoService" class="com.alibaba.dubbo.demo.provider.DemoServiceImpl"/> </beans>
④启动服务提供商:
import org.springframework.context.support.ClassPathXmlApplicationContext; public class Provider { public static void main(String[] args) throws Exception { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( new String[] {"META-INF/spring/dubbo-demo-provider.xml"}); context.start(); // press any key to exit System.in.read(); } }
(3)配置服务消费者:
<?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.springframew 4000 ork.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 --> <dubbo:application name="demo-consumer"/> <!-- 使用multicast广播注册中心暴露发现服务地址 --> <!-- <dubbo:registry address="multicast://224.5.6.7:1234" /> --> <!-- 使用zookeeper注册中心暴露发现服务地址 --> <dubbo:registry address="zookeeper://127.0.0.1:2181" check="false"/> <dubbo:reference id="demoService" interface="com.alibaba.dubbo.demo.DemoService"/> </beans>
启动消费者:
import com.alibaba.dubbo.demo.DemoService; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Consumer { public static void main(String[] args) throws Exception { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( new String[]{"META-INF/spring/dubbo-demo-consumer.xml"}); context.start(); // obtain proxy object for remote invocation DemoService demoService = (DemoService) context.getBean("demoService"); // execute remote invocation String hello = demoService.sayHello("world"); // show the result System.out.println(hello); } }
(4)完成!
相关文章推荐
- 【Rpc】基于开源Dubbo分布式RPC服务框架的部署整合
- Java实现一个简单的RPC框架(五) 基于Socket的传输层实现
- 基于Netty的高性能JAVA的RPC框架
- 基于Netty的高性能JAVA的RPC框架
- 基于开源Dubbo分布式RPC服务框架的部署整合
- 基于开源Dubbo分布式RPC服务框架的部署整合
- 采用Best effort 1pc + 回滚补偿机制实现的一个distributed transaction (分布式事务框架).基于dubbo rpc服务上实现。
- 一个高性能RPC框架的连接管理
- Comet4J(Comet for Java)是一个纯粹基于AJAX(XMLHTTPRequest)的服务器推送框架,消息以JSON方式传递
- java分布式,基于开源框架实现消息方式
- 如何开发一个java开源框架-----Jvn框架之实现过滤静态文本跟参数转成实体类(第三讲)
- 如何开发一个java开源框架-----Jvn框架之实现文件的上传以及方法封装(第六讲)八哥实力讲解
- gRPC:Google开源的基于HTTP/2和ProtoBuf的通用RPC框架
- 如何开发一个java开源框架-----Jvn框架之实现自动生成在线文档(第七讲)
- 如何开发一个java开源框架-----Jvn框架之实现浏览器传参后台转成Bean(第四)
- 如何开发一个java开源框架-----Jvn入门篇
- 基于dubbo框架下的RPC通讯协议性能测试
- 介绍一个国内开源Java Web框架
- 如何开发一个java开源框架-----Jvn框架之实现mvc框架模式(第一讲)
- 一个高性能RPC框架原理剖析