1.什么是软件架构?
软件架构(software architecture)是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。

2.SOA架构和微服务架构的区别?
SOA面向服务架构:是一种软件体系结构,应用程序的不同组件通过网络上的通信协议向其他组件提供服务。SOA使用WebService进行通信。

微服务架构:从SOA架构发展而来,相比于SOA,服务的粒度更小。微服务使用REST进行通信,相比于SOA更轻量级。

3.什么是分布式系统?
分布式软件系统(Distributed Software Systems)是支持分布式处理的软件系统,是在由通信网络互联的多处理机体系结构上执行任务的系统。它包括分布式操作系统、分布式程序设计语言及其编译(解释)系统、分布式文件系统和分布式数据库系统等。
4.分布式包含内容?
负载均衡:
Nginx:高性能、高并发的web服务器;功能包括负载均衡、反向代理、静态内容缓存、访问控制;工作在应用层
LVS: Linux virtual server,基于集群技术和Linux操作系统实现一个高性能、高可用的服务器;工作在网络层
Haproxy:
Apache:

webserver:
Tomcat,Apache,Jboss,WebLogic

service:
SOA、微服务、spring boot,django

容器:
docker,kubernetes

cache:
memcache、redis等

协调中心:
zookeeper、etcd、Dubbo,Eureka

rpc框架:
Netty,grpc、dubbo、brpc,Thrift,jsonrpc

消息队列:
kafka、rabbitMQ、rocketMQ、QSP

消息队列的应用场景:异步处理、应用解耦、流量削锋和消息通讯

实时数据平台:
storm、akka

离线数据平台:
hadoop、spark

dbproxy:
cobar也是阿里开源的,在阿里系中使用也非常广泛,是关系型数据库的sharding + replica 代理

db:
mysql、oracle、MongoDB、HBase

搜索:
elasticsearch、solr

日志:
rsyslog、elk、flume

  1. 分布式理论?
    CAP、BASE。
    分布式CAP理论,任何一个分布式系统都无法同时满足Consistency(一致性)、Availability(可用性)、Partition tolerance(分区容错性) 这三个基本需求。最多只能满足其中两项。
    而Partition tolerance(分区容错性) 是必须的,因此一般是CP,或者AP。

BASE是Basically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性)三个短语的缩写。BASE理论是对CAP中一致性和可用性权衡的结果,其来源于对大规模互联网系统分布式实践的总结, 是基于CAP定理逐步演化而来的。BASE理论的核心思想是:即使无法做到强一致性,但每个应用都可以根据自身业务特点,采用适当的方式来使系统达到最终一致性。

  1. 数据一致性
    数据一致性通常指关联数据之间的逻辑关系是否正确和完整。
    在分布式系统中,数据一致性往往指的是由于数据的复制,不同数据节点中的数据内容是否完整并且相同。
    一致性还分为强一致性,弱一致性,还有最终一致性。
    强一致性就是马上就保持一致。
    最终一致性是指经过一段时间后,可以保持一致。

  2. 什么是分布式事务?
    分布式事务是指会涉及到多个数据库的事务,其实就是同一数据库向分布式的扩展。目的是保证分布式系统中数据的一致性。

  3. 分布式事务方案?
    XA方案(2PC/3PC)
    2PC(二阶段提交):准备阶段和提交阶段。
    3Pc(三阶段提交):预备阶段(CanCommit),准备阶段(PreCommit)和提交阶段(DoCommit)。

TCC 方案(Try、Confirm、Cancel)

本地消息表
A 系统在自己本地一个事务里操作同时,插入一条数据到消息表;
接着 A 系统将这个消息发送到 MQ 中去;

B 系统接收到消息之后,在一个事务里,往自己本地消息表里插入一条数据,同时执行其他的业务操作。

如果 B 系统处理失败了,那么就不会更新消息表状态,那么此时 A 系统会定时扫描自己的消息表,如果有未处理的消息,会再次发送到 MQ 中去,让 B 再次处理;

A 会不断重发消息,直到 B 那边成功为止。

可靠消息最终一致性方案(RocketMQ)

A 系统先发送一个 prepared 消息到 mq,如果这个 prepared 消息发送失败那么就直接取消操作别执行了;
如果这个消息发送成功过了,那么接着执行本地事务,如果成功就告诉 mq 发送确认消息,如果失败就告诉 mq 回滚消息;

如果发送了确认消息,那么此时 B 系统会接收到确认消息,然后执行本地的事务;

mq 会自动定时轮询所有 prepared 消息回调接口是继续重试还是回滚?

