大连模板建站软件,做试用的网站,去哪个网站找建筑图纸,小学生编程网课前十名系列文章目录 提示#xff1a;这里可以添加系列文章的所有文章的目录#xff0c;目录需要自己手动添加 Dubbo_入门 提示#xff1a;写完文章后#xff0c;目录可以自动生成#xff0c;如何生成可参考右边的帮助文档 文章目录 系列文章目录前言一、什么是分布式系统二、什么…系列文章目录 提示这里可以添加系列文章的所有文章的目录目录需要自己手动添加 Dubbo_入门 提示写完文章后目录可以自动生成如何生成可参考右边的帮助文档 文章目录 系列文章目录前言一、什么是分布式系统二、什么是RPC三、Dubbo简介Dubbo的作用Dubbo支持的协议核心组件 四、Docker安装Dubbo安装Dubbo-admin管理平台 五、Dubbo简单使用服务的生产者服务的消费者 总结 前言
提示这里可以添加本文要记录的大概内容
在当今的软件开发领域分布式系统已经成为常态。而在分布式系统中如何有效地管理和调用服务成为了一个重要的挑战。这就是 Dubbo 框架应运而生的原因。 Dubbo 是一个高性能、易用的分布式服务框架它为开发者提供了一种简单而高效的方式来构建分布式系统。通过 Dubbo你可以轻松地将服务拆分为多个独立的模块并在不同的机器上部署它们。这样可以提高系统的可伸缩性和可靠性。 在接下来的博客文章中我将带领你逐步了解 Dubbo 的入门使用。你将学习如何搭建 Dubbo 服务、如何调用其他服务以及如何处理服务之间的通信。 无论你是刚刚开始接触分布式系统还是已经有一定经验的开发者Dubbo 都能为你提供一个强大的工具帮助你构建高效、可靠的分布式应用程序。 让我们一起开始探索 Dubbo 的世界释放分布式服务的潜力 提示以下是本篇文章正文内容下面案例可供参考
一、什么是分布式系统
在当今的数字时代处理大量数据和高并发请求已经成为许多应用程序所面临的挑战。为了解决这些问题我们需要一种能够突破单机限制的解决方案这就是分布式系统。
分布式系统是由多个独立的计算机节点通过网络连接组成的一个整体。这些节点可以分布在不同的地理位置它们协同工作以实现共同的目标。与传统的单体系统相比分布式系统具有更高的可伸缩性、可靠性和容错能力。
在分布式系统中每个节点都可以承担一部分计算和数据处理工作。通过将负载分布到多个节点上可以提高系统的处理能力和响应速度。此外分布式系统还可以通过数据复制和备份来确保数据的安全性和可靠性。
然而分布式系统也带来了一些挑战如一致性、容错性和网络延迟等问题。为了解决这些问题需要采用适当的分布式算法和协议来协调各个节点的操作。
总的来说分布式系统为我们提供了一种强大的解决方案使我们能够处理大规模的数据和高并发请求。它是现代互联网应用程序的基础支撑着众多知名的科技公司和互联网服务。
二、什么是RPC
RPC Remote Procedure Call 即远程过程调用是一种通过网络从远程计算机程序上请求服务而不需要了解底层网络技术的协议。 RPC 的思想是让远程的调用者像调用本地函数一样调用远程的函数。它使得分布在不同计算机上的程序能够相互通信和协作而无需关心网络细节。 RPC 的工作原理如下
客户端发起请求客户端程序通过指定的协议和格式向服务端发送请求请求中包含了要调用的远程函数的名称、参数等信息。服务端接收请求服务端收到客户端的请求后根据请求中的信息确定要调用的本地函数并将参数传递给该函数。服务端执行函数服务端的本地函数执行相应的操作并返回结果。服务端返回结果服务端将函数的执行结果按照约定的协议和格式返回给客户端。客户端接收结果客户端接收到服务端返回的结果后进行相应的处理。
三、Dubbo简介
Apache Dubbo是一款高性能、轻量级的开源服务框架致力于提供高性能和透明化的RPC远程服务调用方案以及SOA服务治理方案。
Dubbo的作用
远程调用 Dubbo 提供了一种高效、可靠的远程调用机制使得服务消费者可以方便地调用其他服务提供者的功能。负载均衡 Dubbo 支持多种负载均衡策略如随机、轮询、加权等。它可以根据服务的负载情况自动分配请求到不同的服务实例以提高系统的性能和可用性。服务注册与发现 Dubbo 支持服务的自动注册和发现。通过注册中心服务提供者可以将其服务信息发布到注册中心而服务消费者可以通过查询注册中心获取可用的服务列表。服务治理 Dubbo 提供了丰富的服务治理功能包括服务路由、服务限流、服务容错等。这些功能可以帮助开发者更好地管理和监控服务的运行状况。
Dubbo支持的协议
Dubbo协议Hessian协议HTTP协议RMI协议WebService协议Memcached协议Redis协议
核心组件
注册中心Registry用于存储和管理服务提供者的信息服务消费者通过注册中心获取服务提供者的地址和接口信息。服务提供者Provider服务的提供方将自身的服务通过 Dubbo 框架暴露给其他服务使用者。服务消费者Consumer服务的调用方通过 Dubbo 框架调用其他服务提供者提供的服务。监控中心Monitor用于监控服务的调用情况和性能指标提供实时的监控数据和统计分析。配置中心Config Center用于集中管理服务的配置信息支持动态配置更新。协议Protocol Dubbo 支持多种协议如 HTTP、TCP 等用于服务之间的通信。序列化Serialization用于数据在网络传输中的序列化和反序列化支持多种序列化格式如 JSON、Hessian 等。负载均衡Load Balance用于将请求均衡地分配到多个服务提供者实例上提高系统的性能和可靠性。服务治理Service Governance包括服务路由、服务限流、服务容错等功能用于管理和优化服务的运行。
四、Docker安装Dubbo
1.下载Zookeeper镜像
docker pull zookeeper:3.5.9
2.启动运行容器 -d守护进程运行 -p映射端口
docker run --name zk -d -p 2181:2181 zookeeper:3.5.93.进入容器 exec在运行的容器中执行 -it交互式
docker exec -it zk /bin/bash安装Dubbo-admin管理平台
Dubbo-admin管理平台图形化的服务管理页面安装时需要指定注册中心地址即可从注册中心中获取到所有的提供者/消费者进行配置管理。
1.下载Dubbo-Admin镜像
docker pull docker.io/apache/dubbo-admin2.启动运行容器
docker run -d \
--name dubbo-admin \
-p 9600:8080 \
-e admin.registry.addresszookeeper://192.168.66.100:2181 \
-e admin.config-centerzookeeper://192.168.66.100:2181 \
-e admin.metadata-report.addresszookeeper://192.168.66.100:2181 \
--restartalways \
docker.io/apache/dubbo-admin
参数配置如下
–restartalways 容器退出时总是重启admin.registry.address注册中心admin.config-center配置中心admin.metadata-report.address元数据中心
五、Dubbo简单使用
Dubbo简单一点来是说就是提供远程服务的现在举一个简单的例子来说明。现有两个服务(应用)一个是服务的生产者另一个是服务的消费者现在服务的消费者要调用服务的生产者(消费者调用生产者的接口)。接下来的演示只显示重要部分且Dubbo和Zookeeper需要提前启动。
服务的生产者
1.引入依赖
!-- 整合dubbo --
dependencygroupIdio.dubbo.springboot/groupIdartifactIdspring-boot-starter-dubbo/artifactIdversion1.0.0/version
/dependency
!-- zookeeper客户端 --
dependencygroupIdcom.101tec/groupIdartifactIdzkclient/artifactIdversion0.7/version
/dependency
2.配置文件
# 端口号
server.port9090
# 1. 配置项目名称
spring.dubbo.application.nameuser-service
# 2. 配置注册中心地址
spring.dubbo.registry.addresszookeeper://192.168.66.100
spring.dubbo.registry.port2181
# 3. 指定dubbo使用的协议、端口
spring.dubbo.protocol.namedubbo
spring.dubbo.protocol.port20880
# 4. 指定注册到zk上超时时间ms
spring.dubbo.registry.timeout10000
# 5. 配置Dubbo包扫描
spring.dubbo.scancom.itbaizhan.service3.提供服务
import com.alibaba.dubbo.config.annotation.Service;
service // 将这个类提供的方法服务 对外发布。将访问的地址 ip 端口
路径 注册到注册中心
//Service //将该类的对象创建出来放到spring的IOC容器中。 bean定义
public class OrderServiceImpl implements IOrderService {
}注意Service是Dubbo依赖下的不是Spring的
服务的消费者
1.引入依赖
!-- 整合dubbo --
dependencygroupIdio.dubbo.springboot/groupIdartifactIdspring-boot-starter-dubbo/artifactIdversion1.0.0/version
/dependency
!-- zookeeper客户端 --
dependencygroupIdcom.101tec/groupIdartifactIdzkclient/artifactIdversion0.7/version
/dependency2.配置文件
# 端口号
server.port8080
# 1. 配置项目名称
spring.dubbo.application.nameuser-service
# 2. 配置注册中心地址
spring.dubbo.registry.addresszookeeper://192.168.66.100
spring.dubbo.registry.port2181
# 3. 指定dubbo使用的协议、端口
spring.dubbo.protocol.namedubbo
spring.dubbo.protocol.port20881
# 4. 指定注册到zk上超时时间ms
spring.dubbo.registry.timeout10000
# 5. 配置Dubbo包扫描
spring.dubbo.scancom.itbaizhan.service
3.消费服务 /*** * Autowired : 本地注入* * 1. 从zookeeper注册中心获取IOrderService访问的url。* 2. 进性远程调用RPC。* 3. 将结果封装为一个代理对象给这个变量赋值。 * */Reference// 远程注入private IOrderService iOrderService; 总结
提示这里对文章进行总结
总的来说 Dubbo 为构建分布式系统提供了一种简单而强大的方式。通过了解 Dubbo 的基本概念和核心组件我们可以更好地利用它来构建高可靠性、可伸缩的分布式应用程序。如果你对 Dubbo 感兴趣不妨进一步深入学习探索其更多的功能和应用场景。