Dubbo

本文详细介绍了Dubbo的概念,包括其作为高性能服务框架的角色,以及与单体架构、SOA架构和RPC的关系。文章深入讲解了Dubbo的框架结构,包括registry、consumer、provider、container和monitor的角色和功能,并阐述了Dubbo的执行流程。此外,还讨论了Dubbo支持的协议和注册中心,特别是Zookeeper的优点和缺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、概念

1. Dubbo介绍

   Dubo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过该高性能的RPC实现服务的输出和输入功能,可以和Spring框架无缝集成。Dubbo框架,是基于容器运行的。容器是Spring。
   官方网站:http://dubbo.apache.org/
   阿里巴巴已经将dubbo框架捐献给了Apache软件基金会

2.单体架构

   单体架构也称为单体系统或者是单体应用。就是一种把系统中所有的功能、模块耦合在一个应用中的架构方式。其优点为:项目易于管理、部署简单。缺点:测试成本高、可伸缩性差、迭代困难、跨语言程度差、团队协作难

3.SOA架构

   面向服务的架构(SOA-Service Oriented Architecture)是一个组件模型,它将应用程序拆分成不同功能单元(称为服务)通过这些服务之间良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以一种统一和通用的方式进行交互。

4.RPC远程过程调用

   远程过程调用协议(Remote Procedure Call Protocol),它是一个通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层,RPC使得开发包括网络分布式多程序在内的应用程序更加容易。

二、Dubbo框架结构图

1.Dubbo角色介绍

在这里插入图片描述

1.1registry

   注册中心,是用于发布和订阅服务的一个平台,用于替代SOA结构体系框架中的ESB服务总线的

1.1.1发布

   开发服务费代码完毕后,将服务信息发布出去,实现一个服务的公开。

1.1.2订阅

   客户端程序,从注册中心下载服务内容 这个过程是订阅。
   订阅服务的时候,会将发布的服务所有信息,一次性下载到客户端,客户端也可以自定义,选修部分服务配置信息,如果:超时的时长,调用的重试次数等。

1.2consumer

   服务发消费者,就是服务的客户端
   消费者必须使用Dubbo技术开发部分代码,基本上都是配置文件定义。

1.3provider

   服务的提供者,就是服务端
   服务端必须使用Dubbo技术开发部分代码,以及配置文件为主

1.4container

   容器,Dubbo技术的服务端(Provider),在执行的时候,必须依赖容器才能正常启动
   默认依赖的就是Spring容器,且Dubbo技术不能脱离Spring框架。
   在2.5.3版本的dubbo中,默认依赖的是spring2.5版本技术,可以选用spring4.5以下版本
   在2.5.3版本的dubbo中,默认依赖是spring4.3.1版本技术,可以选择任意的spring版本。

1.5monitor

   监控中心,是Dubbo提供的一个jar工程
   主要功能是监控服务端(Provider)和消费端(Consumer)的使用数据的,如:服务端是什么,有多少接口,多少方法,调用次数,压力信息等,客户端有多少,调用过哪些服务端,调用多少次等。。

2.Dubbo 架构图的执行流程

在这里插入图片描述

2.1Dubbo 执行流程

 0.start:启动Spring容器时,自动启动Dubbo的Provider
 1.register:Dubbo的Provider在启动后自动会去注册中心注册内容。注册的内容包括:
  1.1 Provider的IP
  1.2Provider的端口
  1.3Provider对外提供的接口列表。哪些方法,哪些接口
  1.4Dubbo的版本
  1.5访问Provider的协议
 2.subscribe:订阅。当Consumer启动时,自动去Registry获取到所已注册的服务的信息
 3.notify:通知。当Provider的信息发生变化时,自动由Registry向Consumer推送通知
 4.invoke:调用。Consumer调用Provider中方法
  4.1同步请求。消耗一定性能。但是必须是同步请求,因为需要接收调用方法后的结果
 5.count:次数。每隔2分钟,provoider和consumer自动向Monitor发送访问次数.Monitor进行统计

3.Dubbo支持的协议

3.1Dubbo协议(官方推荐协议)

在这里插入图片描述

3.2RMI(Remote Method Invocation)协议

在这里插入图片描述

3.3Hessian协议

在这里插入图片描述

4.Dubbo支持的注册中心

4.1Zookeeper(官方推荐)

优点:
支持分布式.很多周边产品.
缺点:
受限于 Zookeeper 软件的稳定性.Zookeeper 专门分布式辅助软件,稳定较优

4.2Multicast

优点:
去中心化,不需要单独安装软件.
缺点:
Provider 和 Consumer 和 Registry 不能跨机房(路由)

4.3Redis

优点:
支持集群,性能高
缺点:
要求服务器时间同步.否则可能出现集群失败问题.

4.4Simple

优点:
标准 RPC 服务.没有兼容问题
缺点:
不支持集群.

三、zookeeper

在dubbo中我们选择zookeeper来搭建服务治理中心。

这个错误是由于无法连接到本地主机的10248端口导致的。这个端口通常是kubelet进程监听的端口,用于健康检查。出现这个错误可能是由于kubelet进程没有正确启动或者配置错误导致的。 解决这个问题的方法是检查kubelet进程的状态和配置。你可以按照以下步骤进行操作: 1. 检查kubelet进程是否正在运行。你可以使用以下命令检查kubelet进程的状态: ```shell systemctl status kubelet ``` 如果kubelet进程没有运行,你可以使用以下命令启动它: ```shell systemctl start kubelet ``` 2. 检查kubelet的配置文件。你可以使用以下命令查看kubelet的配置文件路径: ```shell kubelet --kubeconfig /etc/kubernetes/kubelet.conf --config /var/lib/kubelet/config.yaml --bootstrap-kubeconfig /etc/kubernetes/bootstrap-kubelet.conf config view ``` 确保配置文件中的端口号和地址正确,并且与你的环境相匹配。 3. 检查网络连接。你可以使用以下命令检查是否可以连接到localhost10248端口: ```shell curl -sSL http://localhost:10248/healthz ``` 如果无法连接,请确保端口没有被防火墙或其他网络配置阻止。 4. 检查docker的配置。有时候,kubelet进程依赖于docker进程。你可以按照以下步骤检查docker的配置: - 创建/etc/docker目录: ```shell sudo mkdir /etc/docker ``` - 编辑/etc/docker/daemon.json文件,并添加以下内容: ```json { "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2", "storage-opts": [ "overlay2.override_kernel_check=true" ], "registry-mirrors": ["https://tdhp06eh.mirror.aliyuncs.com"] } ``` - 重启docker进程: ```shell systemctl restart docker ``` 请注意,以上步骤是一种常见的解决方法,但具体解决方法可能因环境而异。如果以上步骤无法解决问题,请提供更多的错误信息和环境配置,以便我们能够更好地帮助你。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值