Java面试经常会问到Java分布式面试题的内容,下面详解常见的Java分布式面试题及答案@mikechen
1.什么是分布式系统?
分布式系统是由多台计算机组成的系统,这些计算机通过网络连接并协同工作。
在分布式系统中,各个计算机都可以独立地处理任务,并与其他计算机共享数据和资源。
2.分布式系统有哪些?
当你的系统一旦分布式了之后,其实会面临很多技术挑战的,包括:
分布式服务框架、分布式文件系统、分布式数据库、分布式锁、分布式事务、分布式session等等,当然这些也是分布式的关键技术。
3.谈谈分布式缓存技术?
分布式缓存是一种将缓存数据存储在多台计算机上的技术,通过分布式缓存,可以提升性能,同时也可以提高系统的可扩展性和可靠性。
如果你原来就是个单块系统,那么你其实是可以在单个JVM里进行本地缓存就可以了。
但是现在你有很多个子系统,他们如果要共享一个缓存,你应该怎么办?是不是需要引入Redis等分布式缓存系统?
如下图所示:
4.什么是分布式事务?
分布式事务是一种跨多个计算机的事务处理技术,在分布式事务中,多个计算机可以同时参与处理一个事务。
每个计算机执行事务的一部分,最终所有计算机将提交或回滚整个事务。
上图一次大的事务操作,由不同的小事务操作组成,这些小事务的操作分布在不同的服务器上,这些操作要么全部成功,要么全部失败。
5.什么是微服务?为什么需要?
系统业务量很小的时候,大部分Web工程的Java应用程序,打包为War包部署在一台服务器上,叫做单体架构,也叫巨石型应用。
随着业务访问量越来越大,单体应用就会出现巨大的瓶颈。
后期就会出现,按照业务为单位进行拆分,出现的微服务架构,如下图所示:
微服务是一种将系统拆分成多个小型服务的架构风格,每个服务都可以独立地部署和扩展,通过定义良好的API接口来实现服务之间的通信。
比如大家现在熟知的:Spring Cloud和Spring Cloud Alibaba以及新一代Istio为代表的ServiceMesh等等,都是典型的微服务。
6.什么是负载均衡?
负载均衡是一种将任务或工作负载分配给多个计算机的技术,以实现更高的系统性能和可靠性。
一台机器不能满足,则增加两台或者多台机器,共同承担访问压力,这就是典型的集群和负载均衡。
如下图所示:
通过负载均衡,系统可以将任务分配给不同的计算机,从而避免任何一个计算机过载或故障导致整个系统崩溃。
7.分布式锁有哪些方案?
1. 数据库乐观锁;
2. 基于ZooKeeper的分布式锁;
3.基于Redis分布式锁;
一般,推荐使用Redis分布式锁的方案。
9.什么是分布式系统ID?
在分布式系统中,为了保证每个节点都能够生成唯一的标识符并且不会与其他节点生成的标识符重复,通常需要使用分布式ID(Distributed Global ID)。
10.分布式系统ID方案有哪些?
分布式ID方案,主要包含如下5类:
目前用的较多的是雪花算法实现的分布式ID。
11.什么是分布式消息系统?
分布式消息系统一般包含生产者、Broker、以及消费者。
如下图所示:
1)Producer 消息生产者:负责产生和发送消息到 Broker;
2)Broker 消息处理中心:负责消息存储、确认、重试等,一般其中会包含多个 queue;
3)Consumer 消息消费者:负责从 Broker 中获取消息,并进行相应处理;
分布式消息系统,常用的有:RabbitMQ、RocketMQ、Kafka类的分布式消息中间件。
以上就是Java分布式面试题及答案,更多Java面试题请查看:史上最全Java面试题及答案总结
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》