【微服务】认识Dubbo+基本环境搭建

这篇具有很好参考价值的文章主要介绍了【微服务】认识Dubbo+基本环境搭建。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

认识Dubbo

  • Dubbo是阿里巴巴公司开源的一个高性能、轻量级的WEB和 RPC框架,可以和Spring框架无缝集成。
  • Dubbo为构建企业级微服务提供了三大核心能力: 服务自动注册和发现、面向接口的 远程方法调用智能容错和负载均衡
  • 官网:https://cn.dubbo.apache.org/zh-cn/

Dubbo可以做什么

按照微服务架构的定义,采用它的组织能够很好的提高业务迭代效率与系统稳定性,但前提是要先能保证微服务按照期望的方式运行,要做到这一点需要解决服务拆分与定义、数据通信、地址发现、流量管理、数据一致性、系统容错能力等一系列问题。Dubbo 可以帮助解决如下微服务实践问题

  1. 微服务编程范式和工具
    Dubbo 支持基于 IDL 或语言特定方式的服务定义,提供多种形式的服务调用形式(如同步、异步、流式等)
  2. 高性能的 RPC 通信
    Dubbo 帮助解决微服务组件之间的通信问题,提供了基于 HTTP、HTTP/2、TCP 等的多种高性能通信协议实现,并支持序列化协议扩展,在实现上解决网络连接管理、数据传输等基础问题
  3. 服务监控与治理
    Dubbo 官方提供的服务发现、动态配置、负载均衡、流量路由等基础组件可以很好的帮助解决微服务基础实践的问题。除此之外,您还可以用 Admin 控制台监控微服务状态,通过周边生态完成限流降级、数据一致性、链路追踪等能力
  4. 部署在多环境
    Dubbo 服务可以直接部署在容器、Kubernetes、Service Mesh等多种架构下
  5. 活跃的社区
    Dubbo 项目托管在 Apache 社区,有来自国际、国内的活跃贡献者维护着超 10 个生态项目,贡献者包括来自海外、阿里巴巴、工商银行、携程、蚂蚁、腾讯等知名企业技术专家,确保 Dubbo 及时解决项目缺陷、需求及安全漏洞,跟进业界最新技术发展趋势
  6. 庞大的用户群体
    Dubbo3 已在阿里巴巴成功取代 HSF 框架实现全面落地,成为阿里集团面向云原生时代的统一服务框架,庞大的用户群体是 Dubbo 保持稳定性、需求来源、先进性的基础。

Dubbo的核心特性

  1. 灵活部署模式
    一键拉起服务治理体系,屏蔽底层跨平台的微服务基础设施复杂度,支持虚拟机、Docker、Kubernetes、服务网格等多种部署模式
  2. 服务发现
    Dubbo提供了高性能、可伸缩的服务发现机制,面向百万集群实例规模设计,默认提供Nacos、Zookeeper等注册中心适配并支持自定义扩展
  3. 流量管控
    Dubbo提供的基于路由规则的流量管控策略,可以帮助实现全链路灰度、金丝雀发布、按比例流量转发、动态调整调试时间、设置重试次数等服务治理能力
  4. 通信协议
    支持Http/2、gRPC、TCP、REST等任意通信协议,切换协议只需要修改一行配置,支持单个端口上的多协议发布
  5. 多语言SDK
    提供 java、Golang. Rust. Node.js、Python 等多语言 SDK 实现,支持基于IDL的跨语言服务定义和基于Protobuf、Json的数据编码
  6. 可扩展性
    一切皆可扩展,通过扩展(Filter、Router、Service、Discovery、Configuration等)自定义调用、管控行为、适配开源微服务生态
  7. 可观测性
    多维度的可观测指标(Metrics、Tracing、Accesslog)帮助了解服务运行状态、Admin控制台、Grafana等帮助实现数据指标可视化展示。
  8. 认证鉴权
    支持基于TLS的传输链路认证与加密通信以及基于请求身份的权限校验,帮助构建零信任分布式微服务体系。
  9. 服务网格(Service Mesh)
    灵活的数据面(Proxy & Proxyless)部署形态支持,无缝接入lstio控制面治理体系
  10. 丰富生态
    一站式微服务生态适配:注册中心、网关、限流降级、负载均衡、一致性事务、异步消息、Tracing等

