分布式架构Dubbo
Posted 小诚信驿站
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分布式架构Dubbo相关的知识,希望对你有一定的参考价值。
谨以此文献给正在奋斗的你。
1、Dubbo定义
Dubbo 是由阿里巴巴开放的高性能,基于java的RPC框架。 与许多RPC系统一样,dubbo基于定义服务的思想,指定可以使用其参数和返回类型远程调用的方法。 在服务器端,服务器实现该接口并运行dubbo服务器来处理客户端调用。 在客户端,客户端有一个stub,提供与服务器相同的方法。
2、Dubbo架构
Dubbo提供三个关键功能,包括基于接口的远程呼叫,容错和负载平衡以及自动服务注册和发现。 Dubbo框架在阿里巴巴以外,其他公司包括京东,当当,去哪儿,考拉等在内。
3、指南
本指南通过一个简单的工作示例让您以Java中的dubbo开始。 您可以在github上的dubbo项目中找到目录“dubbo-demo”中的完整工作示例。
3.1必要前提条件
JDK: version 6 or higher
Maven: version 3 or higher
3.2Maven依赖
你可以使用最新的发布包去构建你的dubbo应用
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.5</version></dependency>
3.3定义service接口
由于服务提供商(servise provider)和服务使用者(service consumer)都依赖于相同的接口,因此强烈建议将下面的接口定义放在一个可以由提供者模块和消费者模块共享的单独模块中。
package com.alibaba.dubbo.demo;public interface DemoService { String sayHello(String name);
}
3.4实现service provider
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;
}
}
3.5配置service provider
下面的代码片段显示了dubbo服务提供程序如何配置spring框架,这是建议的,但是如果是首选,还可以使用API配置。
<?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"/>
<!-- 使用zookeeper注册中心暴露服务地址 端口是zookeeper 中配置的2181-->
<dubbo:registry address="zookeeper://127.0.0.1:2181"/>
<!-- 组播注册 -->
<!--<dubbo:registry address="multicast://224.5.6.7:1234"/>-->
<!-- 用dubbo协议在20880端口暴露服务 -->
<dubbo:protocol name="dubbo" port="20880"/>
<!-- 声明需要暴露的服务接口 -->
<dubbo:service interface="com.alibaba.dubbo.demo.DemoService" ref="demoService"/>
<!-- 具体的实现bean -->
<bean id="demoService" class="com.alibaba.dubbo.demo.provider.DemoServiceImpl"/></beans>
3.5启动service provider
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();
System.in.read(); // press any key to exit
}
}
3.6配置service consumer
再次,下面的代码演示了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="demo-consumer"/>
<!-- 使用zookeeper注册中心暴露服务地址 -->
<dubbo:registry address="zookeeper://127.0.0.1:2181" />
<!-- 组播注册 -->
<!--<dubbo:registry address="multicast://224.5.6.7:1234"/>-->
<!-- 生成远程服务代理,可以像使用本地bean一样使用DemoService -->
<dubbo:reference id="demoService" interface="com.alibaba.dubbo.demo.DemoService"/></beans>
3.7运行service consumer
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();
DemoService demoService = (DemoService) context.getBean("demoService"); // obtain proxy object for remote invocation
String hello = demoService.sayHello("world"); // execute remote invocation
System.out.println(hello); // show the result
}
}
Dubbo用户手册
Dubbo管理员手册
以上是关于分布式架构Dubbo的主要内容,如果未能解决你的问题,请参考以下文章