对于dubbo理解,学习和面试逼问的东西

分布式架构:
第一套:spring boot + spring cloud 导入依赖,取消xml
第二套:spring boot + dubbo

	1. dubbo 简介:是一款高性能Java RPC框架。
		****官网:dubbo.io****

在这里插入图片描述
1.1 架构演变:
单一架构:ORM
垂直架构:MVC
分布式架构:RPC
流动性计算架构:SOA
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
1.2 DUBBO(有个默认的负载均衡) 架构图
在这里插入图片描述
在这里插入图片描述
容器(ioc依赖注入,集合,spring(不重复造轮子,可以整合任何框架)),服务的提供者,注册中心,服务的消费者(拿地址)去拿地址的时候是异步,真正的去拿服务的时候是同步(5步),监控中心(监控服务与消费的往来次数count)6步
在这里插入图片描述
1.3 注册中心
必须先安装JDK,
再安装zookeeper!
Zookeeper 是 Apacahe Hadoop 的子项目,是一个树型的目录服务,支持变更推送,适合作为 Dubbo 服务的注册中心,工业强度较高,可用于生产环境,并推荐使用
在这里插入图片描述
在这里插入图片描述

			单机版
			<dubbo:registry address="zookeeper://10.20.153.10:2181" />
			集群版
			<dubbo:registry address="zookeeper://10.20.153.10:2181?backup=10.20.153.11:2181,10.20.153.12:2181" />
		1.4	最佳实战

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
怎么指定不序列化::static
POJO,bean,domain,entity。 实体类
vo ,dto, 实体类
在这里插入图片描述 在这里插入图片描述
1.5 推荐用法

			<dubbo:service interface="com.alibaba.hello.api.HelloService" version="1.0.0" ref="helloService"
				timeout="300" retry="2" loadbalance="random" actives="0" />
				
				timeout:方法调用的超时时间
				retries:失败重试次数,缺省是 2 [2]
				loadbalance:负载均衡算法 [3],缺省是随机 random。还可以配置轮询 roundrobin、最不活跃优先 [4] leastactive 和一致性哈希 consistenthash 等
				actives:消费者端的最大并发调用限制,即当 Consumer 对一个服务的并发调用到上限后,新调用会阻塞直到超时,在方法上配置 dubbo:method 则针对该方法进行并发限制,在接口上配置 dubbo:service,则针对该服务进行并发限制
		1.6	dubbo 历史2.5.3

在这里插入图片描述
dubbox 当当写的!

			我们现在用2.6.x
		1.7	dubbo 通信
			dubbo 2.5.6版本新增了对***netty4通信模块的支持***,启用方式如下
		1.8	协议参考手册
			***默认使用dubbo:// 通讯协议***

在这里插入图片描述
2. SOA 架构搭建
3. 在这里插入图片描述
在订单模块中 ,调用用户模块
在这里插入图片描述
使用dubbo 来完成上述的描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4. 项目搭建
在这里插入图片描述
3.1 在github 官网上创建一个空的project
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3.2 搭建gmall-parent 父工程 只定义jar 包版本号
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
手动,
no。。。no不提交给git
在这里插入图片描述
在这里插入图片描述
3.3 搭建gmall-bean 实体类 Maven
3.4 搭建gmall-interface 主要写接口 对接业务层的接口
3.5 搭建gmall-common-util 工具类
gmall-web-util
gmall-service-util
在这里插入图片描述
3.6 搭建gmall-user-manage项目
该项目中放入mapper,以及service.impl
3.6.1 修改pom.xml
a. 父项目
b. 添加依赖

				3.6.2	编写mapper

