【微服务】认识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 数据面

服务治理抽象控制面

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

Dubbo数据面

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

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

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

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

在这里插入图片描述

服务开发框架

  • 微服务的目标是构建足够小的、自包含的、独立演进的、可以随时部署运行的分布式应用程序,几乎每个语言都有类似的应用开发框架来帮助开发者快速构建此类微服务应用,比如 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 服务治理

  • 服务开发框架解决了开发与通信的问题,但在微服务集群环境下,我们仍需要解决无状态服务节点动态变化、外部化配置、日志跟踪、可观测性、流量管理、高可用性、数据一致性等一系列问题,我们将这些问题统称为服务治理。
  • 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)组件,通过注册中心,服务消费者可以感知到服务提供者的连接方式,从而将请求发送给正确的服务提供者

在这里插入图片描述

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 服务的注册中心,工业强度较高,可用于生产环境,并推荐使用
在这里插入图片描述

  • 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
    在这里插入图片描述

  4. 运行Zookeeper Server
    进入Zookeeper所在的bin目录
    双击zkServer.cmd
    在这里插入图片描述

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
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/770484.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RK3568平台 iperf3测试网络性能

一.iperf3简介 iperf是一款开源的网络性能测试工具,主要用于测量TCP和UDP带宽性能。它可以在不同的操作系统上运行,包括Windows、Linux、macOS等。iperf具有简单易用、功能强大、高度可配置等特点,广泛应用于网络性能测试、网络故障诊断和网…

SpringBoot集成Solr全文检索

SrpingBoot 集成 Solr 实现全文检索 一、核心路线 使用 Docker 镜像部署 Solr 8.11.3 版本服务使用 ik 分词器用于处理中文分词使用 spring-boot-starter-data-solr 实现增删改查配置用户名密码认证使用 poi 和 pdfbox 组件进行文本内容读取文章最上方有源码和 ik 分词器资源…

【晴问算法】入门篇—字符串处理—单词数

题目描述 给定一堆用空格隔开的英文单词,统计单词个数。输入描述 一堆英文单词,每个单词不超过10个字符,且仅由大小写字母组成;每两个单词之间用一个空格隔开,整个字符串的长度不超过1000。输出描述 输出一个整数,表示…

视频汇聚平台EasyCVR启用图形验证码之后调用login接口的操作方法

视频综合管理平台EasyCVR视频监控系统支持多协议接入、兼容多类型设备,平台可以将区域内所有部署的监控设备进行统一接入与集中汇聚管理,实现对监控区域的实时高清视频监控、录像与存储、设备管理、云台控制、语音对讲、级联共享等,在监控中心…

【网络爬虫】(2) requests模块,案例:网络图片爬取,附Python代码

1. 基本原理 1.1 requests 模块 requests 是 Python 中一个非常流行的 HTTP 客户端库,用于发送所有的 HTTP 请求类型。它基于 urllib,但比 urllib 更易用。 中文文档地址:Requests: 让 HTTP 服务人类 — Requests 2.18.1 文档 &#xff0…

OpenHarmony 源码解析之SystemUi—Statusbar(TS)

作者:董伟 简介 SystemUI应用是OpenHarmony中预置的系统应用,为用户提供系统相关信息展示及交互界面,包括系统状态、系统提示、系统提醒等,例如系统时间、电量信息。 本文主要分析batterycomponent、clockcomponent、wificompo…

[Windows常用软件] word 复制粘贴报错修复

背景 在word 内 ctrlv 会报这个错。 microsoft visual basic MathPage.Wll 运行时错误 网上查了一下是 mathtype 导致的,应该是我之前卸载 mathtype 没有卸载干净导致的。 解决方案 参考知乎里面的一个回答解决的:https://www.zhihu.com/question/37…

高防服务器、高防IP、高防CDN的工作原理是什么

高防IP高防CDN我们先科普一下是什么是高防。“高防”,顾名思义,就犹如网络上加了类似像盾牌一样很高的防御,主要是指IDC领域的IDC机房或者线路有防御DDOS能力。 高防服务器主要是比普通服务器多了防御服务,一般都是在机房出口架设…

