1.什么是RPC远程调用?
RPC 的全称是 Remote Procedure Call 是一种进程间通信方式。它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式编码这个远程调用的细节。即无论是调用本地接口/服务的还是远程的接口/服务,本质上编写的调用代码基本相同。比如两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数或者方法,由于不在一个内存空间,不能直接调用,这时候需要通过就可以应用RPC框架的实现来解决
2.什么是SOA?与SOAP区别是什么?
SOA是一种面向服务架构,是将相同业务逻辑抽取出来组成单独服务。
SOAP是WebService面向服务协议,采用xml,因为比较中,现在不是特别流行。
3.什么是微服务架构
微服务架构师一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相
协调、互相配合没用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的同学机制互相沟通(通畅采用Http+restful API),每个服务都围绕着具体业务进行构建,并且能够被独立的部署到生成环境、类生存环境等。另外,应尽量避免同一的、集中式服务管理机制。
4.微服务与SOA区别
SOA实现微服务架构实现
企业级,自顶向下开展实施团队级,自定向上开展实施
服务由多个子系统组成一个系统被拆分成多个服务
集成式服务(esb、ws、soap)集成方式简单(http、rest、json)
5.RPC远程调用有哪些框架?
SpringCloud、Dubbo、Dubbox、Hessian、HttpClient、thrift等。
6.什么是SpringCloud
SpringCloud为开发人员提供了快速构建分布式系统的一些工具,包括配置管理、服务发现(Eureka)、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等。它运行环境简单,可以在开发人员的电脑上跑。另外说明spring cloud是基于Springboot的,所以需要开发中对Springboot有一定的了解,如果不了解的话可以看蚂蚁课堂SpringBoot课程。
SpringCloud使用Eureka作为注册中心,使用rest+ribbon或者feign,断路器Hystrix、zuul接口网关等。
7.什么是Dubbo?
Duubbo是一个RPC远程调用框架,分布式服务治理框架
什么是Dubbo服务治理?
服务与服务之间会有很多个Url、依赖关系、负载均衡、容错、自动注册服务。
8.Dubbo有哪些协议?
默认用的dubbo协议、Http、RMI、Hessian
9.Dubbo整个架构流程
分为四大模块
生产者、消费者、注册中心、监控中心
生产者:提供服务
消费者: 调用服务
注册中心:注册信息(redis、zk)
监控中心:调用次数、关系依赖等。
首先生产者将服务注册到注册中心(zk),使用zk持久节点进行存储,消费订阅zk节点,一旦有节点变更,zk通过事件通知传递给消费者,消费可以调用生产者服务。
服务与服务之间进行调用,都会在监控中心中,存储一个记录。
10.Dubbox与Dubbo区别?
Dubox使用http协议+rest风格传入json或者xml格式进行远程调用。
Dubbo使用Dubbo协议。
11.SpringCloud与Dubbo区别?
相同点:
dubbo与springcloud都可以实现RPC远程调用。
dubbo与springcloud都可以使用分布式、微服务场景下。
区别:
dubbo有比较强的背景,在国内有一定影响力。
dubbo使用zk或redis作为注册中心
springcloud使用eureka作为注册中心
dubbo支持多种协议,默认使用dubbo协议。
Springcloud只能支持http协议。
Springcloud是一套完整的微服务解决方案。
Dubbo目前已经停止更新,SpringCloud更新速度快。
12.什么是Zookeeper
Zookeeper是一个工具,可以实现集群中的分布式协调服务。
所谓的分布式协调服务,就是在集群的节点中进行可靠的消息传递,来协调集群的工作。
Zookeeper之所以能够实现分布式协调服务,靠的就是它能够保证分布式数据一致性。
所谓的分布式数据一致性,指的就是可以在集群中保证数据传递的一致性。
Zookeeper能够提供的分布式协调服务包括:数据发布订阅、负载均衡、命名服务、分布式协调/通知、集群管理、分布式锁、分布式队列等功能
13.Zookeeper特点
Zookeeper工作在集群中,对集群提供分布式协调服务,它提供的分布式协调服务具有如下的特点:
顺序一致性:从同一个客户端发起的事务请求,最终将会严格按照其发起顺序被应用到zookeeper中
原子性:所有事物请求的处理结果在整个集群中所有机器上的应用情况是一致的,即,要么整个集群中所有机器都成功应用了某一事务,要么都没有应用,一定不会出现集群中部分机器应用了改事务,另外一部分没有应用的情况。
单一视图:无论客户端连接的是哪个zookeeper服务器,其看到的服务端数据模型都是一致的。
可靠性:一旦服务端成功的应用了一个事务,并完成对客户端的响应,那么该事务所引起的服务端状态变更将会一直保留下来,除非有另一个事务又对其进行了改变。
实时性:zookeeper并不是一种强一致性,只能保证顺序一致性和最终一致性,只能称为达到了伪实时性。
14.zookeeper的数据模型
zookeepei中可以保存数据,正是利用zookeeper可以保存数据这一特点,我们的集群通过在zookeeper里存取数据来进行消息的传递。
zookeeper中保存数据的结构非常类似于文件系统。都是由节点组成的树形结构。不同的是文件系统是由文件夹和文件来组成的树,而zookeeper中是由ZNODE来组成的树。
每一个ZNODE里都可以存放一段数据,ZNODE下还可以挂载零个或多个子ZNODE节点,从而组成一个树形结构。
15.Zookeeper应用场景
数据发布订阅
负载均衡
命名服务
分布式协调
集群管理
配置管理
分布式队列
16.什么是分布式锁
简单的理解就是:分布式锁是一个在很多环境中非常有用的原语,它是不同的系统或是同一个系统的不同主机之间互斥操作共享资源的有效方法。
17.Zookeeper实现分布式锁
分布式锁使用zk,在zk上创建一个临时节点,使用临时节点作为锁,因为节点不允许重复。
如果能创建节点成功,生成订单号,如果创建节点失败,就等待。临时节点zk关闭,释放锁,其他节点就可以重新生成订单号。
19.Zookeeper与 Redis实现分布式锁的区别
基于缓存实现分布式锁锁没有失效事件,容易死锁非阻塞式
不可重入
基于Zookeeper实现分布式锁
实现相对简单
可靠性高
性能较好
分布式情况下定时任务会出现哪些问题?
分布式集群的情况下,怎么保证定时任务不被重复执行
分布式定时任务解决方案
①使用zookeeper实现分布式锁 缺点(需要创建临时节点、和事件通知不易于扩展)
②使用配置文件做一个开关 缺点发布后,需要重启
③数据库唯一约束,缺点效率低
④使用分布式任务调度平台
XXLJOB