dubbo基本介绍-编程思维

Dubbo 是什么?

Dubbo 是一款阿里开源的高性能、轻量级的开源 RPC 框架,提供服务自动注册、自动发现等高效服务治理方案, 可以和 Spring 框架无缝集成。

Dubbo 的使用场景有哪些?

  • 透明化的远程方法调用:就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。

  • 软负载均衡及容错机制:可在内网替代 F5 等硬件负载均衡器,降低成本,减少单点。&*

  • 服务自动注册与发现:不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者。

Dubbo 服务器注册与发现的流程?

Dubbo 服务器注册与发现系统图


  • 服务容器Container负责启动,加载,运行服务提供者。

  • 服务提供者Provider在启动时,向注册中心注册自己提供的服务。

  • 服务消费者Consumer在启动时,向注册中心订阅自己所需的服务。

  • 注册中心Registry返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。

  • 服务消费者Consumer,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。

  • 服务消费者Consumer和提供者Provider,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心Monitor。

Dubbo 和 Spring Cloud 关系和区别?

  • Dubbo 是 SOA 时代的产物,它的关注点主要在于服务的调用,流量分发、流量监控和熔断。

  • Spring Cloud 诞生于微服务架构时代,考虑的是微服务治理的方方面面,另外由于依托了 Spring、Spring Boot 的优势,两个框架在目标就不一致,Dubbo 定位服务治理、Spring Cloud 是打造一个分布式的生态。

Dubbo 和 Spring Cloud 区别

  • Dubbo 底层是使用 Netty 这样的 NIO 框架,是基于 TCP 协议传输的,配合以 Hession 序列化完成 RPC 通信。

  • Spring Cloud 是基于 Http 协议 Restful 接口调用远程过程的通信,相对来说 Http 请求会有更大的报文,占的带宽也会更多。但是 Restful 相比 RPC 更为灵活,服务提供方和调用方的依赖只依靠一纸契约,不存在代码级别的强依赖,这在强调快速演化的微服务环境下,显得更为合适,至于注重通信速度还是方便灵活性,具体情况具体分析。

Dubbo集群提供了哪些负载均衡策略?

Dubbo内置了4种负载均衡策略

  • RandomLoadBalance:随机负载均衡。随机的选择一个。是Dubbo的默认负载均衡策略。

  • RoundRobinLoadBalance:轮询负载均衡。轮询选择一个。

  • LeastActiveLoadBalance:最少活跃调用数,相同活跃数的随机。每收到一个请求,活跃数加1,完成请求后则将活跃数减1。活跃调用数越小,表明该服务提供者效率越高,单位时间内可处理更多的请求。

  • ConsistentHashLoadBalance:一致性哈希负载均衡。相同参数的请求总是落在同一台机器上。

Dubbo的集群容错方案有哪些?

  • Failover Cluster:失败自动切换,当出现失败,重试其它服务器。通常用于读操作,但重试会带来更长延迟。

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

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

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

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

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

默认的容错方案Failover Cluster

版权声明:本文版权归作者所有,遵循 CC 4.0 BY-SA 许可协议, 转载请注明原文链接
https://www.cnblogs.com/wa1l-E/p/17072691.html

个人文章-编程思维

问题描述不知你是否有过类似如下的需求:有一些功能,它们足够单一,但又需要后台持续运行,以容器实现感觉太重了,以进程实现又太琐碎了,以线程实现可以接受但是又不好管理。这类程序诸如:数据采集程序、可观测性程序、中间件、代理等等。这一需求乍看之下倒是有点类似supervisor在做的事情,每个功能一个单一后台进程。诚然进程是

go语言学习专栏-编程思维

本文基于viper实现了apollo多实例快速接入,授人以渔,带着大家读源码,详解实现思路,封装成自己的工具类并且开源。前言viper是适用于go应用程序的配置解决方案,这款配置管理神器,支持多种类型、开箱即用、极易上手。本地配置文件的接入能很快速的完成,那么对于远程apollo配置中心的接入,是否也能很快速完成呢?如

