Dubbo简介及其与ZooKeeper的关系
Dubbo简介及其与ZooKeeper的关系
| Dubbo与ZooKeeper系列文章
Dubbo简介及其与ZooKeeper的关系(本文)
| 分布式与集群
比喻例子:小饭店原来只有一个厨师,切菜洗菜备料炒菜全干,后来客人多了,厨房一个厨师忙不过来,又请了一个厨师,两个厨师都炒一样的菜,这两个厨师的关系是集群,为了让厨师专心炒菜,把菜做到极致,又请了个配菜师负责切菜,备菜,备料,厨师和配菜师的关系是分布式,一个配菜师也忙不过来,又请了一个配菜师,这两个配菜师的关系是集群。分布式讲究的是协作,一个事件的发生可以触发多个事件同时进行不同的业务运算。而集群中的成员功能是一样的。
| dubbo是什么
假如A工程想调用B工程中的方法,import不进来,这时候就需要远程调用了,怎么远程调用呢?
有人会说可以使用HttpGet/HttpPost进行远程调用,这种方式适合访问量比较小,业务简单的情况下。访问量特别大,业务非常复杂的时候,会产生以下问题:
1. 当服务越来越多时,服务 URL 配置管理变得非常困难,F5 硬件负载均衡器的单点压力也越来越大。此时需要一个服务注册中心,动态地注册和发现服务,使服务的位置透明。并通过在消费方获取服务提供方地址列表,实现软负载均衡和 Failover,降低对 F5 硬件负载均衡器的依赖,也能减少部分成本。
2. 当进一步发展,服务间依赖关系变得错踪复杂,甚至分不清哪个应用要在哪个应用之前启动,架构师都不能完整的描述应用的架构关系。这时,需要自动画出应用间的依赖关系图,以帮助架构师理清理关系。
3. 接着,服务的调用量越来越大,服务的容量问题就暴露出来,这个服务需要多少机器支撑?什么时候该加机器? 为了解决这些问题,第一步,要将服务现在每天的调用量,响应时间,都统计出来,作为容量规划的参考指标。其次,要可以动态调整权重,在线上,将某台机器的权重一直加大,并在加大的过程中记录响应时间的变化,直到响应时间到达阈值,记录此时的访问量,再以此访问量乘以机器数反推总容量。
Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成。
Dubbo提供了三大核心能力:
面向接口的远程方法调用:透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。
智能容错和负载均衡:软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点。
服务自动注册和发现:不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者。
| dubbo架构
dubbo架构图:
节点角色说明:
|
节点 |
角色说明 |
|
Provider |
暴露服务的服务提供方 |
|
Consumer |
调用远程服务的服务消费方 |
|
Registry |
服务注册与发现的注册中心 |
|
Monitor |
统计服务的调用次数和调用时间的监控中心 |
|
Container |
服务运行容器 |
调用关系说明:
服务容器负责启动,加载,运行服务提供者。
服务提供者在启动时,向注册中心注册自己提供的服务。
服务消费者在启动时,向注册中心订阅自己所需的服务。
注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
Dubbo 架构具有连通性、健壮性、伸缩性、以及向未来架构的升级性。
| dubbo和zookeeper的关系
简单来说,打个比方:dubbo就是动物园的动物,zookeeper是动物园。如果游客想看动物的话那么就去动物园看。比如你要看老虎,那么动物园有你才能看到。换句话说我们把很多不同的dubbo(动物)放到zookeeper(动物园中)提供给我们游客进行观赏。这个过程中三个关键:场所、提供者、消费者。
再说一个分布式的项目,提供者与消费者被拆分了开来,部署在不同的tomcat中,我在消费者中需要调用提供者的接口,但是两个运行在不同tomcat下的服务无法直接互调接口,那么就可以通过zookeeper和dubbo实现。就好比把动物放到动物园,我们要看了直接去动物园就行。而不能直接去动物生活的地方去看,会有性命安全之忧(比如你去看老虎)。
我们通过dubbo建立提供者服务,并且到zookeeper上面注册,填写对应的zookeeper服务所在的IP及端口号。即zokeeper (注册中心)主要功能是服务注册与发现的注册中心,dubbo(远程服务调用的分布式框架)主要实现应用与zokeeper等注册中心链接调用的工具(类jdbc工具类)。
下篇文章会介绍一下zookeeper的安装及提供者通过dubbo把服务注册到zookeeper,消费者通过dubbo来从zookeeper上消费提供者的服务。
Dubbo简介及其与ZooKeeper的关系的更多相关文章
- Dubbo简单介绍及其和zookeeper的关系
何为Dubbo Dubbox 是一个分布式服务框架,其前身是阿里巴巴开源项目Dubbo ,被国内电商及互联网项目中使用,后期阿里巴巴停止了该项目的维护,当当网便在Dubbo基础上进行优化,并继续维 ...
- Dubbo简介与基本概念
场景 分布式系统的发展演变以及RPC简介: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103555049 Dubbo简介 Ap ...
- dubbo入门学习 三 dubbo简介
http://dubbo.apache.org/zh-cn/docs/user/references/protocol/dubbo.html Dubbo简介 1. Dubbo:一个分布式.高性能.透明 ...
- dubbo源码解析-zookeeper创建节点
前言 在之前dubbo源码解析-本地暴露中的前言部分提到了两道高频的面试题,其中一道dubbo中zookeeper做注册中心,如果注册中心集群都挂掉,那发布者和订阅者还能通信吗?在上周的dubbo源码 ...
- HBase与Zookeeper的关系
HBase与Zookeeper的关系 一.HBase与Zookeeper的关系 Zookeeper Client Master RegionServer 一.HBase与Zookeeper的关系 Cl ...
- Dubbo服务注册到Zookeeper,对外提供服务的实际类 ref(如:SleepServiceImpl)保存在哪里
Dubbo服务注册到Zookeeper,其注册的内容为实际对外提供的服务的实现.这个实现保存在哪里(至于具体客户端使用时怎么取后后续阐述)?可以看看Dubbo如何处理的. 对于@DubboServic ...
- dubbo与zookeeper的关系
Dubbo建议使用Zookeeper作为服务的注册中心. 1. Zookeeper的作用: zookeeper用来注册服务和进行负载均衡,哪一个服务由哪一个机器来提供必需让调用者知道,简单来说就是 ...
- Dubbo原理简介、与Zookeeper整合利用
官方文档:http://dubbo.io/books/dubbo-user-book/ Dubbo的简单介绍 Dubbo是一个分布式服务框架,架构如图: 节点角色说明: Provider: 暴露服务的 ...
- dubbo和zookeeper的关系
转载前言:网络上很多教程没有描述zookeeper和dubbo到底是什么关系.分别扮演了什么角色等信息,都是说一些似是而非的话,这里终于找到一篇文章,比较生动地描述了注册中心和微服务框架之间的关系,以 ...
- 2. Dubbo和Zookeeper的关系
转自:https://www.cnblogs.com/hirampeng/p/9540243.html Dubbo建议使用Zookeeper作为服务的注册中心. 1. Zookeeper的作用: ...
随机推荐
- WebSocket 实时通信(二)
WebSocket 即时消息推送系统 1. 项目概述 1.1 项目背景 在现代 Web 应用中,实时通信功能越来越重要,例如在线聊天.实时通知.股票行情更新等.本项目基于 WebSocket 技术,构 ...
- odoo14本地windows安装报错汇总
odoo14安装libsass报错C++啥的解决办法:pip install wheel: pip install libsass-0.20.1-......whl 注意:whl版本应与python版 ...
- SQL注入之字符型和数字型注入
SQL注入之数字型注入和字符性注入: 数字型注入:不需要闭合 字符型注入:需要闭合 如何判断属于那种注入? 1.用减法判断:利用id=2-1 如果返回的是id=1的结果,则是数字注入,否则是字符注入 ...
- [VulnHub]DC-3靶场全过程
DC-3 靶机部署 下载好DC-3,直接导入 可以生成一个mac地址,方便我们确认主机 信息收集 获取靶机ip(arp-scan/nmap) arp-scan -l nmap 192.168.190. ...
- 基于AI来汉化Joomla扩展的尝试
之前Joomla中文网的汉化平台使用Goolge翻译API和百度翻译API来实现自动汉化,这种方案存在很大的一个问题就是没有足够的上下文支持使得翻译的结果并不理想,另外,API接口处理包含HTML字符 ...
- CrossOrigin 跨域
CrossOrigin 跨域 后端服务器提供的接口 事实上后端的服务器提供的接口,不同的ajax请求都是可以请求过来的,他本质实际运用的是一个过滤器
- 第三次bolg作业
1.前言 在 Java 面向对象程序设计课程的学习之旅中,我经历了知识的积累与思维的蜕变.这门课程通过丰富多样的教学环节,如 Blog 作业.PTA 作业.实验.线上线下课程,帮助我逐步构建起 Jav ...
- 技术干货|如何利用 ChunJun 实现数据实时同步?
实时同步是 ChunJun 的⼀个重要特性,指在数据同步过程中,数据源与⽬标系统之间的数据传输和更新⼏乎在同⼀时间进⾏. 在实时同步场景中我们更加关注源端,当源系统中的数据发⽣变化时,这些变化会⽴即传 ...
- 浅谈开源在线客服系统与 APP 集成的技术方案与优劣势
在为移动端 App 接入在线客服系统的过程中,我经历了长时间的技术选型探索.最初,我也曾被一些"技术理想主义"选项所吸引,比如让用户自己研发界面我提供 API 以获得最高自由度,或 ...
- 解决Dify的Ollama插件添加模型时保存成功但模型为空的问题
最近组里安排了点调研Dify任务.我跟着基于Docker+DeepSeek+Dify :搭建企业级本地私有化知识库超详细教程一步一步走,前面都挺顺利,但在Dify的Ollama中引入大模型这一步卡住了 ...