最大努力通知方案
系统 A 本地事务执行完之后,发送个消息到 MQ;

这里会有个专门消费 MQ 的最大努力通知服务,这个服务会消费 MQ 然后写入数据库中记录下来,或者是放入个内存队列也可以,接着调用系统 B 的接口;
要是系统 B 执行成功就 ok 了;

要是系统 B 执行失败了,那么最大努力通知服务就定时尝试重新调用系统 B,反复 N 次,最后还是不行就放弃。

  1. 什么是幂等性?
    HTTP/1.1中对幂等性的定义是:一次和多次请求某一个资源对于资源本身应该具有同样的结果(网络超时等问题除外)。也就是说,其任意多次执行对资源本身所产生的影响均与一次执行的影响相同。

  2. 分布式锁
    分布式锁,是指在分布式的部署环境下,通过锁机制来让多客户端互斥的对共享资源进行访问。

  3. 分布式锁的实现形式?
    基于数据库实现

基于Redis实现

基于ZooKeeper实现

  1. 分布式锁应该具备哪些条件?
    1、在分布式系统环境下,一个方法在同一时间只能被一个机器的一个线程执行;

2、高可用的获取锁与释放锁;

3、高性能的获取锁与释放锁;

4、具备可重入特性;

5、具备锁失效机制,防止死锁;

6、具备非阻塞锁特性,即没有获取到锁将直接返回获取锁失败。

13.分布式Session的几种实现方式

  1. Session复制

  2. 粘性Session:当用户访问集群中某台机器后,强制指定后续所有请求均落到此机器上

  3. 缓存集中式管理

  4. 什么是消息队列?
    消息队列( messagequeuing )使用消息将应用程序连接起来。

AMQP,即Advanced Message Queuing Protocol,
一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。
基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品、不同开发语言等条件的限制。

  1. 为什么使用消息队列啊?
    解耦、异步、削峰

16.常用消息队列?
kafka、activemq、rabbitmq、rocketmq

  1. 什么是SpringCloud?
    Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。

  2. SpringCloud与Dubbo的区别?
    SpringCloud是微服务架构下的一站式解决方案;Dubbo始终定位是一个RPC框架。

SpringCloud底层使用REST进行服务调用;Dubbo使用RPC进行服务调用。

19.SpringCloud有那些组件?
Spring Cloud Netflix
Spring Cloud Config
Spring Cloud Bus
Spring Cloud Security
Spring Cloud Zookeeper
Spring Cloud Eureka
20. 什么是 Hystrix?
在分布式环境中,许多服务依赖项不可避免地将会失败。Hystrix是一个通过添加延迟容忍和容错逻辑来帮助您控制这些分布式服务之间的交互的库。Hystrix通过隔离服务之间的访问点来实现这一点,停止跨级的级联故障,并提供备用选项,所有这些都可以提高系统的整体弹性。

21.Hystrix用途?
资源隔离,服务隔离,服务熔断,服务降级,限流。

  1. 断路器原理?
    正常情况下,断路器关闭,服务消费者正常请求微服务
    一段事件内,失败率达到一定阈值(比如50%失败,或者失败了50次),断路器将断开,此时不再请求服务提供者,而是只是快速失败的方法(断路方法)
    断路器打开一段时间,自动进入“半开”状态,此时,断路器可允许一个请求方法服务提供者,如果请求调用成功,则关闭断路器,否则继续保持断路器打开状态。
  2. 什么是zuul?
    Zuul是Spring Cloud全家桶中的微服务API网关。

所有从设备或网站来的请求都会经过Zuul到达后端的Netflix应用程序。作为一个边界性质的应用程序,Zuul提供了动态路由、监控、弹性负载和安全功能。Zuul底层利用各种filter实现如下功能:

认证和安全 识别每个需要认证的资源,拒绝不符合要求的请求。

性能监测 在服务边界追踪并统计数据,提供精确的生产视图。

动态路由 根据需要将请求动态路由到后端集群。

压力测试 逐渐增加对集群的流量以了解其性能。

负载卸载 预先为每种类型的请求分配容量,当请求超过容量时自动丢弃。

静态资源处理 直接在边界返回某些响应。