京东科技技术新知-编程思维

作者:京东科技 倪新明CQRS只是一种非常简单的模式(pattern),CQRS本身并不是一种架构风格,和最终一致性/消息/读写分离/事件溯源/DDD等没有必然的联系,它最大优势是给我们带来更多的架构属性选择1 CQRS 本质1.1 CQS:命令和查询分离命令和查询分离,Command and Query Segreg

linux资讯速推-编程思维

本篇文章中主要列举《Mr. Robot》电视剧中主要用到的黑客工具,并对它们所对应的现实中的黑客工具做一简要介绍。Mr. Robot2015年美剧出了一部关于黑客题材的电视剧,相信爱看黑客电视剧、电影的同学们已经看过或者正在追这部神秘的《Mr. Robot》,尤其是对那些计算机迷或者科技迷来说,这部电视剧更是不容错过。

个人文章-编程思维

导读 领域驱动设计(DDD)最简洁的描述可能是:如何在明确的限界上下文中创建通用语言的模型。通过 DDD思想设计开发的软件,在领域专家、开发者和软件本身之间不存在“翻译”,三者通过在限界上下文下的通用语言直接表示。而这个系列则是我们团队对 DDD 模式的探索和落地,旨在能帮助大家逐步揭开DDD的神秘面纱。 全文525

个人文章-编程思维

在 1 月 27 日,新年伊始,Dubbo 3.1.5 和 3.2.0-beta.4 正式通过投票发布。本文将介绍发布的变化一览。Dubbo 3.1.5 版本是目前 Dubbo 3 的最新稳定版本,我们建议所有的用户都升级到最新的稳定版本。Dubbo 3.2.0-beta.4 版本是目前 Dubbo 3 的最新特性版本

个人文章-编程思维

[TOC]环境详情golang 1.18macOS Big Surprotobuf 3基本原理整个RPC过程就是:客户端 发送 数据(以字节流的方式)服务端接收,并解析。 根据约定知道要知道执行什么。然后把结果返回客户端RPC就是把——上述过程封装下,使其操作更加优化使用一些大家都认可的协议 使其规范化那么——GRP

京东科技技术新知-编程思维

作者:京东零售 王磊前言作为一个后端研发人员,开发服务接口是我正常不过的工作了,这些接口不管是面向前端HTTP或者是供其他服务RPC远程调用的,都绕不开一个共同的话题就是“高可用”,接口开发往往看似简单,但保证高可用这块实现起来却不并没有想想的那么容易,接下来我们就看一下,一个高可用的接口是该考虑哪些内容,同时文中有不

java completablefuture 异步超时实现探索-编程思维

作者:京东科技 张天赐 前言 JDK 8 是一次重大的版本升级,新增了非常多的特性,其中之一便是 CompletableFuture。自此从 JDK 层面真正意义上的支持了基于事件的异步编程范式,弥补了 Future 的缺陷。 在我们的日常优化中,最常用手段便是多线程并行执行。这时候就会涉及到 CompletableF

一文吃透 go 内置 rpc 原理-编程思维

hello 大家好呀,我是小楼,这是系列文《Go底层原理剖析》的第三篇,依旧分析 Http 模块。我们今天来看 Go内置的 RPC。说起 RPC 大家想到的一般是框架,Go 作为编程语言竟然还内置了 RPC,着实让我有些吃鲸。 从一个 Demo 入手 为了快速进入状态,我们先搞一个 Demo,当然这个 Demo 是参

t-dubbo,最好的rpc接口测试工具,支持nacos、zookeeper两大主流注册中心,真香!-编程思维

这可能是有史以来最好用的RPC接口测试工具 文末有视频简介 获取方式 一只小Coder 简介 T-Dubbo,是一个基于Dubbo的全自动RPC接口测试平台为当下最流行的微服务架构中的RPC接口提供了测试平台,传统的RPC接口测试过程十分繁琐,需要写对应的REST接口、或者寻找其他方式来进行测试,无疑给测试人员,开发