分布式面试概括

目录:

1.什么是分布式系统:

2.水平分表:

3.垂直分表:

4.水平分库:

5.垂直分库:

6.分库分表时常见问题:

7.主从复制原理:

8.读写分离:

9.本地事务:

10.分布式事务:

11.zookeeper:

12.zookeeper特点:

13.zookeeper应用场景:

14.zookeeper选举机制:

15.zookeeper和eureka区别:

16.dubbo和springcloud的区别:

17.谈谈对微服务的理解:

18.微服务的优点和缺点:

1.什么是分布式系统:

将一个应用拆分成多个可独立运行的服务。也就是多个独立的服务的集合。

2.水平分表:

可以按时间,按id,按区域等条件,将一张表拆分成多张相同的表。

3.垂直分表:

将一张表拆分成多张不同的表,主表保留关键信息。

4.水平分库:

将同一张表的内容,按照一定条件拆分到不同的库中。

5.垂直分库:

不同的业务的表,分到不同的库中。

6.分库分表时常见问题:

1.事务一致性:分布式事务,常见的操作就是分阶段提交。之后详细说。

2.跨库join查询:通常应该避免跨库join,但可以通过字段冗余,将每个库都存上需要的数据,还可以通过数据同步的操作,每个库都建立一个类似数据字典的表,改动时同步改动。

3.主键一致性:常用的就是雪花算法。

4.公共表:有一些公共表可以在每一个库中都保留一份,操作时同时操作。

7.主从复制原理:

主库主要负责写操作,从库主要负责读操作。主表的写操作会记录在binlog日志中,从库读取该日志文件,写入到relaylog日志中,再进行写操作。达到主从复制的目的。

8.读写分离:

主要为了提升数据库读取数据的性能。通常需要几个库,主库负责写操作,从库负责读操作。需要注意的点就是主从复制的数据一致性问题。

9.本地事务:

事务就是用户定义的一组操作序列,这些操作要么全部执行,要么全部不执行。

事务的4个隔离级别:

读未提交:读取到其他事务未提交的数据,造成脏读。

读提交:事务必须等另一个事务提交数据后,才能开始读数据。事务a先读取到了数据,而事务b修改了数据,并提交,事务a再读取数据时,造成前后两次读取数据不一致,造成不可重复读。

重复读:事务读取时,不允许其他事务进行修改操作。但无法保证新增操作,当事务a读取数据后,事务b新增了数据,事务a再次读取数据,同样造成两次读取数据不一致,造成幻读。

序列化:a事务必须全部执行完,b事务才能开始执行。

事务的4大特性:

原子性:一组操作序列,看作一个整体。

一致性:要么全部执行,要么全部不执行。

隔离性:事务和事务之间是隔离的,互不影响。

持久性:事务一旦提交对于数据的修改,是永久性的。

10.分布式事务:

在分布式系统中,可能存在跨服务和跨数据源的操作,此时无法利用数据库的事务来保证事务的一致性,需要用到分布式事务。

解决方案包括:XA、TCC、可靠性消息一致性、AT

1.XA:

    分阶段提交,最重要的是需要一个中间件,起到最终提交的作用。

    多个事务先进行本地操作,但都停留在最后的提交阶段。当多个事务都执行完毕后,没有出错,则中间件通知所有事务进行提交。但有事务执行失败的话,中间件提醒所有的事务回滚。

    优点:保证了数据的强一致性,技术成熟。

    缺点:容易出现单点故障,和数据锁定。

2.TCC:

    try --- confirm ---- cancel

    同样也是分阶段提交。但和XA不同,所有的本地事务都会执行完毕,并多了一个补偿操作。例如余额100元,扣款30元,先进行事务的提交,但将这30元先冻结。其他事务没有问题,则将冻结的30元清空,其他事务出现异常,将冻结的30元再重新加到余额中。

    优点:并不会出现单点故障和数据锁定。

    缺点:多了补偿操作 ,所以需要自己手动实现补偿的代码,开发成本高。4

3.可靠性消息最终一致:

    利用了mq消息队列。

    服务a先执行本地事务,再通过mq消息队列通知服务b执行本地事务。当服务b失败后,mq消息队列会一直提醒服务b执行本地事务,知道最终成功为止。

    缺点:必须保证服务b最终是可以执行成功的。

4.AT:

    使用seata框架,兼具了前面的优势,同样也是分段提交,阶段一全部执行本地事务,阶段二根据阶段一的操作,进行提交或回滚操作。但不需要中间件,也不需要写额外的补偿操作。全部由seata框架来实现。

    再需要执行的操作上加上@GlobalTransactional注解即可。

11.zookeeper:

基于观察者模式设计的分布式系统,提供协调服务的服务框架。

12.zookeeper特点:

1.需要至少半数以上的集群存活,也就是最少需要3台服务。

2.每一个服务都保存一份数据,无论客户端连接哪个服务,都能获取数据的一致性。

3.一次更新要么全部成功,要么全部失败。

4.实时性:客户端能读取到最新的数据。

13.zookeeper应用场景:

1.对服务统一命名。

2.统一配置,配置修改后,能同步到其他节点。

3.统一集群管理,实时掌握每一个节点的状态。

4.软负载均衡:每一个服务器分摊访问。

5.分布式锁。

14.zookeeper选举机制:

zookeeper工作时,会选举一个节点为leader节点,其他的节点为follower节点。

每一个节点最开始都会先选举自己成为leader节点,但当自己没有获得票数过半时,会推选下一个节点为leader节点。当一个节点超过半数时,leader节点选举成功。所以一般选择奇数台服务器,由中间的服务器成为leader节点。

15.zookeeper和eureka区别:

相同点:都可以作为服务注册中心。

不同点:

前提:CAP定理,C一致性:数据的一致更新,A可用性:服务随时可用,P分区容错:服务一部分挂掉,不会影响其他服务的正常运行。

1.zookeeper保证了CP,eureka保证了AP。

2.zookeeper有leader节点,并会产生选举机制,选举期间,不对外提供服务。

    eureka没有leader节点,一个服务挂掉,不会停止服务。

16.dubbo和springcloud的区别:

1.注册中心:

    dubbo没有自己的注册中心,需要引入第三方注册中心:zookeeper

    springcloud有自己的注册中心,eureka。

2.通讯协议:

    dubbo采用rpc通讯协议。

    springcloud采用http方式的通讯协议,通常使用feign来跨服务调用。

3.springcloud有一套完整的微服务架构方案。而dubbo则需要引入其他第三方,或自己开发。例如网关等服务。

17.谈谈对微服务的理解:

之前的项目都单体项目,使用同一个数据库,但这样当单体应用过大时,可能会出现改动困难,性能瓶颈等问题。所以慢慢使用微服务,将一个单体应用根据需求拆分成多个服务,每个服务对应自的数据库,达到一个解耦和提高性能的作用。

18.微服务的优点和缺点:

优点:

1.将服务拆分,到达一种解耦的目的,每个部门或者每个人管理自己的服务即可,不会出现以前单体项目,代码集中在一起,出现矛盾。

2.每个服务对应自己的数据库,提高服务的性能。

缺点:

1.因为单体拆分成微服务了,会提高人力成本。

2.微服务通常每一个服务对应一个数据库,导致跨库等关联操作,出现问题。

3.会出现分布式事务等等复杂问题。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,265评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,078评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,852评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,408评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,445评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,772评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,921评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,688评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,130评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,467评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,617评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,276评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,882评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,740评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,967评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,315评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,486评论 2 348