dubbo框架搭建


prtyaa
prtyaa 2023-12-30 23:00:08 64288
分类专栏: 资讯

一、简介

Dubbo是由阿里巴巴开源的透明的高性能分布式RPC框架,基于dubbo协议实现,底层通信方式是基于TCP长连接,传输方式是NIO实现,提高服务的性能。主要有三个核心特性:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。

二、Dubbo工作原理:

  • 第一层:service层,接口层,给服务提供者和消费者来实现的
  • 第二层:config层,配置层,主要是对dubbo进行各种配置的
  • 第三层:proxy层,服务代理层,透明生成客户端的stub和服务单的skeleton
  • 第四层:registry层,服务注册层,负责服务的注册与发现
  • 第五层:cluster层,集群层,封装多个服务提供者的路由以及负载均衡,将多个实例组合成一个服务
  • 第六层:monitor层,监控层,对rpc接口的调用次数和调用时间进行监控
  • 第七层:protocol层,远程调用层,封装rpc调用
  • 第八层:exchange层,信息交换层,封装请求响应模式,同步转异步
  • 第九层:transport层,网络传输层,抽象mina和netty为统一接口
  • 第十层:serialize层,数据序列化层

三、Dubbo执行流程:

首先,项目启动时,会加载配置文件进行初始化,服务提供方会向注册中心注册自己提供的服务;当消费者启动时,会向注册中心订阅自己所需要的服务,如果服务提供方有数据变更,注册中心会基于长连接形式推送变更数据至消费方(异步)。

推荐:

默认采用dubbo协议:

连接个数:单连接;连接方式:长连接;传输方式:NIO异步传输;传输协议:TCP;序列化:默认采用Hessian二进制。

适用范围:传入传出参数数据包较小(100K以内),消费者个数大于提供者个数,尽量不要用dubbo协议去传输大文件、视频以及大的字符串数据。

dubbo特性:适用于数据量少大并发的场景。

四、Dubbo安全性能如何得到保障:

1、有注册中心的情况下,可通过dubbo提供的dubbo admin控制台去设置路由规则,来指定固定ip消费方访问。

2、在直连的情况下,可在服务提供方设置令牌(token),此时服务消费方需要提供对应的令牌进行访问。

3、Dubbo添加服务ip白名单,防止非法调用。

五、Dubbo中如何保证分布式事务:

我们尽量把需要事务的方法加在一个service层中,避免分步式事务。Dubbo底层是基于socket连接,如果多个线程同时远程调用提供者方法,这时会建立client server之间的socket连接上会有很多双方发的数据包传递,并不难保证前后顺序,容易造成乱七八糟,服务提供方处理完后,会将处理结果发送到client,client收到很多数据包,怎么保证哪个响应数据包对应的原先哪个线程调用的吗?

这时就要使用到分布式唯一RequestID,去保证其唯一性,消费端调用时,会将唯一ID传给服务提供者;然后,服务提供者处理完,会将该ID一起响应给client(这样就能保证其前后消费顺序)。

六、Dubbo心跳机制:

目的:维持provider和customer之间的通信

实现:dubbo默认心跳时间为1s,超过心跳时间没有收到消息,就发送心跳消息,如果超过3次心跳没有收到心跳消息,provider会关闭channel,而customer会进行重连;不管是provider还是customer的心跳机制检测都是通过启动定时任务方式实现的。

推荐:

七、Dubbo使用zookeeper做注册中心,如果注册中心全部挂掉了,消费方还能够与提供方正常通信吗?

可以的,因为服务消费方启动时会订阅注册中心里面所需要的服务,此时会把服务订阅的相关信息写入到本地缓存(也就是磁盘),下次与服务提供方远程调用时,会直接从本地缓存获取提供方信息进行通信。若此时服务提供方有数据变动或有新的服务,消费方是无法获取的,对其他新的服务是不能够进行正常通信的。

八、Dubbo提供负载均衡策略有哪些,如何配置吗?

RandomLoadBalance(默认随机):可按权重配置,随机分配策略;

RoundRobinLoadBalance(轮询):按照顺序去访问每个节点,容易造成请求堆积过多,请求分布不均匀;

LeastActiveLoadBalance(最少活跃调用数):是指各服务请求前后调用计数差,相同活跃数,随机分配;由于各服务里面都维护活跃数计数器,用来记录当前同时处理的并发请求数,若该值越小,说明该服务处理请求很快或者当前机器负载比较低,会优先选择分配到该服务。如果一个服务处理速度很慢,会堆积起来,同时处理请求数比较多,此时活跃调用数越大,该服务会接收到的请求比较少,因为请求数与活跃数成反比。

ConsistentHashLoadBalance(一致性hash):相同参数总是发送到同一个提供者,如果这个提供者挂掉了,它会根据它的虚拟节点,平摊到其它服务者,不会引起巨大的变动

九、负载均衡策略服务端与客户端都可配置(优先配置在客户端)

服务端:

<-! 服务端服务级别配置></-!>
<dubbo:service interface="接口名" loadbalance="roundrobin"/>
<-! 服务端方法级别配置></-!>
<dubbo:service interface="接口名">
  <dubbo:method name="方法名" loadbalance="均衡策略名"/>
</dubbo:service>    

客户端:

<-! 客户端服务级别配置></-!>
<dubbo:reference interface="接口名" loadbalance="roundrobin"/>
<-! 客户端方法级别配置></-!>
<dubbo:reference interface="接口名">
    <dubbo:method name="方法名" loadbalance="均衡策略明"/>
</dubbo:reference>

搭建集群注意点(2点):1、同一集群环境中应用名必须保持一致

2、端口必须要不同

十、Dubbo和SpringCloud有什么区别吗?

官方说明:

Dubbo官方文档指明,dubbo是一个基于java的高性能、轻量级的rpc框架。他只是对rpc进行了封装,使其更高效而已,再牛皮也只是一个通信协议。

SpringCloud官方文档是这样写的:SpringCloud专注于为典型的用例和扩展机制提供良好的开箱即用体验,以涵盖其他情况。重点在提供良好的开箱即用体验。

所以不同于dubbo只是对通信协议的封装,springcloud的目标是快速搭建一个框架,并提供很多易用的组件,使服务能快速的运行起来,以使用户有一个很好的服务体验。所以Spring Cloud的定位是微服务架构下的一站式解决方案。

总结比较:

  • Dubbo由于是二进制的传输,占用带宽会更少;
  • SpringCloud是http协议传输,带宽会比较多,同时使用http协议一般会使用JSON报文,消耗会更大;
  • Dubbo的开发难度较大,原因是dubbo的jar包依赖问题很多大型工程无法解决;
  • SpringCloud的接口协议约定比较自由且松散,需要有强有力的行政措施来限制接口无序升级;
  • 传输,带宽会比较多,同时使用http协议一般会使用JSON报文,消耗会更大;
  • Dubbo的开发难度较大,原因是dubbo的jar包依赖问题很多大型工程无法解决;
  • SpringCloud的接口协议约定比较自由且松散,需要有强有力的行政措施来限制接口无序升级;
  • Dubbo的注册中心可以选择zookeeper、redis等,SpringCloud的注册中心用Eureka、Consul、Nacos等。

网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。

本文链接:https://www.xckfsq.com/news/show.html?id=32945
赞同 0
评论 0 条
  • 谈谈Linux内核的噪声 2024-01-04 65442 浏览

    Linux内核是广被使用的操作系统,从嵌入式家用设备,航空航天设备到超级计算机,到处都有Linux内核的身影,这归功于Linux内核丰富的配置带来的巨大灵活性。网络虚拟化和软件定义网络的发展,也从另外一个方面证实了在网络设备如此专用的领域,Linux内核也能发挥巨大作用,并且对网络设备领域带来可编程性的巨大便利,极大促进了网络设备领域的发展,5G网络堆栈建立在这个范式之上。随着无人驾驶和物联网等实

  • 存算一体还是存算分离?谈谈数据库基础设施的架构选择 2023-11-23 67123 浏览

    从一则用户案例说起某金融用户问,数据库用服务器本地盘性能好还是外置存储好?直觉上,本地盘路径短性能应该更好。然而测试结果却出乎意料:同等中等并发压力,混合随机读写模型,服务器本地SSD盘合计4万IOPS水平,时延竟然高达6ms,回退到机械磁盘时代的水平,而外置存储同样并发压力下30万IOPS,稳定时延在0.2ms。I/O模型TDSQL+本地SSD盘时延TDSQL+外置全闪存存储时延8KB顺序读0.

  • prtyaaL1
    粉丝 1 发表 2554 + 关注 私信
    上周热门
    银河麒麟添加网络打印机时,出现“client-error-not-possible”错误提示  1487
    银河麒麟打印带有图像的文档时出错  1405
    银河麒麟添加打印机时,出现“server-error-internal-error”  1194
    统信操作系统各版本介绍  1116
    统信桌面专业版【如何查询系统安装时间】  1114
    统信桌面专业版【全盘安装UOS系统】介绍  1068
    麒麟系统也能完整体验微信啦!  1026
    统信【启动盘制作工具】使用介绍  672
    统信桌面专业版【一个U盘做多个系统启动盘】的方法  616
    信刻全自动档案蓝光光盘检测一体机  526
    本周热议
    我的信创开放社区兼职赚钱历程 40
    今天你签到了吗? 27
    信创开放社区邀请他人注册的具体步骤如下 15
    如何玩转信创开放社区—从小白进阶到专家 15
    方德桌面操作系统 14
    我有15积分有什么用? 13
    用抖音玩法闯信创开放社区——用平台宣传企业产品服务 13
    如何让你先人一步获得悬赏问题信息?(创作者必看) 12
    2024中国信创产业发展大会暨中国信息科技创新与应用博览会 9
    中央国家机关政府采购中心:应当将CPU、操作系统符合安全可靠测评要求纳入采购需求 8

    添加我为好友,拉您入交流群!

    请使用微信扫一扫!