Dubbo原理简介、与Zookeeper整合利用
官方文档:http://dubbo.io/books/dubbo-user-book/
Dubbo的简单介绍
Dubbo是一个分布式服务框架,架构如图:
节点角色说明:
Provider: 暴露服务的服务提供方。
Consumer: 调用远程服务的服务消费方。
Registry: 服务注冊与发现的注冊中心。
Monitor: 统计服务的调用次调和调用时间的监控中心。
Container: 服务执行容器。
调用关系说明:
0. 服务容器负责启动,载入,执行服务提供者。
1. 服务提供者在启动时,向注冊中心注冊自己提供的服务。
2. 服务消费者在启动时。向注冊中心订阅自己所需的服务。
3. 注冊中心返回服务提供者地址列表给消费者,假设有变更。注冊中心将基于长连接推送变更数据给消费者。
4. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,假设调用失败。再选还有一台调用。
5. 服务消费者和提供者,在内存中累计调用次数和调用时间。定时每分钟发送一次统计数据到监控中心。
Dubbo提供了非常多协议,Dubbo协议、RMI协议、Hessian协议,我们查看Dubbo源码,有各种协议的实现,如图所看到的:
我们之前没用Dubbo之前时,大部分都使用Hessian来使用我们服务的暴露和调用,利用HessianProxyFactory调用远程接口。
Dubbo与Zookeeper整合使用
第一步:在Linux上安装Zookeeper
Zookeeper作为Dubbo服务的注冊中心,Dubbo原先基于数据库的注冊中心,没採用Zookeeper。Zookeeper一个分布式的服务框架。是树型的文件夹服务的数据存储,能做到集群管理数据 ,这里能非常好的作为Dubbo服务的注冊中心,Dubbo能与Zookeeper做到集群部署,当提供者出现断电等异常停机时,Zookeeper注冊中心能自己主动删除提供者信息,当提供者重新启动时,能自己主动恢复注冊数据,以及订阅请求。我们先在linux上安装Zookeeper,我们安装最简单的单点,集群比較麻烦。
(1)下载Zookeeper-3.4.6.tar.gz 地址http://www.apache.org/dist/zookeeper/
(2) 我们放到Linux下的一个目录。然后解压:
#tar zxvf zookeeper-3.4.6.tar.gz
(3)然后在相应的zookeeper-3.4.6/conf 下有一个文件zoo_sample.cfg的这个文件中面配置了监听client连接的port等一些信息。Zookeeper 在启动时会找zoo.cfg这个文件作为默认配置文件,所以我们复制一个名称为zoo.cfg的文件。如图所看到的:
我们查看一下这个文件的里面的一些配置信息。如图所看到的:
说明:
clientPort:监听客户端连接的port。
tickTime:基本事件单元,以毫秒为单位。它用来控制心跳和超时,默认情况下最小的会话超时时间为两倍的 tickTime。
我们能够对配置文件的port等或者进行高级配置和集群配置比如:maxClientCnxns:限制连接到 ZooKeeper 的client的数量等
(4)启动Zookeeper 的服务,如图所看到的:
到这边Zookeeper的安装和配置完毕
第二步:配置dubbo-admin的管理页面,方便我们管理页面
(1)下载dubbo-admin-2.4.1.war包。在Linux的tomcat部署,先把dubbo-admin-2.4.1放在tomcat的webapps/ROOT下。然后进行解压:
(2)然后到webapps/ROOT/WEB-INF下,有一个dubbo.properties文件。里面指向Zookeeper ,使用的是Zookeeper 的注冊中心。如图所看到的:
多个地址:
dubbo.registry.address=zookeeper://10.143.92.xx:2181?backup=10.143.92.xx:2181,10.143.92.xx:2181,10.143.92.xx:2181,10.143.92.xx:2181
(3)然后启动tomcat服务,username和password:root,并訪问服务,显示登陆页面。说明dubbo-admin部署成功。如图所看到的:
Dubbo原理简介、与Zookeeper整合利用的更多相关文章
- Dubbo(1)简介和Zookeeper安装
一.简介: Dubbo主页地址 http://dubbo.io/ Dubbo百度百科:https://baike.baidu.com/item/Dubbo/18907815?fr=aladdin 二 ...
- SpringBoot下的Dubbo和Zookeeper整合
最近一直在学各种分布式的内容,学到了dubbo分布式服务框架就想写个小demo使用一下,但是由于我要整合在SpringBoot框架中,SpringBoot框架毕竟提倡的是java注解配置,XML文件不 ...
- 最新的dubbo和zookeeper整合的问题
最新的dubbo和zookeeper整合的问题 生活本不易,流人遂自安 博主最新在做小项目练手,在进行dubbo和zookeeper整合的时候遇到了一些问题,在这里这些问题做个小总结吧. 首先需要说明 ...
- Springboot+dubbo+zookeeper整合
本想自己搭建一个Spring+dubbo+zookeeper整合好的框架,想寻找个最佳实现但是遇到各种各样的问题,只好自己看看dubbo starter的源码 整理如下: 通过打上断点来看配置的对不对 ...
- DUBBO原理、应用与面经总结
研读dubbo源码已经有一段时间了,dubbo中有非常多优秀的设计模式和示例代码值得学习,但是dubbo的调用层级和方法链都较为繁杂,如果不对源码思路进行梳理则很容易忘却,因此总结一篇研读心得,从阅读 ...
- Dubbo原理剖析 之 @DubboReference.version设置为*
原文链接 Dubbo原理剖析 之 @DubboReference.version设置为* 1 背景 Dubbo在消费端提供了一个功能,即将消费者的版本号指定为*,那么不管服务端的接口版本是啥,都可以调 ...
- Dubbo 原理和机制详解 (非常全面)
Dubbo 是一款Java RPC框架,致力于提供高性能的 RPC 远程服务调用方案.作为主流的微服务框架之一,Dubbo 为开发人员带来了非常多的便利. 大家好,我是 mikechen,专注分享「互 ...
- kafka原理简介并且与RabbitMQ的选择
kafka原理简介并且与RabbitMQ的选择 kafka原理简介,rabbitMQ介绍,大致说一下区别 Kafka是由LinkedIn开发的一个分布式的消息系统,使用Scala编写,它以可水平扩展和 ...
- Dubbo原理和源码解析之服务引用
一.框架设计 在官方<Dubbo 开发指南>框架设计部分,给出了引用服务时序图: 另外,在官方<Dubbo 用户指南>集群容错部分,给出了服务引用的各功能组件关系图: 本文将根 ...
随机推荐
- fork(2) - Linux man page
fork(2): create child process - Linux man page https://linux.die.net/man/2/fork fork(2) - Linux man ...
- MyBatis 内置日志工厂基于运行时自省机制选择合适的日志工具
mybatis – MyBatis 3 | 日志 http://www.mybatis.org/mybatis-3/zh/logging.html MyBatis 内置日志工厂基于运行时自省机制选择合 ...
- QQ 空间过滤器 for V8
最近 QQ空间升级到 V8 版本,做了很大的调整, 我也做了升级,由于时间关系,功能暂时只有 模块过滤,其他过滤请等待后续更新,谢谢大家的支持! 刚刚上线,不知道你们能否看到 https://chro ...
- python 面向对象· self 讲解
self就是参数 以形参形式 5.self是什么鬼? self是一个python自动会给传值的参数 那个对象执行方法,self就是谁. obj1.fetch('selec...') self=obj1 ...
- List的三个子类ArrayList,LinkedList,Vector区别
一:List的三个子类的特点 ArrayList: 底层数据结构是数组,查询快,增删慢. 线程不安全,效率高.Vector: 底层数据结构是数组,查询快,增删慢. 线程安全,效率低.Vector相对A ...
- Java-idea-常用技巧-转maven,解决包依赖冲突
1.Intellij IDEA如何将普通工程转换成maven工程 项目上右键 Add Framework Support,选择maven 2.Intellij IDEA 自动生成 serialVers ...
- 301-React Ext-React创建组件的三种方式及其区别
一.概述 React推出后,出于不同的原因先后出现三种定义react组件的方式,殊途同归:具体的三种方式: 函数式定义的无状态组件 es5原生方式React.createClass定义的组件 es6形 ...
- 数据网格和树-EasyUI Datagrid 数据网格、EasyUI Propertygrid 属性网格、EasyUI Tree 树、EasyUI Treegrid 树形网格
EasyUI Datagrid 数据网格 扩展自 $.fn.panel.defaults.通过 $.fn.datagrid.defaults 重写默认的 defaults. 数据网格(datagrid ...
- fold change的意义[转载]
转自:https://zhidao.baidu.com/question/2052933434631672387.html 1.解释 解释:表达值倍数变化 ,分析,消除可能的混杂因素,必要时可以用读段 ...
- google chrome插件开发,自己动手,丰衣足食
因为平时上网都用chrome,但总感觉除了速度快,简洁以外总还有地方满足不了我的需要,然后找插件…后来发现,插件虽然海量但找个称心如意的也不是件容易的事儿,用在找插件的时间都能自己写一个了,于是,今年 ...