Dubbo的工作原理

【微服务】认识Dubbo+基本环境搭建,微服务,Java,Dubbo,微服务,dubbo,架构从抽象架构上分为两层服务治理抽象控制面Dubbo 数据面

服务治理抽象控制面

服务治理抽象控制面不是特指如注册中心类的单个具体组件,而是对 Dubbo 治理体系的抽象表达。控制面包含协调服务发现的注册中心、流量管控策略、Dubbo Admin 控制台等,如果采用了 Service Mesh 架构则还包含 Istio 等服务网格控制面

Dubbo数据面

数据面代表集群部署的所有 Dubbo 进程,进程之间通过 RPC 协议实现数据交换,Dubbo 定义了微服务应用开发与调用规范并负责完成数据传输的编解码工作

  • 服务消费者 (Dubbo Consumer),发起业务调用或 RPC 通信的 Dubbo 进程
  • 服务提供者 (Dubbo Provider),接收业务调用或 RPC 通信的 Dubbo 进程

从数据面视角,Dubbo帮助解决了微服务实践中的以下问题

  1. Dubbo作为服务开发框架约束了微服务定义、开发与调用的规范,定义了服务治理流程及适配模式
  2. Dubbo作为RPC通信协议实现解决了服务间数据传输的编解码问题

【微服务】认识Dubbo+基本环境搭建,微服务,Java,Dubbo,微服务,dubbo,架构

服务开发框架

  • 微服务的目标是构建足够小的、自包含的、独立演进的、可以随时部署运行的分布式应用程序,几乎每个语言都有类似的应用开发框架来帮助开发者快速构建此类微服务应用,比如 Java 微服务体系的 Spring Boot,它帮 Java 微服务开发者以最少的配置、最轻量的方式快速开发、打包、部署与运行应用。
  • 微服务的分布式特性,使得应用间的依赖、网络交互、数据传输变得更频繁,因此不同的应用需要定义、暴露或调用 RPC 服务,那么这些 RPC 服务如何定义、如何与应用开发框架结合、服务调用行为如何控制?这就是 Dubbo 服务开发框架的含义,Dubbo 在微服务应用开发框架之上抽象了一套 RPC 服务定义、暴露、调用与治理的编程范式,比如 Dubbo Java 作为服务开发框架,当运行在 Spring 体系时就是构建在 Spring Boot 应用开发框架之上的微服务开发框架,并在此之上抽象了一套 RPC 服务定义、暴露、调用与治理的编程范式
Dubbo 作为服务开发框架包含的具体内容如下
  1. RPC 服务定义、开发范式: 比如 Dubbo 支持通过 IDL 定义服务,也支持编程语言特有的服务开发定义方式,如通过 Java Interface 定义服务
  2. RPC 服务发布与调用 API: Dubbo 支持同步、异步、Reactive Streaming 等服务调用编程模式,还支持请求上下文 API、设置超时时间等。
  3. 服务治理策略、流程与适配方式等: 作为服务框架数据面,Dubbo 定义了服务地址发现、负载均衡策略、基于规则的流量路由、Metrics 指标采集等服务治理抽象,并适配到特定的产品实现。

Dubbo支持的通讯协议

  • Dubbo 从设计上不绑定任何一款特定通信协议,HTTP/2、REST、gRPC、JsonRPC、Thrift、Hessian2 等几乎所有主流的通信协议,Dubbo 框架都可以提供支持。 这样的 Protocol 设计模式给构建微服务带来了最大的灵活性,开发者可以根据需要如性能、通用型等选择不同的通信协议,不再需要任何的代理来实现协议转换,甚至你还可以通过 Dubbo 实现不同协议间的迁移。
  • Dubbo 提供了两款内置高性能 Dubbo2、Triple (兼容 gRPC) 协议实现,以满足部分微服务用户对高性能通信的诉求,两者最开始都设计和诞生于阿里巴巴内部的高性能通信业务场景
    • Dubbo2 协议: 是在 TCP 传输层协议之上设计的二进制通信协议
    • Triple: 则是基于 HTTP/2 之上构建的支持流式模式的通信协议,并且 Triple 完全兼容 gRPC 但实现上做了更多的符合 Dubbo 框架特点的优化。

