分布式 - 谈谈你对分布式的理解,为什么引入分布式?

78 篇文章 93 订阅
订阅专栏

不啰嗦,我们直接开始!

划重点:

  1. 真正了解分布式系统的概念,日后工作中具有分布式系统设计思想。
  2. 能否在设计中对系统稳定性方面考虑周全。
  3. 能构建高 QPS 健壮的系统架构。

1、面试官:那谈谈你对分布式系统的理解

问题分析:

各种分布式框架层出不穷,Spring Cloud,阿里的 Dubbo,无论使用哪一个,原理都相同,考察下基本概念掌握的如何。

答:

为了解决传统单体服务架构带来的各种问题,代码数量庞大,迭代测试维护困难,可能因为一处改动测试不到位造成整个服务瘫痪等问题,分布式系统就是将一个大的服务拆分成几十个甚至上百个微小的服务。如果把单体架构服务器比做篮子,那代码就是鸡蛋,不要让所有鸡蛋别装在一个篮子里,也方便大家分工开发,代码不在一个项目里,也不会冲突,最主要的是项目自己维护,多好。

比如阿里的 Dubbo,还有 Spring 全家桶里的 Spring Cloud,都是解决分布式微服务架构的优秀框架。

2、面试官:那分布式系统环境下各自有什么优缺点?

问题分析:

优点是显而易见的,面试官主要是想看看意识到有哪些缺点和问题,不过好的方面还是要简单带过。

答:

优点很多呀,使用分布式不就是为了解决传统架构各种问题嘛,多人在一个下开发维护难,也不好控制容错能力。拆分成微服务问题就好办多了。主要从 4 个方面简单说下。

  1. 系统可用性提升
    一个系统全年可用时间在 99.999%,5 个 9 的服务可用率在设计合理的分布式系统中并不是一个触不可及的数字。
    传统的集中式计算或集中式存储在遇见单点故障时很容易造成整个服务不可用,分布式下的服务体系,单台机器有故障,不致于造成整个服务不可用。
  2. 系统并发能力提升
    请求通过 Nginx 负载均衡被分发到不同的服务器上,运行同样代码的服务器可以有 1 台或 N 台,通常情况下会根据实际用户访问量随时增加机器,无论是数据库或者服务,都可以做到随时水平扩展
    比如双 11 活动,平时订单少 50 台机器就够了,到了 11 订单量剧增,服务器增加到 100 台,每台机器之间相互独立,互不影响。
  3. 系统容错能力提升

    图片描述


    (手里有笔,能给面试官随便画画)
    同一组服务分别部署在北京上海杭州,杭州的机房突发断电或者火灾,杭州机房的流量会被自动分发到北京和上海的机房,不影响用户使用。
  4. 低延迟 
    参考上一个图,北京的用户请求自动分发到北京,上海的用户请求被分发到上海,服务器会根据用户的 IP 选择距离自己最近的机房,降低网络延迟。 

面试官:嗯,基本覆盖全面了,继续说说缺点。

凡事具有两面性,分布式服务带来很多好处的同时肯定还会带来麻烦,主要从 3 方面考虑。

  1. 分布式服务依赖网络
    服务器间通讯依赖网络,不可靠网络包括网络延时,丢包、中断、异步,一个完整的服务请求依赖一连串服务调用,任意一个服务节点网络出现问题,都可能造成本次请求失败。
  2. 维护成本高
    传统单体式服务只需要维护一个站点就可以。
    分布式服务系统被拆分成若干个小服务,服务从 1 变为几十个上百个服务后,增加运维成本。
  3. 一致性,可用性,分区容错性无法同时满足
    这个是最主要的,这三种特性就是平时说的 CAP 定理,在分布式系统中,这三种特性最多只能满足两种,无法同时满足,需要根据实际情况去调整牺牲掉其中哪个。

面试官:嗯,最主要的第三点意识到了。(面试官心理:如果能意识到 CAP 问题那就好办多了,提到 CAP,那可以继续聊聊)

成功给自己挖坑,关于 CAP,下一节单独讲解

深入分析:

关于分布式系统,通俗点讲就把整个业务系统拆分成很多的服务,每个服务责任到人,服务之间代码都没有冲突,服务可以自治,每个服务到技术也可以自己选型,只要遵循统一的服务调用协议就可以了。每次发布如果就改动一个服务那就上线一个服务,不用所有人一起联调,这样每次发布牵扯到的改动影响也是可控的。不像传统单体架构服务,动辄几百万行代码融在一起。

这个概念是 Jim Waldo 在 1994 年发表的题为 “ A Note on Distributed Systems ” 的论文中提出的,感兴趣的读者可以看看英文原文。