java面试题(分布式篇)相关推荐

  1. Java面试题-进阶篇(2022.4最新汇总)

    Java面试题-进阶篇 1. 基础篇 1.1 基本数据类型和包装类 1.2 Double转Bigdecimal可能会出现哪些问题?怎么解决? 1.3 equals 与 == 的区别? 1.4 Java ...

  2. Java面试题基础篇(一)

    Java面试题基础篇(一) Java面试题基础篇(一) 1.jre和jdk有什么区别? 2.==与equals的区别? 3.接口和抽象类的共同点和不同点? 4.lamda表达式的优缺点? 5.Stri ...

  3. 年终盘点 | 2019年Java面试题汇总篇(附答案)

    作者 | 老王 来源 | Java中文社群「微信公众号」 在这岁月更替辞旧迎新的时刻,老王盘点了一下自己 2019 年发布的所有文章,意外的发现关于「Java面试」的主题文章,竟然发布了 52 篇,几 ...

  4. 【吐血整理】年度盘点 | 2019年Java面试题汇总篇——附答案

    在这岁月更替辞旧迎新的时刻,老王盘点了一下自己 2019 年发布的所有文章,意外的发现关于「Java面试」的主题文章,竟然发布了 52 篇,几乎是全年每周一篇面试文章的节奏,当然其中有不少的面试题来源 ...

  5. Java面试题十篇基本问题,学完这些我就不信拿不到offer

    前言 网上找了很多的Java面试题及部分资料,选取了其中10篇来作为本次的分享.以下为整理出来的文章,给大家分享. java面试题及答案 第一篇 一面 手写ArrayList 手写进制转换算法,求出一 ...

  6. Java面试题-javaweb篇七

    61,JDBC访问数据库的基本步骤是什么? 1,加载驱动 2,通过DriverManager对象获取连接对象Connection 3,通过连接对象获取会话 4,通过会话进行数据的增删改查,封装对象 5 ...

  7. Java面试题-框架篇九

    81,使用Spring框架的好处是什么? 轻量:Spring 是轻量的,基本的版本大约2MB. 控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们. ...

  8. Java面试题——基础篇一

    目录 什么是Java? JVM.JRE和JDK的关系 Java语言有哪些特点? &和&&的区别 final 在 java 中有什么作用? String 属于基础的数据类型吗? ...

  9. JAVA面试题--分布式(最新最全)

    分布式 在线刷题小程序:傲浮刷题小程序 1.分布式id如何生成? 2.雪花算法了解过吗? 3.什么是CAP定理? 4.分布式事务了解过吗? 5.什么是二阶段提交(2PC)?什么是三阶段提交(3PC)? ...

  10. 阿里内部资料,10W字总结JAVA面试题-Git篇

    目录 ​ 1.Git和SVN有什么区别? 2.什么是Git? 3.在 Git 中提交的命令是什么? 4.什么是 Git 中的"裸存储库"? 5.Git 是用什么语言编写的? 6.在 ...

最新文章

  1. CentOS7 升级 Git 版本
  2. classes是什么意思怎么读_KY啥意思?托马仕空品教你怎么读空气
  3. Apache Flink 零基础入门(四)Flink开发批处理应用程序
  4. centos7上systemd详解
  5. 一个简易的反射类库NMSReflector
  6. html 替换反斜杠,在URL直接替换反斜杠反斜杠
  7. mysql 释放行锁_《深入精通Mysql(三)》深入底层Mysql各种锁机制(面试必问)...
  8. WebSocket 实现聊天室业务
  9. 保险渠道的两极之路——保险新渠道(一)
  10. Python数据分析之pandas统计分析
  11. 解决“javac不是内部或外部命令,也不是可运行的程序”问题
  12. 中央处理器——硬连线控制器
  13. cadence-ALLEGRO异形焊盘封装制作及解决个别报错问题
  14. E-Mobile 后台管理系统漏洞
  15. kaggle平台介绍
  16. ioncube_loader_win_5.2.dll to be installed
  17. 电力电子技术笔记-三相桥式
  18. python爬取酒店信息_Python 爬虫练手项目—酒店信息爬取
  19. OSPF区域认证配置实验
  20. 有问必答 | GRS RCS认证,您关心的那些事

热门文章

  1. java虚拟机有什么作用_java虚拟机有什么用
  2. u盘如何安装2003服务器系统安装,u盘怎么安装win server2003系统是iso
  3. mysql 在线语法检查工具_「mysql 管理工具」五大开源MySQL管理工具! - seo实验室
  4. unity相关的javascript脚本:unity圣典学习笔记————MonoBehaviour
  5. java模板导出excel_POI导出excel模板三种方式
  6. java 快逸报表_数据填报 | 快逸报表工具-Java报表软件
  7. (zhuan) 一些RL的文献(及笔记)
  8. sql语句之case when的用法
  9. 高等代数——大学高等代数课程创新教材(丘维声)——3.2笔记+习题
  10. 大数据简历(项目部分)