【微服务】认识Dubbo+基本环境搭建,微服务,Java,Dubbo,微服务,dubbo,架构

Dubbo 服务治理

  • 服务开发框架解决了开发与通信的问题,但在微服务集群环境下,我们仍需要解决无状态服务节点动态变化、外部化配置、日志跟踪、可观测性、流量管理、高可用性、数据一致性等一系列问题,我们将这些问题统称为服务治理。
  • Dubbo 抽象了一套微服务治理模式并发布了对应的官方实现,服务治理可帮助简化微服务开发与运维,让开发者更专注在微服务业务本身。
  1. 地址发现
    Dubbo服务发现具备高性能、支持大规模集群、服务级元数据配置等优势,默认提供Nacos、Zookeeper、Consul等多种注册中心适配,与SpringCloud、Kubernetes Service模型打通,支持自定义扩展
  2. 负载均衡
    Dubbo默认提供加权随机、加权轮询、最少活跃请求数优先、最短响应时间优先、一致性哈希和自适应负载等策略
  3. 流量路由
    Dubbo支持通过一系列流量规则控制服务调用的流量分布与行为,基于这些规则可以实现基于权重的比例流量分发、灰度验证、金丝雀发布、按请求参数的路由、同区域优先、超时配置、重试、限流降级等能力
  4. 链路追踪
    Dubbo官方通过适配OpenTelemetry提供了对Tracing全链路追踪支持,用户可以接入支持OpenTelemetry标准的产品如Skywalking、Zipkin等,另外很多社区如Skywalking、Zipkin等在官方也提供了对Dubbo的适配
  5. 客观测性
    Dubbo示例通过Prometheus等上报Qps、RT、请求次数、成功率、异常次数等多维度的可观测指标帮助了解服务运行状态,通过接入Grafana、Admin控制台帮助实现数据指标可视化展示
  6. Dubbo Admin
    Admn控制台提供了Dubbo集群的可视化图,通过Admin你可以完成集群的几乎所有的管控工作。

搭建Dubbo运行环境

1.搭建运行环境之前的基本概念

1.1注册中心

注册中心是 Dubbo 服务治理的核心组件,Dubbo 依赖注册中心的协调实现服务(地址)发现,自动化的服务发现是微服务实现动态扩缩容、负载均衡、流量治理的基础。Dubbo 的服务发现机制经历了 Dubbo2 时代的接口级服务发现、Dubbo3 时代的应用级服务发现

  • Dubbo 作为一款微服务框架,最重要的是向用户提供跨进程的 RPC 远程调用能力。如上图所示,Dubbo 的服务消费者(Consumer)通过一系列的工作将请求发送给服务提供者(Provider)。
  • 为了实现这样一个目标,Dubbo 引入了注册中心(Registry)组件,通过注册中心,服务消费者可以感知到服务提供者的连接方式,从而将请求发送给正确的服务提供者

【微服务】认识Dubbo+基本环境搭建,微服务,Java,Dubbo,微服务,dubbo,架构

1.2服务发现

服务发现,即消费端自动发现服务地址列表的能力,是微服务框架需要具备的关键能力,借助于自动化的服务发现,微服务之间可以在无需感知对端部署位置与 IP 地址的情况下实现通信。

实现服务发现的方式有很多种,Dubbo 提供的是一种 Client-Based 的服务发现机制,通常还需要部署额外的第三方注册中心组件来协调服务发现过程

  • Zookeeper 注册中心
  • Nacos 注册中心
  • Multicast 注册中心
  • Redis 注册中心
  • 多注册中心
  • Simple 注册中心
  • https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/registry/
服务注册与发现的过程
  1. 服务容器负责启动,加载,运行服务提供者。
  2. 服务提供者在启动时,向注册中心注册自己提供的服务。
  3. 服务消费者在启动时,向注册中心订阅自己所需的服务。
  4. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
  5. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
  6. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心

1.3Zookeeper 注册中心

