1. 什么是分布式

简单理解就是,将一个程序的多个业务拆分开来(比如拆分成用户模块和角色模块),放在不同的服务器中,它们之间利用通信来传递数据。

2. 什么是集群

简单说,就是相同的项目放在多个服务器中,多个服务器就形成集群。

3. 什么是RPC协议

中文名叫远程服务调用,简单来说就是两台服务器,a服务器中的代码调用b服务器中的代码,这就是RPC。首先这个只是一种概念,一种用于解决不同服务器之间方法的调用问题。
看到这,你再看下第一条,是不是有思路。
分布式的本意是把 一个拆分成多个,之间使用通信来传递数据,那么这个通信问题要怎么解决呢?就有了RPC!

4. RPC框架

RPC只是一个概念,那么肯定会有相对应的技术实现,dubbo就是这一类的实现,主要是我只知道这个。。。
dubbo是阿里出品,不知道的小伙伴可以去官网看一下,至于RPC的其它框架,你们也可以自己去百度一下

5. 什么是zookeeper

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

这是百度百科上的解释,简单点,就是管理我们注册的服务。

6.dubbo图解

rpc分布式事务如何解决 rpc和分布式区别_服务器

  1. provider:提供者
  2. registry:注册中心(这里就是zookeeper)
  3. consumer:消费者

首先,假设我们有两个项目,a项目就是provider,b项目就是consumer
第一步:a项目启动,a项目中的a方法提供给注册中心,也可以称为a服务
第二步:b项目启动,b项目中的b方法要调用a项目中的a方法,于是去注册中心预定a方法
第三步:注册中心存在a方法,通知b项目去取
第四步:b项目获取到了a方法的详情信息(比如ip,端口,方法名等等),就在b方法中通过获取到的信息去执行a方法

7. 为什么一定要有注册中心(zookeeper)的存在

这一块是我自己的理解,如果说的不对,还请见谅!

首先,我们先假设没有注册中心的存在,那么提供者和消费者是直接对应的,消费者可以直接调用提供者的服务,如果提供者只有一两个,并且服务的ip也是相同的,那么这个思路是成立的。如果你的项目大起来了,那么你的服务就会越来越多,并且每个服务的ip都是不同,这个时候你再去一个一个去调用就很不现实了!

所以我们可以提供一块区域,用来存储这些服务的ip,端口,方法名等信息,并且还能统一管理。如果我需要服务,我直接去这个地方获取服务的详情信息,然后就可以直接去调用提供者的方法了

所以就会有了,dubbo和zookeeper结合来使用

结尾

上面所述的,也是我刚刚接触分布式的一些理解,因为现在微服务很火嘛,就想着自己去接触了解一下,如果有些地方是我理解的不对,还请指正,非常感谢!