在这里插入图片描述
在这里插入图片描述
3.6.3 编写service.impl
在这里插入图片描述
在这里插入图片描述
3.6.4 配置数据源
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
6. 业务实现:
在订单模块中,通过 userId 查询用户的地址列表!
userId
userAddress 数据库表
select * from userAddress where userId = userId;
通过 userId 查询用户的地址列表 应该属于 用户模块的服务!
4.1 功能开发:
bean,mapper,service,service.impl,controller
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4.1.1 搭建项目模块 gmall-order-web
修改pom.xml
a. 父项目
b. 添加依赖
4.1.2 调用user服务
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
测试结果:
Field userService in com.atguigu.gmall1205.order.controller.OrderController required a bean of type ‘com.atguigu.gmall1205.service.UserService’ that could not be found.
原因:
@Autowired 该注解表示从ioc 容器中获取对象 因为在8081 中本身没有改对象。
该对象存在8080 中!
不能从另一个容器中获取到该对象,所以报错!
解决方案:
使用dubbo 来解决,将服务发布注册中心上即可!

在这里插入图片描述
4.2 配置dubbo 的环境
在这里插入图片描述
4.2.1 先安装jdk {自己手动配置的,不要使用原生自带}
先卸载,然后再安装

						vim /etc/profile
						
						JAVA_HOME=/opt/jdk1.8.0_152
						PATH=$PATH:$JAVA_HOME/bin
						CLASSPATH=$JAVA_HOME/lib
						export JAVA_HOME PATH CLASSPATH
						
						source /etc/profile
						
						java -version
			4.2.2	再安装zookeeper!
						cp zoo_sample.cfg zoo.cfg
						
						进入bin 目录
						./zkServer.sh start
						
						./zkServer.sh status
						
							Mode: standalone	单机版
						
						查看进程!
							ps -ef | grep zookeeper
							
							结束进程
							kill -9 pid
							
			4.2.3	安装dubbo的监控中心
					监控中心的本质就是一个 xxx.war 包 【动态web 工程 必须依赖服务器--tomcat】
					
					安装完tomcat 之后,并启动!
					
					停止tomcat !
						./shutdown.sh 
						rm -rf dubbo-admin-2.6.0.war 
						mv dubbo-admin-2.6.0 dubbo-admin

					重新启动tomcat!
						 ./startup.sh 
					
					只要能访问 则说明监控中心安装成功!
					
					http://192.168.67.217:8080/dubbo-admin/governance/consumers
					
			4.2.4	如何使用dubbo!
	
					添加依赖:
						
						两个注解两个配置!
							
							服务提供者:
								一个注解一个配置
									import com.alibaba.dubbo.config.annotation.Service;
									@Service alibaba 阿里巴巴的
								
								application.properties
									spring.dubbo.application.name=user-manage
									spring.dubbo.registry.protocol=zookeeper
									spring.dubbo.registry.address=192.168.67.217:2181
									spring.dubbo.base-package=com.atguigu.gmall1205
									spring.dubbo.protocol.name=dubbo
									
									进行序列化
									implements Serializable
																		
								
							服务消费者:
								一个注解一个配置
									import com.alibaba.dubbo.config.annotation.Reference;
									
									application.properties	
									# dubbo  配置
									spring.dubbo.application.name=order-web
									spring.dubbo.registry.protocol=zookeeper
									spring.dubbo.registry.address=192.168.67.217:2181
									spring.dubbo.base-package=com.atguigu.gmall1205
									spring.dubbo.protocol.name=dubbo
									# 设置超时时间
									spring.dubbo.consumer.timeout=10000
									# 检查消费者
									spring.dubbo.consumer.check=false
					![在这里插入图片描述](https://img-blog.csdnimg.cn/20190829231940319.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDA1MDM1NQ==,size_16,color_FFFFFF,t_70)
									
									**获取数据的时候,需要进行反序列化。**
									implements Serializable
																			
									
						error:
						java.lang.IllegalStateException: Serialized class com.atguigu.gmall1205.bean.UserAddress must implement java.io.Serializable
							
							
						
						正常启动顺序:
						
						前提条件必须启动zk
						
						
						如果zk 启动不了?
						
						都是因为:JDK!
						
						
						先启动服务提供者:
							服务消费者:

在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值