网络七层模型之网络层:理解网络通信的架构(三)

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

centos 7安装pgsql14

参考 yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm终端直接运行:yum install -y postgresql14-server 1. 初始化数据库 使用yum安装后,会在系统中创建一个postgres的无密码…

【快速解决】谷歌浏览器驱动的安装及selenium的安装

目录 快速安装Selenium 快速下载对应谷歌驱动 找不到对应版本号的解决方法 快速安装Selenium 安装 Selenium 环境就用下面的代码进行安装👇👇👇👇👇 pip install selenium3.141.0 快速下载对应谷歌驱动 点击这个链接…

关于RPC

初识RPC RPC VS REST HTTP Dubbo Dubbo 特性: 基于接口动态代理的远程方法调用 Dubbo对开发者屏蔽了底层的调用细节,在实际代码中调用远程服务就像调用一个本地接口类一样方便。这个功能和Fegin很类似,但是Dubbo用起来比Fegin还要简单很多&a…

pe启动盘破解windows密码wins电脑登录密码修改重置

目录 1.进入电脑BIOS,设置电脑第一启动项为U盘启动2.进入微pe系统3.然后点击界面最左下方的Windows图标4.点击windows密码选择对应用户名称修改; 1.进入电脑BIOS,设置电脑第一启动项为U盘启动 把u盘插到要清除密码的电脑,然后开机…

Java语法学习 正则表达式

Java语法学习 正则表达式 大纲 具体案例 需求:使用正则表达式完成对文本的查询,regular expression(正则表达式) 源码解析group package com.wantian.regular;import java.util.regex.Matcher; import java.util.regex.Patt…

日新增百万数据clickhouse大数据解决方案记录分享

公司广告业务需求,需要多个维度统计每个应用的设备数,点击率,展示率,等相关数据,而且数据需要进行去重,我第一时间想到的是利用clickhouse来做统计,因为我们平台访问量比较大,用mysq…

浅谈WPF之MVVM工具包

在之前的WPF示例中,都会用到一个MVVM框,也是一个比较常的MVVM框架,就是MVVM工具包【CommunityToolkit.Mvvm】,今天专门以一个简单的小例子,简述一下MVVM工具包的常见用法,仅供学习分享使用,如有…

选项式API和组合式API的区别

选项式(options) API 和组合式(composition) API两种不同的风格书写,Vue3 的组件可以使用这两种api来编写。 选项式API和组合式API的区别 选项式API 选项式 API,具有相同功能的放在一起,可以用包含多个选项的对象来描述组件的逻辑&…

WPF---1.入门学习

学习来源 布局 wpf布局原则 一个窗口中只能包含一个元素 不应显示设置元素尺寸 不应使用坐标设置元素的位置 可以嵌套布局容器 StackPanel-->表单条件查找布局 DataGrid wpf布局容器 StackPanel: 水平或垂直排列元素,Orientation属性分别: Horizontal / Vertic…

Java数据结构-ArrayList

目录 1. 初识集合框架2. ArrayList的介绍3. ArrayList的使用3.1 构造方法3.2 add3.3 addAll3.4 remove3.5 get3.6 set3.7 contains3.8 IndexOf3.9 lastIndexOf3.10 subList 4. ArrayList的遍历4.1 简单粗暴法4.2 循环遍历法4.3 迭代器 1. 初识集合框架 Java集合框架是Java编程…

基于OneAPI+ChatGLM3-6B+FastGPT搭建LLM大语言模型知识库问答系统

搭建大语言模型知识库问答系统 部署OneAPI部署一个LLM模型部署嵌入模型部署FastGPT新建FastGPT对话应用新建 FastGPT 知识库应用 部署OneAPI 拉取镜像 docker pull justsong/one-api创建挂载目录 mkdir -p /usr/local/docker/oneapi启动容器 docker run --name one-api -d …