百度百科是这样解释的:
分布式系统(distributed system)是建立在网络之上的 软件系统。正是因为 软件的特性,所以分布式系统具有高度的 内聚性和透明性。因此,网络和分布式系统之间的区别更多的在于高层 软件(特别是 操作系统),而不是硬件。

分布式系统并不是某一门具体的技术,也不是具体的框架。用大白话理解就是将计算能力和数据存储能力分散在不同服务器上,通过网络连接组成的一个整体的服务,不同服务器可能是物理机,也可能是虚拟机,分布式的概念可以理解成一种解决方案。

分布式系统总结来说是将数据存储能力和计算能力分布到不同的服务器上,作为一个整体对外服务。目的在于解决单台机器的故障问题,单机计算和 IO 性能问题,以及单机存储空间不足的问题。虽然单机故障的概率比较小,但是随着集群规模大了之后,集群宕机和磁盘损坏基本上是常态,分布式系统主要解决的是各种故障带来的问题。

比如,美团外卖,用户角度去看这就是一个能叫外卖的 APP,选商品,提单付款,等待配送后订单完成,如果从系统开发工程师角度去看,这个小小的 APP 后面却是一个非常庞大的系统,你点一次外卖,后台会经过几十次上百次服务调用才能完成整个流程。从大的角度去看,包括商品管理系统,订单系统,支付系统,结算系统,商家系统,配送系统,风控系统等等。每一个子系统又能分成若干个微服务,各个系统逻辑上构成一个整体统一对外服务。

3、分布式系统和微服务什么关系

关于分布式系统和微服务,两者都只是一种概念。如果你采用微服务,就意味着系统一定是分布式的,分布式系统具有的优缺点在微服务理都会体现,个人理解微服务是分布式系统的一种具体落地方案。

 总结

 随着互联网的发达,传统单体项目已经完全不能适应现在互联网用户量需求,2010 刚刚毕业的时候只会 SSH/SSM 就能找到工作,不了解分布式,也没听说过,很多软件公司也是一套框架打天下。如今这个时代已经过去了,经常有读者问我初学者学什么语言好找工作。如果想收到大公司面试机会,拿到 offer,编程语言只是基础,对于分布式系统基础也很重要,光靠学一门语言就想找到一份工作应该很难,所有大一点的互联网公司系统都是分布式的,公司希望招到的人也都很了解分布式相关的知识。

分布式系统的优点:

  1. 提升服务可用性 / 稳定性
  2. 提升系统并发能力
  3. 提升系统容错能力
  4. 低延迟

分布式系统缺点:

  1. 依赖网络,会因为网络问题导致系统数据丢失或不一致性;
  2. 系统复杂化,系统监控维护,版本迭代发布变得相对复杂,成本高;
  3. 一致性,可用性,分区容错性无法同时满足。

不啰嗦,文章结束,期待三连!

