突破Java面试(31)-分布式系统连环炮

0 导读

有一些同学,之前呢主要是做传统行业,外包项目,互联网公司,一直是那种小的公司,技术一直都搞的比较简单。共同的一个问题,就是都没怎么搞过分布式系统,现在互联网公司,一般都是做分布式的系统,大家都不是做底层的分布式系统,分布式存储系统,hadoop hdfs,分布式计算系统,hadoop mapreduce,spark,分布式流式计算系统,storm。

分布式业务系统,就是把原来用java开发的一个大块系统,给拆分成多个子系统,多个子系统之间互相调用,形成一个大系统的整体。
假设原来你做了一个OA系统,里面包含了权限模块、员工模块、请假模块、财务模块,一个工程,里面包含了一堆模块,模块与模块之间会互相去调用,1台机器部署。

现在如果你把他这个系统给拆开,权限系统,员工系统,请假系统,财务系统,4个系统,4个工程,分别在4台机器上部署

一个请求过来,完成这个请求,这个员工系统,调用权限系统,调用请假系统,调用财务系统,4个系统分别完成了一部分的事情,最后4个系统都干完了以后,才认为是这个请求已经完成了。

我就搞不懂,到底什么是分布式系统?

  • 什么是最简单的分布式系统

1 缘何系统拆分

(1)为什么要进行系统拆分?如何进行系统拆分?拆分后不用dubbo可以吗?dubbo和thrift有什么区别呢?

2 分布式服务框架

(1)说一下的dubbo的工作原理?注册中心挂了可以继续通信吗?

(2)dubbo支持哪些序列化协议?说一下hessian的数据结构?PB知道吗?为什么PB的效率是最高的?

(3)dubbo负载均衡策略和高可用策略都有哪些?动态***策略呢?

(4)dubbo的spi思想是什么?

(5)如何基于dubbo进行服务治理、服务降级、失败重试以及超时重试?

(6)分布式服务接口的幂等性如何设计(比如不能重复扣款)?

(7)分布式服务接口请求的顺序性如何保证?

(8)如何自己设计一个类似dubbo的rpc框架?

但是这两年开始兴起和流行了spring cloud,但是我们这里就不讲了,spring cloud刚开始流行,还没有普及,目前普及的是dubbo,出去面试,大部分面试官都是问你dubbo的一些问题

3 分布式锁

(1)使用redis如何设计分布式锁?使用zk来设计分布式锁可以吗?这两种分布式锁的实现方式哪种效率比较高?

4 分布式事务

(1)分布式事务了解吗?你们如何解决分布式事务问题的?TCC如果出现网络连不通怎么办?XA的一致性如何保证?

5 分布式会话

(1)集群部署时的分布式session如何实现?

参考

《Java工程师面试突击第1季-中华石杉老师》

内容来自公众号:JavaEdge

#Java#
全部评论

相关推荐

点赞 16 评论
分享
牛客网
牛客企业服务