本篇内容主要讲解“Dubbo基础知识点有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Dubbo基础知识点有哪些”吧!
Dubbo是一个分布式服务框架,以及SOA处理方案。其功能主要包括:高性能NIO通讯以及协议集成,服务动态寻址与路由,转负载均衡与容错,依赖分析与降级。它有5个节点,分别是provider,Consumer,Registry,Monitor,container。其中 provider是服务提供者 consumer是服务消费者 Registry是服务进行注册和被发现的注册中心。Monitor是统计服务调用次数和调用时间的监控中心,Container是服务运行容器。
consumer负责启动 然后运行provider。provider在启动时向注册中心注册自己提供的服务,consumer在启动时向注册中心订阅自己需要的服务,此时Registry会基于长连接推送变更数据给consumer。consumer会基于转负载均衡算法选一台服务器进行调用,如果调用失败,则再选一台。provider和consumer在内存中累计调用次数和调用时间,定时每分钟发送一次数据到monitor。
Dubbo有四个特点 即连通性 健壮性 伸缩性 以及向未来架构的升级性。联通性说明他们存在着联系 比如 provider consumer和registry三者之间是长连接的,而provider和consumer向registry注册服务以及订阅服务的时间都得向monitor汇报。而健壮性则说明具有稳定性,比如书注册中心对等集群中任意一台服务器宕掉后,将自动切换到另一台。就算注册中心全部宕掉 服务者和消费者仍可以通过本地缓存进行通讯。而伸缩性就是可以通过增加继器部署实例进行添加新的注册中心和服务提供者。升级性是提到的对未来架构的设想,比起目前架构它的特点是还可以实现自动部署服务的本地代理及可以通过访问压力来自动增减服务提供者。
服务节点关系的调用
1 服务容器负责启动 ,加载 运行服务提供者
2 服务提供者在启动时 向注册中心注册自己提供的服务
3 服务消费者在启动时 向注册中心订阅自己所需要的服务。
4 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
5 服务消费者 从提供地址列表中 基于转负载均衡算法,选一台提供者进行调用,如果调用失败 再选一台进行调用。
6 服务调用者和消费者 在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
当zookeeper作为dubbo的注册中心时,是怎样工作的?
zookeeper作为dubbo的注册中心时,服务提供者在初始化启动时,会在zookeeper下的dubbo节点下的服务节点下的provider节点下的节点创建一个子节点并写入URL 路径类似于/dubbo/servicename/providers/,该路径下的所有子节点均为服务提供者。此时所有节点均为临时节点,因为临时节点的生命周期与客户端会话相关,所以一旦提供者所在的机器出现故障无法提供服务,该临时节点会自动从zookeeper中消除。此时因为消费者 服务者 注册中心是长连接,注册中心能感知服务者宕机,它会告诉消费者。而监控中心是Dubbo服务治理体系中重要的一部分,它需要知道所有的服务者和提供者的变化,所以它在启动时会在服务节点上注册一个watcher来监听子节点的变化,路径为/dubbo/servicename,所以它也能感知服务提供者的宕机。服务消费者节点的创建过程和提供者是一样的而且也是临时节点。还有一个特性就是zookeeper的节点结构设计,它以服务名和类型,也就是/dubbo/servie为节点路径,符合Dubbo订阅和通知的需求,保证了以服务为力度的变更通知,通知范围易于控制。所以即使消费者和提供者频繁变更,对zookeeper的性能也不会造成多大影响。
什么是Dubbo?
Dubbo是一款高性轻量级的开源Java RPC框架,它提供了三大核心功能:面向接口的远程方法调用,只能容错和负载均衡,以及服务自动注册和发现。简单来说Dubbo是一个分布式服务框架,致力于提高性能和透明化的RPC远程调用方案,以及SOA服务治理方案。
什么是RPC RPC 的原理是什么?
RPC是一种远程调用,它是一种通过网络从计算机程序上请求服务,而不需要了解底层网络技术的协议。比如两个不同的服务A B ,部署在两台不同的机器上,如果服务A想调用服务B中的某个方法怎么办,使用HTTP请求,当然可以,但是会比较慢而且一些优化做的并不好。RPC的出现正是为了解决这个问题。
RPC原理是什么?
为()什么要用Dubbo?
Dubbo的诞生和SOA分布式架构有很大的关系。SOA面向服务的架构,也就是把工程按照业务逻辑分成服务表现层两个工程。服务层中包含业务逻辑,只需要对外提供服务即可。表现层只需要处理和页面的交互,业务逻辑都是调用服务层的服务来实现的。SOA架构中主要有两个角色:服务提供者(provider)和服务使用者(Cosumer)。
如果要开发分布式程序,可以直接用HTTP接口进行通信,为什么还要用Dubbo呢?
可以从Dubbo提供的四点特性来说明为什么要用Dubbo?
1 负载均衡 —–同一个服务部署在不同的服务器时刻该调用哪一台机器上的服务。
2 服务调用链路生成 —–随着系统的发展,服务越来越多,服务之间的依赖关系变得错综复杂,甚至分不清哪个应用在哪个应用之前启动,架构师也不能完整的描述架构关系。Dubbo可以为我们解决服务之间如何调用的问题。
3 服务访问压力及时长统计、资源调整和力度——基于访问压力时管理集群容量,提高集群利用率。
4 服务降级——某个服务挂掉之后调用备用服务。
什么是分布式?
分布式或者说SOA分布式重要的是面向服务,说简单的分布式就是我们将整个系统拆分成不同的服务然后将这些服务放在不同的服务器上减轻单体服务的压力提高并发量和性能。比如电商系统可以拆分成订单系统、 商品系统、登陆系统。拆分之后每个系统可以部署在不同的服务器上,如果一个服务的访问量比较大的话也可以将这个服务同时部署在多台机器上。
为什么要用分布式?
从开发的角度来讲单体的应用代码都集中在一起,而分布式系统的代码根据业务被拆分。所以每个团队可以负责一个服务的开发,这样就提升了开发效率。另外 代码根据业务拆分之后更加便于维护和发展。
Dubbo的负载均衡策略·
先解释一下什么是负载均衡?
维基百科对负载均衡的定义:
比如系统中的某个服务访问量很大,我们将这个服务上部署在多台服务器上,当客户端发起请求的时候,多台服务器就可以处理这个请求。那么如何正确选择处理该请求的服务器就很关键。假如 就要一台服务器来处理这些请求,那该服务部署在多台服务器的意义就不大了。负载均衡就是为了避免单个服务器响应同一请求,容易造成服务宕机、崩溃等问题。
Dubbo的负载均衡策略
1 Random LoadBalance(默认,基于权重的随机负载均衡机制)
随机 按权重设置随机概率 在一个截面上碰撞的概率高,但调用量越大分布越均匀,有利于动态调整提供者权重。
2 RoundRobin LoadBalance (不推荐,基于权重的轮询负载均衡机制)
轮询 ,按照公约后的权重设置轮询比率。
存在慢的提供者积累请求的问题:比如 第二台机器很慢,但没挂,当请求调到第二台机器时就卡在那,久而久之,所有请求都调到第二台上。
3 LeastActive LoadBalance
* 最少活跃调用数,相同活跃数的随机,活跃数指调用前后计数差
* 使慢的提供者收到更少的请求,因为越慢的提供者的调用前后计数差越大。
4 ConsistentHash LoadBalance
一致性Hash,相同参数的请求总是发送到同一提供者。
到此,相信大家对“Dubbo基础知识点有哪些”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
原创文章,作者:745907710,如若转载,请注明出处:https://blog.ytso.com/220421.html