分布式
什么是分布式系统?
在《分布式系统原理与泛型》中如下定义:“分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统”
分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。分布式系统的出现是为了用廉价的、普通的机器完成单个计算机无法完成的计算、存储任务。其目的是利用更多的机器,处理更多的数据
分布式系统是简历在网络之上的软件系统
Dubbo文档
随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对分布式服务架构以及流动计算架构势在必行,急需一个治理系统确保架构有条不紊的演进
RPC
什么是RPC?
是指远程过程调用,是一种进程间通信方式,他是一种技术的思想,而不是规范。它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不是程序员显示编码这个远程调用的细节。即程序员无论是调用本地的还是远程的函数,本质上编写的调用代码基本相同
RPC就是要想调用本地的函数一样去调用远程函数
两个核心模块:通讯和序列化
序列化:数据传输需要转换
Dubbo概念
什么是dubbo?
apache Dubbo是一款高性能、轻量级的开源java RPC框架,提供了三大核心能力:面向接口的远程方法调用,只能容错和负载均衡以及服务自动注册和发现
Zookeeper
官网:zookeeper官网
下载安装可以查考一下
https://blog.csdn.net/zlbdmm/article/details/109669049
在客户端测试:
先创建一个文件,并且得到这个值
安装dubbo-admin
3.在项目目录下打包dubbo-admin
mvn clean package -Dmaven.test.skip=true
4.执行dubbo-admin\target下的dubbo-admin-0.0.1-SNAPSHOT.jar
java -jar dubbo-admin-0.0.1-SNAPSHOT.jar
注意:同时打开zookeeper的服务,否则会报错
5.进入localhost:7001/,登录 默认是root /root
zookeeper:注册中心
dubbo-admin:是一个监控管理后台·查看我们注册了哪些服务,哪些服务被消费
dubbo:jar包
写一个买票程序
引入dubbo和zookeeper之后写必须要导入的依赖+
服务提供者
1、将服务提供者注册到注册中心,我们需要整合Dubbo和zookeeper,所以需要导包
我们从dubbo官网进入github,看下方的帮助文档,找到dubbo-springboot,找到依赖包
<!-- Dubbo Spring Boot Starter -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.3</version>
</dependency>
zookeeper的包我们去maven仓库下载,zkclient;
<!-- https://mvnrepository.com/artifact/com.github.sgroschupf/zkclient -->
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
【新版的坑】zookeeper及其依赖包,解决日志冲突,还需要剔除日志依赖;
<!-- 引入zookeeper -->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>2.12.0</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>2.12.0</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.14</version>
<!--排除这个slf4j-log4j12-->
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
步骤:
1.提供者提供服务
1.导入依赖
2.配置注册中心的地址,以及服务发现名,和要扫描的额包
3.在想要被注册的服务上~增加一个注解@Service
2.消费者如何消费
1。导入依赖
2。配置注册中心的地址,配置自己的服务名
3.从远程注入服务~@DubboReference