Zookeeper 是一个树型的目录服务,支持变更推送,适合作为 Dubbo 服务的注册中心,工业强度较高,可用于生产环境,并推荐使用
【微服务】认识Dubbo+基本环境搭建,微服务,Java,Dubbo,微服务,dubbo,架构

  • ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。
  • 它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
  • ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
  • 官网:https://zookeeper.apache.org/
  • 软件下载地址:https://archive.apache.org/dist/zookeeper/
Zookeeper服务注册与发现的过程
  1. 服务提供者启动时: 向 /dubbo/com.foo.BarService/providers 目录下写入自己的 URL 地址
  2. 服务消费者启动时: 订阅 /dubbo/com.foo.BarService/providers 目录下的提供者 URL 地址。并向 /dubbo/com.foo.BarService/consumers 目录下写入自己的 URL 地址
  3. 监控中心启动时: 订阅 /dubbo/com.foo.BarService 目录下的所有提供者和消费者 URL 地址。
Windows环境下安装Zookeeper
  1. 下载zookeeper
    https://archive.apache.org/dist/zookeeper/zookeeper-3.8.0/

  2. 解压缩zookeeper
    解压到没有中文、没有空格的路径
    如:D:\soft\apache-zookeeper-3.8.0-bin

  3. 修改zoo.cfg配置,重新运行
    将conf下的zoo_sample.cfg复制一份改名为zoo.cfg
    修改zoo.cfg的配置信息: dataDir=…/data 数据存储的目录
    修改zoo.cfg的配置信息 dataLogDir=…/logs 项目的日志目录
    audit.enable=true
    【微服务】认识Dubbo+基本环境搭建,微服务,Java,Dubbo,微服务,dubbo,架构

  4. 运行Zookeeper Server
    进入Zookeeper所在的bin目录
    双击zkServer.cmd
    【微服务】认识Dubbo+基本环境搭建,微服务,Java,Dubbo,微服务,dubbo,架构文章来源地址https://www.toymoban.com/news/detail-851226.html

2.dubbo-admin

  • dubbo本身并不是一个服务软件。它其实就是一个jar包能够帮你的java程序连接到zookeeper,并利用zookeeper消费、提供服务。
  • 但是为了让用户更好的管理众多的dubbo服务,官方提供了一个可视化的管理程序dubbo-admin。
  • dubbo-admin控制台提供了 Dubbo 集群的可视化视图,通过 Admin 你可以完成集群的几乎所有管控工作。
  • 安装时需要指定注册中心地址,即可从注册中心中获取到所有的提供者/消费者进行配置管理。

Windows下安装dubbo-admin 3-2

  1. 下载dubbo-admin
    网址:https://github.com/apache/dubbo-admin
  2. 解压缩dubbo-admin
    解压到没有中文、没有空格的路径中
    如:D:\dubbo-admin
  3. 进入目录,修改dubbo-admin配置
    进入bin\config目录,修改服务端口
    修改zookeeper的服务地址
  4. 运行dubbo-admin
    进入bin目录,双击startup.cmd
    打开浏览器,输入localhost:7001 默认用户名和密码为root
    【微服务】认识Dubbo+基本环境搭建,微服务,Java,Dubbo,微服务,dubbo,架构

