首页 > 编程知识 正文

dubbo分布式框架,maven搭建dubbo分布式

时间:2023-05-06 01:57:06 阅读:42622 作者:2713

微服务中的另一大派系——杜博博,使用也相当多,面试也往往合格。

前言

通常,我们在构建分布式系统时,基于Dubbo技术堆栈或SpringCloud技术堆栈进行。

最早流行的是Dubbo,Dubbo是目前大多数公司分布式系统的rpc框架标准,也可以基于Dubbo构建一套微服务架构。 但是,需要自己大量开发。

当然,从去年开始,spring cloud就非常受欢迎,现在很多公司开始转向spring cloud。 spring cloud的人只是微服务体系结构中的一个家庭水桶。 但是很多公司还在使用dubbo,所以dubbo一定会成为现在面试的重点。 更何况,人dubbo现在正在重启开源社区进行维护,未来也应该有一定的市场和地位。

1 .什么是1.Dubbo? 我们谈谈Dubbo吧?

Dubbo为分布式服务框架,致力于提供高性能、透明的3358www.Sina.com/远程服务呼叫方式和RPC服务管理方式。 简而言之,dubbo是一个服务框架。 如果没有分散的需求,实际上就不需要使用。 只有在分布式的时候,才有dubbo这样的分布式服务框架的需求。 而且,本质上是服务呼叫的东边。 **http://www.Sina.com/、SOA)

2.dubbo体系结构图(工作原理) ) ) ) ) ) )。

节点角色说明:

Provider:暴露服务的服务提供商。

Consumer:调用远程服务的服务消费者。

Registry:服务注册和发现注册中心。

Monitor:统计服务调用次数和调用时间监控中心。

Container:服务运行容器。

说白了就是个远程服务调用的分布式框架

调用关系说明:

0以服务者与消费者的方式在dubbo上注册(container )负责http://www.Sina.com/。

1这点我觉得非常好,角色分明,可以根据每个节点角色的状态来确定该服务是否正常。(privider )启动时,自行提供给注册中心http://www.Sina.com/的服务。

在2服务容器(consumer )启动时,向注册中心http://www.Sina.com/提供必要的服务。

3 启动,加载,运行服务提供者(Registry )将服务提供商地址列表返回给消费者,如果发生更改,注册中心将基于长连接将更改数据推送给消费者。

4服务消费者从提供者地址列表中,根据软件服务提供者算法,选择一台提供者进行呼叫,如果呼叫失败,则选择另一台呼叫。

5服务消费者和提供者在内存中累计呼叫次数和呼叫时间,定时每分钟将统计数据发送到http://www.Sina.com/(monitor )。

将以上内容简化后的注册

1 )作为第一步,服务容器启动提供商,提供商向注册中心注册

2 )步骤2,consumer从注册中心订阅服务,注册中心通知consumer注册的服务

3 )步骤3,客户调用提供程序

4 )步骤4,consumer和provider异步通知监控中心

)2)服务消费者

是的。 刚开始初始化时,消费者会将提供者的地址等信息提取到本地缓存中,注册中心可以挂起并继续通信。

(3)例句法理解订阅

科科奇的冰棍包括部署在a机器上的服务a和部署在b机器上的服务b。 当前,需要调用a服务上的现有接口来查询数据,然后在b服务(消费者)中进行某些处理并显示。 a如果无法访问服务(提供者)的数据库,则必须远程调用。 )

注册中心

启动项目并加载配置式后,负载均衡,服务http://www.Sina.com//service provider为注册中心3358 www.Sina.com 如果服务提供方有数据更改等,监控中心将向消费者提供基于长连接的工作流程

缺省情况下使用Dubbo协议:

连接个数:单连接
连接方式:长连接
传输协议:TCP
传输方式:NIO异步传输
序列化:Hessian二进制序列化
适用范围:传入传出参数数据包较小(建议小于100K),消费者比提供者个数多,单一消费者无法压满提供者,尽量不要使用dubbo协议传输大文件或超大字符串
使用场景:常规远程服务方法调用
从上面的适用范围总结,dubbo适合小数据量大并发的服务调用,以及消费者机器远大于生产者机器数的情况,不适合传输大数据量的服务比如文件、视频等,除非请求量很低。

(5)Dubbo的安全性如何得到保障:
a.在有注册中心的情况下,可以通过dubbbo admin中的路由规则,来指定固定ip的消费方来访问
b.在直连的情况下,通过在服务的提供方中设置密码(令牌)token,消费方需要在消费时也输入这 个密码,才能够正确使用。
Dubbo添加服务ip白名单,防止不法调用

(5)Duubo中如何保证分布式事务?
一般情况下,我们尽量将需要事务的方法放在一个service中,从而避开分步式事务。
Dubbo底层是基于socket: Socket通信是一个全双工的方式,如果有多个线程同时进行远程方法调用,这时建立在client server之间的socket连接上会有很多双方发送的消息传递,前后顺序也可能是乱七八糟的,server处理完结果后,将结果消息发送给client,client收到很多消息,怎么知道哪个消息结果是原先哪个线程调用的?
答:使用一个ID,让其唯一,然后传递给服务端,再服务端又回传回来,这样就知道结果是原先哪个线程的了。

(6)Dubbo的心跳机制:
目的:
维持provider和consumer之间的长连接
实现:
dubbo心跳时间heartbeat默认是1s,超过heartbeat时间没有收到消息,就发送心跳消 息(provider,consumer一样),如果连着3次(heartbeatTimeout为heartbeat*3)没有收到心跳响应,provider会关闭channel,而consumer会进行重连;不论是provider还是consumer的心跳检测都是通过启动定时任务的方式实现;

Dubbo的zookeeper做注册中心,如果注册中心全部挂掉,发布者和订阅者还能通信吗?
可以通信的,启动dubbo时,消费者会从zk拉取注册的生产者的地址接口等数据,缓存在本地。每次调用时,按照本地存储的地址进行调用;

注册中心对等集群,任意一台宕机后,将会切换到另一台注册中心全部宕机后,服务的提供者和消费者仍能通过本地缓存通讯。服务提供者无状态,任一台 宕机后,不影响使用服务提供者全部宕机,服务消费者会无法使用,并无限次重连等待服务者恢复;挂掉是不要紧的,但前提是你没有增加新的服务,如果你要调用新的服务,则是不能办到的。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。