为什么要使用分布式系统?
pengweismile的专栏
05-13 5040
可解决的问题: 1. 解决稳定性可用性问题。 2. 解决单机处理能力问题。 分布式系统的发展历程: 1. 单体结构-- 所有代码在一个系统中, 一个数据库,一个文件系统,一个应用系统。 2. 垂直结构 -- 将系统按照业务分成多个系统,每个垂直子系统为一个单体结构,会有很多重复代码。 3. 分布式结构 -- 将可复用的业务水平拆分开当做公用服务。 4. 微服务架构 -- 将公共的服务集合成一个系统。 ...
谈谈我对分布式服务器的理解
最新发布
笨死的猪Blog
03-20 678
通过采用分布式服务器架构,可以将不同的功能模块(如用户管理、商品管理、订单处理等)部署到不同的服务器上,并通过网络连接进行协同工作。总之,分布式服务器通过其高可用性、可扩展性、负载均衡和性能提升等优点,在多个领域得到了广泛的应用。在实际应用中,需要根据具体的业务需求和技术要求,选择合适的分布式服务器架构和解决方案。在分布式服务器架构中,数据通常被分散存储在不同的节点上,通过数据复制、分片等技术保证数据的可靠性和一致性。当某个服务器出现故障时,其他服务器可以接管其任务,确保系统的连续性和数据的完整性。
大白话告你什么是分布式,史上最全详解!​
热门推荐
这个时代,作为程序员可能要学习小程序
06-29 2万+
点击上方蓝色“终端研发部”,选择“设为星标”学最好的别人,做最好的我们 大家好,我是为你们操碎了心的小于哥,最后在后台有人经常问我分布式相关的问题。那么到底什么是分布式?要理解分布式系统...
分布式介绍
爱码者的博客
10-09 7415
文章目录一、分布式的概念1、什么是分布式2、分布式与==集群==的关系3、软件架构演变4、RPC是什么二、分步式思想与基本概念1、高并发1.1 通过设计保证系统可以并行处理很多请求。应对大量==流量==与==请求==1.2 高并发衡量指标2、高可用2.1 服务集群部署2.2 数据库主从+双机热备3、注册中心4、负载均衡5、服务雪崩6、熔断7、限流8、API网关9、服务跟踪10、弹性云 一、分布式的...
分布式系统学习】之分布式入门理解
大龄烤红薯的博客
01-04 962
分布式分布式系统、分布式架构
面试常问:说说你对分布式理解
m0_71237164的博客
03-22 1447
分布式并不是某个技术的概称,而是一个互联网服务系统架构思想。我们一般称之为分布式架构。
为什么使用分布式系统
06-08 429
为什么使用分布式系统,总结有以下几个原因: 1. 我觉得最主要的是考虑到服务器性能的问题。单台服务器的性能毕竟有限,综合利用多个节点的处理能力,才能提高整体的服务能力 2. 分布式模块可以采用不同的解决方案。只要是满足指定的是交互协议,各模块可以根据各自的业务特点,选择不同的处理方式,如微软的解决方案,也可使用J2EE. 3. 模块的内聚性更高,更多的关注自身业务。 分布式...
让阿里P8都为之着迷的分布式核心原理解析到底讲了啥?看完我惊了
老男孩的架构路
08-13 572
分布式起源单兵模式:单机模式游击队模式:数据并行或数据分布式集团军模式:任务并行或任务分布式分布式是什么?总结。
我们为什么需要分布式系统?
技术修行者
04-11 1008
这篇文章主要讨论我们为什么需要分布式系统,分布式系统帮助我们解决了复杂系统在成本、效率和高可用方面的问题,但同时它也在分布式计算和分布式存储方面带来了新的问题和挑战。
分布式概念
Knight
01-25 3252
分布式概念
谈谈我对redis分布式锁的理解以及设计
11-17
分布式环境中,由于多台服务器之间的数据一致性难以保证,传统的本地锁无法满足需求,因此引入分布式锁。Redis,作为一个高性能的键值存储系统,因其高效、易用且支持丰富的数据结构,常被用来实现分布式锁。 ...
为什么Hadoop是分布式计算的未来
03-02
今天听同事分享了一篇很有意思的讲座,叫做"WhyMap-ReduceIsNotTheSolutionToYourBig-DataProblem"(为什么Map-Reduce不是你的“大数据”问题的解决方案)。同事很牛,也分享了很多非常有价值的观点,不过他预言Map-...
一线大厂面试真题-谈谈你对MQ的理解精讲
01-14
我们为什么要用MQ,它能解决什么问题呢?从以下三个方面来分析: 流量消峰 主要是针对大流量入口过大,而业务需求又要短时间响应。但是服务器性能无法满足,导致大量请求积压,从而使得客户端大量等待超时的场景...
谈谈业务中使用分布式的场景1
08-08
分布式系统在现代业务环境中扮演着至关重要的角色,尤其是在高并发和大数据量的场景下。面试时,面试官可能会询问在实际业务中如何运用分布式技术,以此来评估...深入讨论这些细节将展示你对分布式系统设计的深入理解
什么是分布式?——分布式的基本概念
m0_62946761的博客
07-11 4427
分布式的基本概念
一篇文章带你了解分布式
Blooming death的博客
03-30 1401
分布式是指计算机系统中组件分布在不同的计算机或者节点上,通过网络进行通讯和协作,共同完成某项任务或提供某种服务的架构模式。可扩展性高可用性容错性能够提供系统的性能和可靠性,适用于大规模的数据处理和高并发。在分布式系统中,不同的计算机或节点可以承担不同的角色,列如客户端、服务器、中间件、存储节点。这些节点之间通过网络进行通信和协作,共同完成某项任务或提供某种服务。为了实现高性能和高可靠性,分布式系统通常使用负载均衡、故障转移、数据复制等技术来优化系统性能和可靠性。
(转).Net 分布式系统架构
weixin_38166557的博客
10-05 708
一、设计目的   基于window平台搭建的大型分布式系统不多,之前了解过myspace、stackoverflow等大型网站。搭建一个大型平台需要综合考虑很多方面,不单纯是软件架构,还包括网络和硬件设备等。由于现代大部分应用建设都面临用户多、高并发、高可用的需求,传统软件架构已不能满足需求,需要支持分布式软件架构,能支持横向扩展,具有高可用、伸缩性、稳定性等特点。搭建如下系统架构。 ...
关于分布式的简单理解
Meiko记录
05-10 1398
说起分布式系统,我们就不得不说下分布式系统的祖先——集中式系统。集中式系统跟分布式系统是完全相反的两个概念。集中式系统就是把所有的程序、功能都集中到一台主机上,从而往外提供服务的方式。集中式系统最容易理解了。比如,我们主机的PC电脑,或者手机,我们把各种软件都安装在一台机子上,当我需要什么功能,我就从这台机子上去获取。再比如,我们在学生时代做的课程设计或者开发时的小应用,我们把Web服务器、数据库...
分布式理解
weixin_43303455的博客
07-02 161
分布式集群和分布式,微服务的概念SOA微服务 集群和分布式,微服务的概念 集群:单体1个节点-》单体多节点(A,B,C…等节点),用nginx做请求转发,请求打到nginx,由nginx把请求的分发到这两个节点中的请求。 这两个节点都能够提供完整的服务,每个节点部署的实例是一致的。 集群是物理形态 每个节点都具备完整的服务,服务中可能存在A,B,C模块,但可能A模块访问量是最大的,而B,C.访问量较小。此时将3个模块部署到一个实例(节点)中,用nginx负载,显然这种形式效率不高。 分布式:将A,B,C都做
vue3 Failed to load resource: the server responded with a status of 404 (Not Found)
09-14
根据提供的引用内容,当出现"Failed to load resource: the server responded with a status of 404 (Not Found)"错误时,可能有几种解决方案。 方案一:检查配置文件 打开项目的配置文件,比如config/index.js,确保assetsPublicPath的路径设置正确。可以尝试修改为"./",然后保存并重新编译项目。 方案二:检查静态资源文件类型 如果出现"Refused to apply style..."或者"Failed to load resource..."的错误信息,可能是因为浏览器在检查MIME类型时发现不匹配。检查静态资源文件的MIME类型是否正确,确保与服务器支持的样式表MIME类型相符。 方案三:检查工程配置 如果在使用Maven创建工程并使用Vue进行HTML内容修改后出现错误,可能是因为Vue.js文件没有正确引入或访问。需要确保在Maven工程中正确打包静态资源,并检查Spring MVC配置文件是否开放了对静态资源的访问。 通过以上方法检查和修改配置文件和静态资源的引用,可以解决"Failed to load resource: the server responded with a status of 404 (Not Found)"错误。希望这些解决方案对您有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • Redis - 0、几款可视化工具 251166
  • 分布式 - 谈谈你对分布式的理解,为什么引入分布式? 240152
  • 分布式 - 公司使用什么RPC框架,聊聊你理解的RPC原理 237330
  • safari - 解决safari下载中文文件名乱码 222560
  • three.js - .gltf模型加载出来为黑色解决办法 216675

