Dubbo学习-2 分布式服务介绍
当我们项目打包成一个需要部署到多台服务器的时候,此时修改项目中的一个功能,那么就需要重新部署多台服务器,此时会造成浪费,那么此时可以将一个大项目拆分成多个子项目,子应用,每个应用都是单独部署的,(独立,可部署,可运行的)只负责某一方面的工作。
->微服务
使用servlet也可以实现但是慢,而且每个servlet有可能会造成歧义(可能请求的目的和返回的不是同一个)
->分布式:每个服务器的应用不同,也可能每个服务器运行的操作系统不同的,但是整体对外提供服务-->应用是独立的,但是相互之间访问-->dubbo就是来提高应用之间的访问速度
->集群:服务器是相同的
引入dubbo实践:
copy weather项目为02-provider和03-consumer项目(当用户的请求比较多的时候,可以多多部署02-provider,如果前端的请求比较多,可以多多部署03-consumer项目)-->
RPC协议可以方便快速的实现访问另一个应用的功能->
1.RPC协议
协议:多方共同遵循的规范,网络中的计算机数据交换依赖的各种协议,http,ftp。
RPC:(Remote procedure call protocol)远程过程调用协议,是一种通过网络从计算机程序请求服务,可以屏蔽掉底层具体实现,通过RPC协议可以实现计算机之间相互的调用,更容易方便,将底层数据传输网络访问屏蔽掉了,更好的应用到分布式中
2.Dubbo框架
2.1>是一个RPC框架,应用于分布式服务之间调用;
java项目的顶级项目
其他RPC框架 Motan(java) Dubbox(java) grpc(跨语言的)
2.2>Dubbo框架的作用:
远程调用:实现透明的远程方法调用,就像调用本地方法一样
服务管理:服务自动注册和服务发现
负载均衡:软件负载均衡实现和容错机制
2.3>dubbo服务的实现原理:
远程调用是通过动态代理,dubbo的底层实现是动态代理,由dubbo框架创建远程服务(接口)对象的代理对象,通过代理对象调用远程方法;
2.4>dubbo框架支持的协议:
dubbo,rmi,hessian,http,thrift,memcached,redis,webservice这8种协议
使用dubbo协议就是在spring的配置文件中添加<dubbo:protocal name="" port=""/>
dubbo协议:
特点: 采用的是单一长连接和异步通讯,适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况
同步:等待结果,打电话
异步:请求者不用等待响应结果 QQ
像上传文件之类的大数据量请求不适合dubbo,单一长连接
2.5>dubbo组件
2.6>项目实践
服务提供者
1.新建web project
2.导入jar:
dubbo实现jar: dubbo-版本.jar
网络通信jar:netty.jar
动态代理使用jar:javassit.jar
spring相关jar:spring-*.jar
日志jar:commons-logging.jar
3.定义保存数据的实体类,数据是通过网络传送的,实体类必须实现序列化接口
4.定义业务接口和实现类
5.定义spring的配置文件,管理dubbo的对象
暴露服务,暴露的服务消费者才能使用
6.定义测试类,测试配置文件是否有效
7.导出接口和实体类的定义为一个jar(供消费者使用)-->只导出接口service和bean,serviceImpl不能导出
8.在web应用中使用spring,修改web.xml注册监听器,创建spring容器,加载配置文件、
消费者创建实例:
运行服务提供者再运行服务消费者
也可以采用将service封装的方式,当然这种方式需要在spring的配置文件中做新的配置
2.7>标准方式的使用:
创建一个只定义一个接口的项目(只有接口的定义和相关的要使用的实体类)
例如只定义天气服务WeatherService和电影服务MovieService,具体实现分别由A,B部门自己实现,这样的话方便消费者使用和管理jar包,only one,provider.xml写到两个项目A,B中,将api的jar包导入provider和consumer中
check="false"表示忽略检查
retries="5" 表示可重试6次,默认是2,也就是可调用3次
2.8>点对点直连当url变化就不能使用了,可以使用注册中心
zk redis simple muti组播
zk的好处就是支持变更推送,使用树的结构,文件子文件的形式来支持多个dubbo的,
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理