到了这里,关于【微服务】认识Dubbo+基本环境搭建的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 2.1: Dubbo的基本应用-负载均衡,集群容错,服务降级

    官网地址:  http://dubbo.apache.org/zh/docs/v2.7/user/examples/loadbalance/ 如果在消费端和服务端都配置了负载均衡策略,   以消费端为准。 这其中比较难理解的就是最少活跃调用数是如何进行统计的? 讲道理 ,   最少活跃数应该是在 服务提供者端 进行统计的,   服务提供者统计有

    2024年02月10日
    浏览(27)
  • 基于Dubbo和Nacos搭建微服务的配置中心和服务注册中心

    1.添加nacos依赖 2.配置application.properties PS:nacos2.0除了需要8848的端口之外,还新增了端口+1000的新端口用于客户端和服务端GRPC通信的端口,所以如果是自己部署的nacos需要放开这俩个端口,服务才可以启动成功。 3.配置类 3.1 添加Spring Cloud原生注解 @EnableDiscoveryClient 3.2 客户端服

    2024年02月16日
    浏览(52)
  • 基于SpringBoot+Dubbo构建的电商平台-微服务架构、商城、电商、微服务、高并发、kafka、Elasticsearc+源代码+文档说明

    项目基于springboot2.1.6.RELEASE+Dubbo2.7.3 来构建微服务。 业务模块划分,尽量贴合互联网公司的架构体系。所以,除了业务本身的复杂度不是很高之外,整体的架构基本和实际架构相差无几。 但实际上,真实的生产级的项目由于用户量以及业务的复杂度,会变得非常复杂。 所以

    2024年02月20日
    浏览(50)
  • 从0到1搭建spring cloud alibaba +springboot+nacos+dubbo微服务

      由以上版本对应关系:         springboot版本:2.3.2.RELEASE         spring cloud 版本选择:Hoxton.SR9         spring cloud alibaba版本选择:2.2.6.RELEASE 父工程的父工程:()  版本依赖关系:            其他业务模块依赖: 使用nacos做配置中心和注册中心+dubbo做RPC调用 配置文

    2024年02月11日
    浏览(36)
  • 【Dubbo】Dubbo架构的演进过程分析

    📫作者简介: 小明java问道之路 , 2022年度博客之星全国TOP3 ,专注于后端、中间件、计算机底层、架构设计演进与稳定性建设优化,文章内容兼具广度、深度、大厂技术方案,对待技术喜欢推理加验证,就职于知名金融公司后端高级工程师。          📫 热衷分享,喜欢原

    2024年02月07日
    浏览(33)
  • dubbo+zookeeper面试题,MySQL的 初步认识 - 细节狂魔,值得一读

    CPU CPU 又称 中央处理器,计算机最核心的组件! 是计算机的大脑。 是目前人类科学技术的巅峰!能CPU的技术含量相提并论的,只有氢弹。 存储器 CPU 是用来运算数据,但是计算机除了运算,还能存储数据。 存储数据 就是借助 存储器这样的设备。 而存储器又分两个大类:

    2024年04月10日
    浏览(32)
  • Java 【dubbo rpc改feign调用】解决调用服务提供方无法传递完整参数问题

    【框架改造问题点记录,dubbo改为spring cloud alibaba】 【第二篇】feign接口异常解决 【描述】多参数情况下,调用服务提供方无法传递完整参数、改@SpringQueryMap原因是会将实体自动拆分为拼接参数。目前只遇到多参数:实体和单参数情况,持续更新… 汇总: 1.多个普通参数,

    2024年02月16日
    浏览(56)
  • Dubbo 核心概念和架构

    目录 一、Dubbo 数据面     1、服务开发框架     2、通信协议 二、Dubbo 服务治理     1、服务治理抽象     2、Dubbo Admin     3、服务网格 以上是 Dubbo 的工作原理图,从抽象架构上分为两层: 服务治理抽象控制面  和  Dubbo 数据面  。 服务治理控制面 。服务治理控制面不

    2024年02月12日
    浏览(43)
  • Dubbo1-架构的演变

    项目:传统项目、互联网项目 传统项目: 一般为公司内部使用,或者小群体小范围的使用,一般不要求性能,美观,并发等 互联网项目的特点: 1.用户多 2.流量大,并发高 3.海量数据 4.易受攻击 5.功能繁琐 6.变更快 衡量网站的性能指标: 响应时间:指执行一个请求从开始

    2024年02月13日
    浏览(38)
  • Dubbo 指定调用固定ip+port dubbo调用指定服务 dubbo调用不随机 dubbo自定义调用服务 dubbo点对点通信 dubbo指定ip

    1. 在写分布式im时nami-im: 分布式im, 集群 zookeeper netty kafka nacos rpc主要为gate(长连接服务) logic (业务) lsb (负载均衡)store(存储) - Gitee.com,需要指定某一长连接服务调用,其他博客得都调不通,写的有问题。要不就是通过xml进行配置,本文主要是以代码形式,调用前 配

    2024年02月15日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包