分类专栏

  • AI Tools 1篇
  • 性能调优 30篇
  • Java 31篇
  • Spring 14篇
  • Microservice 1篇
  • ORM 1篇
  • Maven 11篇
  • Sql 5篇
  • NoSql 14篇
  • MQ 2篇
  • Network 8篇
  • Nginx、Haproxy 3篇
  • Algorithm 3篇
  • Linux 5篇
  • Web Front End 8篇
  • JavaScript
  • 3D Preview 3篇
  • Interview 78篇
  • System Architecture 9篇
  • Other 2篇
  • IDE 2篇
  • 资源 2篇

最新评论

  • 微信公众号 - Java推送小程序订阅消息给用户

    Zfree_X: 这个方法好像不会返回结果 获取不到msgId

  • MySQL - MySQL查询语句的执行过程

    脆骨男孩儿: 为啥没有预处理器啊

  • Java 基础 - idea汉字输出乱码

    CSDN-Ada助手: Java 技能树或许可以帮到你:https://edu.csdn.net/skill/java?utm_source=AI_act_java

  • 分布式 - 说一说什么是正向代理,反向代理

    M_Hu: 太强了大佬

  • 31 - MySQL调优之SQL语句:如何写出高性能SQL语句?

    白话机器学习: 博主的文章细节很到位,兼顾实用性和可操作性,感谢博主的分享,期待博主持续带来更多好文。

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • Java 基础 - idea汉字输出乱码
  • Nginx - 安装配置naxsi waf防火墙(附完整编译、配置)
  • Nginx - Centos7在线安装Nginx
2024年4篇
2023年52篇
2022年45篇
2021年146篇

目录

目录

评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

PHP网站源码福田网站推广系统民治网页制作爱联英文网站建设坂田百度关键词包年推广南联百度标王石岩百度竞价塘坑建站深圳网站制作设计东莞网络推广龙华模板推广惠州模板网站建设福田网站排名优化爱联百搜词包光明标王观澜设计公司网站大运网站改版南联网络广告推广沙井企业网站改版坪地企业网站设计坪山建设网站惠州seo东莞网站设计沙井设计网站大鹏网站定制盐田百度标王民治网站改版横岗企业网站改版惠州关键词排名包年推广坪地优秀网站设计吉祥SEO按效果付费歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化