怎么理解分布式、高并发、多线程?(含面试题和答案解析).pdfVIP

怎么理解分布式、高并发、多线程?(含面试题和答案解析).pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
志不强者智不达,言不信者行不果。——墨翟 怎么理解分布式、⾼并发、多线程?(含⾯试题和答案解析) 看到分布式、⾼并发、多线程这三个词的时候,很多⼈是不是都认为分布式=⾼并发=多线程? 当⾯试官问到⾼并发系统可以采⽤哪些⼿段来解决,或者被问到分布式系统如何解决⼀致性的问题,是不是⼀脸懵逼? 确实,在⼀开始接触的时候,不少⼈都会分布式、⾼并发、多线程将三者混淆,误以为所谓的分布式⾼并发的系统就是能同时供海量⽤户访 问,⽽采⽤多线程⼿段不就是可以提供系统的并发能⼒吗?实际上,他们三个总是相伴⽽⽣,但侧重点⼜有不同。 接下来我就看看分布式、⾼并发、多线程这三者之间到底有什么区别? 什么是分布式? 分布式更多的⼀个概念,是为了解决单个物理服务器容量和性能瓶颈问题⽽采⽤的优化⼿段。该领域需要解决的问题极多,在不同的技术层 ⾯上,⼜包括:分布式⽂件系统、分布式缓存、分布式数据库、分布式计算等,⼀些名词如Hadoop、zookeeper、MQ等都跟分布式有 关。从理念上讲,分布式的实现有两种形式: ⽔平扩展:当⼀台机器扛不住流量时,就通过添加机器的⽅式,将流量平分到所有服务器上,所有机器都可以提供相当的服务; 垂直拆分:前端有多种查询需求时,⼀台机器扛不住,可以将不同的需求分发到不同的机器上,⽐如A机器处理余票查询的请求,B机器处 理⽀付的请求。 什么是⾼并发? 相对于分布式来讲,⾼并发在解决的问题上会集中⼀些,其反应的是同时有多少量:⽐如在线直播服务,同时有上万⼈观看。 ⾼并发可以通过分布式技术去解决,将并发流量分到不同的物理服务器上。但除此之外,还可以有很多其他优化⼿段:⽐如使⽤缓存系统, 将所有的,静态内容放到CDN等;还可以使⽤多线程技术将⼀台服务器的服务能⼒最⼤化。 什么是多线程? 穷则独善其身,达则兼善天下。——《孟子》 谋事在人,成事在天!——《增广贤文》 多线程是指从软件或者硬件上实现多个线程并发执⾏的技术,它更多的是解决CPU调度多个进程的问题,从⽽让这些进程看上去是同时执⾏ (实际是交替运⾏的)。 这⼏个概念中,多线程解决的问题是最明确的,⼿段也是⽐较单⼀的,基本上遇到的最⼤问题就是线程安全。在JAVA语⾔中,需要对JVM 内存模型、指令重排等深⼊了解,才能写出⼀份⾼质量的多线程代码。 总结⼀下: 分布式是从物理资源的⾓度去将不同的机器组成⼀个整体对外服务,技术范围⾮常⼴且难度⾮常⼤,有了这个基础,⾼并发、⾼吞吐等系统 很容易构建; ⾼并发是从业务⾓度去描述系统的能⼒,实现⾼并发的⼿段可以采⽤分布式,也可以采⽤诸如缓存、CDN等,当然也包括多线程; 多线程则聚焦于如何使⽤编程语⾔将CPU调度能⼒最⼤化。 下⾯给⼤家分享⼀些⾯试官常问的分布式、⾼并发、多线程的⾯试题 1、分布式系统怎么做服务治理 针对互联⽹业务的特点,eg 突发的流量⾼峰、⽹络延时、机房故障等,重点针对⼤规模跨机房的海量服务进⾏运⾏态治理,保障线上服务 的⾼SLA,满⾜⽤户的体验,常⽤的策略包括限流降级、服务嵌⼊迁出、服务动态路由和灰度发布等 2、对分布式事务的理解 本质上来说,分布式事务就是为了保证不同数据库的数据⼀致性。 事务的ACID特性 原⼦性 ⼀致性 隔离性 持久性 消息事务+最终⼀致性 CC提供了⼀个编程框架,将整个业务逻辑分为三块 :Try、Confirm和Cancel三个操作。以在线下单为例,Try阶段会去扣库存,Confirm 阶段则是去更新订单状态,如果更新订单失败,则进⼊Cancel阶段,会去恢复库存。总之,TCC就是通过代码⼈为实现了两阶段提交,不 同的业务场景所写的代码都不⼀样,复杂度也不⼀样,因此,这种模式并不能很好地被复⽤。 3、如何实现负载均衡,有哪些算法可以实现? 经常会⽤到以下四种算法:随机(random)、轮训 (round-robin)、⼀致哈希 (consistent-hash)和主备 (master-slave)。 4、分布式集群下如何做到唯⼀序列号 Redis⽣成ID 这主要依赖于Redis是单线程的,所以也可以⽤⽣成全局唯⼀的ID。可以⽤Redis的原⼦操作 INCR和INCRBY来实现。 5. 什么是进程 进程是指运⾏中的应⽤程序,每个进程都有 ⾃⼰独⽴的地址空间 (内存空间)。 ⽐如⽤户点击桌⾯的IE浏览器,就启动了⼀个进程,操作系统就会为该进程分配独⽴的地址空间。当⽤户再次点击左边的IE浏览器,⼜启动 了⼀个进程,操作系统将为新的进程分配新的独⽴的地址空间。⽬前操作系统都⽀持多进程。 6. 什么是线程 进程是表⽰⾃愿分配的基本单位。⽽线程则是进程中执⾏运算的最⼩单位

文档评论(0)

. + 关注
官方认证
文档贡献者

专注于职业教育考试,学历提升。

版权声明书
用户编号:8032132030000054
认证主体社旗县清显文具店
IP属地湖南
统一社会信用代码/组织机构代码
92411327MA45REK87Q

1亿VIP精品文档

相关文档