Dubbo框架的学习

Updated on with 0 views and 0 comments

Dubbo框架的学习

Dubbo框架

分布式系统概述

软件架构的演变

单一的应用架构 --> 垂直的应用架构 --> 分布式服务架构 --> 流动计算机构

a、单一的应用架构

小型网站、小型管理系统、所有功能部署到一个服务器里,简单易用,并发少

缺点:性能扩展比较难、协同开发问题、不利于升级维护

b、垂直的应用架构(纵向的分割)

按功能模块划分 分层 MVC等 服务器(Tomcat)集群 模块独立部署,降低了维护部署的难度,团队各司其职更易管理,性能扩展方便

缺点:公共模块无法重复利用、开发性的浪费

c、分布式服务架构

集群内部相同的模块集群、不同集群之间不同内容。

RPC 分布式服务框架

d、流动计算架构

服务越来越多 小服务资源的浪费问题逐渐显现 分的功能更细致 微服务 提高集群利用率 提高机器利用率的

资源调度和治理中心(SOA)【Service Oriented Architecture】是关键 建立在集群加分布式基础之上

分布式::集群之间有调用关系 单向 双向 集群很多 调用关系很复杂

增加 服务治理 服务协调中心

image-20210728164401804

微服务 是去中心化 没有中心

两个设计思想

SOA:(Service-Oriented Architecture)面向服务的架构;

RPC:(Remote Procedure Call)远程过程调用

Dubbo 简介

高性能、轻量级、开源 Java RPC 框架(SOA、RPC 实现

三大核心能力:面向接口的远程方法调用智能容错和负载均衡,以及服务的自动注册和发现

Dubbox 是一个分布式服务框架,前身是阿里巴巴开源项目Dubbo,阿里不维护了(后交给 Apache),当当在Dubbo的基础上进行优化,继续维护,为了与Dubbo区分,命名Dubbox

Dubbox 致力于提供高性能和透明化的 RPC 远程服务调用方案,以及 SOA 服务治理方案。远程服务调用分布式框架。

Dubbo 架构图(菱形图)

五个组成角色

image-20210728171424023

Dubbo 的安装

Dubbo 使用 Zookeeper 作为注册中心

启动 Zookeeper Registry

./zkService start

安装监控中心 dubbo-admin

https://github.com/apache/dubbo-admin 下载源码

先配置 注册中心地址 application.properties 中 地址

DubboAdminApplication 主程序启动

provider 和 consumer 自己写的

provider 提供方 提供 web 和 service等 spring 容器

consumer 消费方 提供 web 和 controller springmvc等

使用Reference 注解 远程过程调用 返回接口实现类

都需要注册

image-20210729102103039

image-20210729102304754

配置文件

<!-- 扫描包-->
<context:component-scan base-package="com.bh"></context:component-scan>

<!-- 给服务提供者命名-->
<dubbo:application name="provider"></dubbo:application>
<!-- 注册中心地址-->
<dubbo:registry address="zookeeper://192.168.159.128:2181"></dubbo:registry>
<!-- 服务注册-->
<dubbo:annotation package="com.bh.service"></dubbo:annotation>

远程调用 RPC

容器 是服务提供者 使用的 dubbo 的 Service 注解

Tomcat 容器 (加载 Spring 配置文件) -- Spring 容器 (加载 service) -- 套一个 Dubbo 容器

Dubbo 是同步方案 同步框架对象提前得有,响应回复需要等待 ,返回成功才能运行 后台的数据传输

异步框架 不需要等待 什么时候有了再用 不需要等待

Dubbo 的高可用操作

  1. 负载均衡

    • 随机策略(本质还是权重)
    • 轮询(按照权重轮询比率)
    • 最少活跃(本质还是最少连接)
    • 一致性 Hash(类似ip_hash,计算相关参数的hash,找集群中某一个)
  2. 服务降级

    当服务器压力剧增的情况下,根据实际业务情况及流量,对一些服务和页面有策略的不处理或换种简单的方式处理,从而释放服务器资源以保证核心交易正常运作或高效运作。
    可以通过服务降级功能临时屏蔽某个出错的非关键服务,并定义降级后的返回策略。

    服务方忙碌集中处理重要的请求,不重要的服务,先返回一个提示信息,等待处理。

    服务方出问题了,宕机了,给一些提示信息,等待或者先处理之后的。

  3. 服务容错

    集群调用失败时,Dubbo 提供了多种容错方案

    • Failover Cluster

      失败自动切换,当出现失败,重试其它服务器。通常用于读操作,但重试会带来更长延迟。可通过 retries="2" 来设置重试次数(不含第一次)。

    • Failfast Cluster

      快速失败,只发起一次调用,失败立即报错。通常用于非幂等性的写操作,比如新增记录。

    • Failsafe Cluster

      失败安全,出现异常时,直接忽略。通常用于写入审计日志等操作。

    • Failback Cluster

      失败自动恢复,后台记录失败请求,定时重发。通常用于消息通知操作。

    • Forking Cluster

      并行调用多个服务器,只要一个成功即返回。通常用于实时性要求较高的读操作,但需要浪费更多服务资源。可通过 forks="2" 来设置最大并行数。

    • Broadcast Cluster

      广播调用所有提供者,逐个调用,任意一台报错则报错 [2]。通常用于通知所有提供者更新缓存或日志等本地资源信息。


标题:Dubbo框架的学习
作者:HB2Ocean
地址:http://future-hb.top:8080/articles/2021/07/29/1627571928215.html