分布式框架Dubbo入门
Dubbo简介
Dubbo是一个Alibaba开源的分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。dubbo就是个服务框架,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求说白了就是个远程服务调用的分布式框架,基于WebService。并且Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载。
Dubbo架构
说明:
Provider: 暴露服务的服务提供方。
Consumer: 调用远程服务的服务消费方。
Registry: 服务注册与发现的注册中心。
Monitor: 统计服务的调用次调和调用时间的监控中心。
Container: 服务运行容器。
调用关系说明:
服务容器负责启动,加载,运行服务提供者。
服务提供者在启动时,向注册中心注册自己提供的服务。
服务消费者在启动时,向注册中心订阅自己所需的服务。
注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
通过调用关系我们知道注册中心在整个项目中起到了一个中介和调度的作用,非常重要,关于注册中心官方推荐使用ZooKeeper
,下面了解一下ZooKeeper
ZooKeeper
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现
为什么使用ZooKeeper
Zookeeper是Apacahe Hadoop的子项目,是一个树型的目录服务,支持变更推送,适合作为Dubbo服务的注册中心,工业强度较高,可用于生产环境,并推荐使用
ZooKeeper安装
官网下载解压包,官网地址:http://zookeeper.apache.org/
Windows
Windows下Zookeeper不需要安装,直接运行解压完文件中的bin/zkServer.cmd
即可启动成功
Linux
安装jdk
先将下载的
zookeeper-3.3.6.tar.gz
上传到linux系统。解压缩压缩包
tar -zxvf zookeeper-3.4.6.tar.gz
进入zookeeper-3.4.6目录,创建data文件夹。
把
zoo_sample.cfg
改名为zoo.cfg
命令:mv zoo_sample.cfg zoo.cfg
修改
zoo.cfg
中的dataDir
属性,属性为上面新建data文件夹路径(进入data文件夹,然后使用pwd则可以显示全部路径)进入bin目录 启动:
./zkServer.sh start
关闭:./zkServer.sh stop
查看状态./zkServer.sh status
需要关闭防火墙
配置Dubbo
使用的时候需要保证两个项目中有相同的服务接口,即调用的服务类要实现接口,这个接口两个项目中都需要存在。
两个项目也都需要引入dubbo的jar和配置好Spring
引入对应的jar , 已经配置好Spring
maven:
com.alibaba
dubbo
org.springframework
spring
org.jboss.netty
netty
org.apache.zookeeper
zookeeper
com.github.sgroschupf
zkclient
```
编写对应的类
// 接口
public interface DubboInterface {
public String getMessage();
} // 服务类 public class DubboTest implements DubboInterface{
public String getMessage() {
return "Dubbo调用服务成功";
}
}
在Spring文件中配置服务提供方
<bean id="dubbo" class="dubbo.test.DubboTest"/> <!-- 使用dubbo发布服务 -->
<!-- 提供方应用信息,用于计算依赖关系 -->
<dubbo:application name="blog-manager" />
<dubbo:registry protocol="zookeeper" address="127.0.0.1:2181" /> // zookeeper所在机器的ip
<!-- 用dubbo协议在20880端口暴露服务 -->
<dubbo:protocol name="dubbo" port="20880" />
<dubbo:service interface="dubbo.test.DubboInterface" ref="dubbo" timeout="30000"/> // 此时服务方Dubbo已经配置完成
配置调用方Spring
<!-- dubbo -->
<!-- 服务调用方 -->
<dubbo:application name="e3-blog-web"/>
<!-- zookeeper -->
<dubbo:registry protocol="zookeeper" address="127.0.0.1:2181"/>
<!-- 调用对应的服务 -->
<!-- 生成远程服务代理,可以像使用本地bean一样使用demoService -->
<dubbo:reference interface="dubbo.test.DubboInterface" id="dubbo" />调用方使用服务
@Controller
public class DubboCustorm { @Autowired
private DubboInterface dubbo ; public void custrom(){
System.out.println(dubbo.getMessage());
} }输出结果
分布式框架Dubbo入门的更多相关文章
- Dubbox分布式框架之入门
Dubbox简介 Dubbox是一个分布式服务框架,其前身是阿里巴巴开源项目Dubbox,被国内电商及换联网项目中使用,后期阿里巴巴停止了该项目的维护,当当网便在Dubbo基础上进行优化,并继续维护, ...
- 分布式服务框架dubbo入门实例
dubbo是一个分布式的服务架构,可直接用于生产环境作为SOA服务框架. 官网首页:http://dubbo.io/ ,官方用户指南 http://dubbo.io/User+Guide-zh.htm ...
- 分布式服务框架Dubbo入门案例和项目源码
本项目源代码:http://download.csdn.net/detail/fansunion/9498406 Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案, 是 ...
- 阿里分布式开源框架DUBBO 入门+ 进阶+ 项目实战视频教程
史诗级Java/JavaWeb学习资源免费分享 欢迎关注我的微信公众号:"Java面试通关手册"(坚持原创,分享各种Java学习资源,面试题,优质文章,以及企业级Java实战项目回 ...
- 分布式框架Dubbo配置和实例
准备工作: 1.ZooKeeper:需要去Apache Zookeeper官网下载Zookeeper.tar.gz包,Dubbo是依赖于Zookeeper的 2.Maven:需要去Apache Mav ...
- java学习笔记(二)分布式框架Dubbo+zookeeper搭建
参考文章http://www.cnblogs.com/sxjun/p/6963844.html 注意的几个问题: 1.配置dubbo.properties 将以下地址改为你Zookeeper注册的地址 ...
- Dubbo入门—搭建一个最简单的Demo框架
一.Dubbo背景和简介 1.电商系统的演进 Dubbo开始于电商系统,因此在这里先从电商系统的演变讲起. a.单一应用框架(ORM) 当网站流量很小时,只需一个应用,将所有功能如下单支付等都部署在一 ...
- Dubbo入门---搭建一个最简单的Demo框架(转)
Dubbo背景和简介 Dubbo开始于电商系统,因此在这里先从电商系统的演变讲起. 单一应用框架(ORM) 当网站流量很小时,只需一个应用,将所有功能如下单支付等都部署在一起,以减少部署节点和成本. ...
- Dubbo入门介绍---搭建一个最简单的Demo框架
Dubbo入门---搭建一个最简单的Demo框架 置顶 2017年04月17日 19:10:44 是Guava不是瓜娃 阅读数:320947 标签: dubbozookeeper 更多 个人分类: D ...
随机推荐
- 每周分享之 二 http协议(1)
本次分享http协议,共分为三部分,这是第一部分,主要讲解http的发展历程,各个版本,以及各个版本的特点. 一:http/0.9 最早版本是1991年发布的0.9版.该版本极其简单,只有一个命令GE ...
- Cow Exhibition 变种背包
Cow Exhibition Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Subm ...
- Robberies hdu 2955 01背包
Robberies Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- 通过npm写一个cli命令行工具
前言 如果你想写一个npm插件,如果你想通过命令行来简化自己的操作,如果你也是个懒惰的人,那么这篇文章值得一看. po主的上一篇文章介绍了定制自己的模版,但这样po主还是不满足啊,项目中我们频繁的需要 ...
- 解决-Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HO问题
原因:因为你的编译工具(eclipse/Myeclipse...)没有添加jdk.添加M2_HOME的环境变量. 解决: ①:window->Preferences->java->I ...
- 由String的构造方法引申出来的java字符编码
在String类的constructors中,有一个constructor是将int数组类型转化为字符串: int[] num = {48,49,50,51,52}; String numStr = ...
- SAP 月结F.19与GR/IR
http://blog.sina.com.cn/s/blog_3eeba40101008v75.html 为什么要做月结?月结究竟都结些啥? 月结的目的和手段都不知道,只知道一部分.月结,为了出资产负 ...
- 学习flex布局(弹性布局)
Flex是Flexible Box的缩写,意为弹性布局.是W3C早期提出的一个新的布局方案.可以便捷的实现页面布局,目前较高版本的主流浏览器都能兼容,兼容情况如下: Flex在移动端开发上已是主流,比 ...
- win10 uwp 获得焦点改变
本文讲的是当我们应用失去焦点时,我们获得事件,当我们应用获得焦点,同样获得事件.同时,在应用不可以见时,我们也可以获得. 上面一张图,开始是应用启动,获得焦点,应用显示.然后我们打开另一个应用,切换, ...
- win10应用 UWP 使用MD5算法
windows有自带的算法来计算MD5 原本在WPF是 private string get_MD5(string str) { System.Security.Cryptography.MD5Cry ...