• 为什么需要分布式架构?
  1. 增大系统容量。当业务量越来越大时,一台机器容量已经无法满足了,我们就需要多台机器。所以,我们需要垂直或是水平拆分业务系统,让其变成一个分布式的架构。
  2. 加强系统可用。当所有业务都部署在一台机器上的时候,一旦机器出故障就会导致整体不可用。所以,需要通过分布式架构来冗余系统以消除单点故障,从而提高系统的可用性。
  • 分布式架构有什么优势?
  1. 实现更大数据量的存储。
  2. 可以提高系统的高可用性。
  3. 提高系统的可重用性。
  4. 可更好提高系统的性能。
  • 分布式架构有什么劣势?

采用任何技术方案都是“按下葫芦浮起瓢”,都是有得有失,分布式架构也有劣势,具体如下:

  1. 会增加架构设计的难度。
  2. 部署和维护的成本也会加大。

分布式系统架构的难点在于系统设计,以及管理和运维。所以,分布式架构解决了“单

点”和“性能容量”的问题,但却新增了一堆问题。

  • 分布式架构设计有什么难点?
  1. 异构系统的不标准问题?(软件、协议、格式、运维的不标准)
  2. 系统架构中的服务依赖问题?(多米诺骨牌效性,一个服务宕机)
  3. 故障发生的概率更大?(故障恢复时间、影响面)
  4. 多层架构的运维复杂度更大?(基础层-硬件、平台层-中间件、应用层-业务、接入层-网关)
  • 分布式架构设计的目的?
  1. 提高整体架构的吞吐量,服务更多的并发和流量。
  2. 提高系统的稳定性,让系统的可用性更高。
  • 如何基于架构设计提高其性能?
  1. 缓存系统。加入缓存系统,可以有效地提高系统的访问能力。从前端的浏览器,到网络,再到后端的服务,底层的数据库、文件系统、硬盘和CPU,全都有缓存,这是提高快速访问能力最有效的手段。
  2. 负载均衡系统。负载均衡是做水平扩展的关键技术。其可以用多台机器来共同分担一部分流量请求。
  3. 异步调用。异步系统主要通过消息队列来对请求做排队处理,这样可以把前端的请求的峰值给“削平”了,而后端通过自己能够处理的速度来处理请求。
  4. 数据分区和数据镜像。数据分区是把数据按一定的方式分成多个区(比如通过地理位置),不同的数据区来分担不同区的流量。
  • 如何基于架构提高系统的稳定性?
  1. 服务拆分,主要有两个目的:一是为了隔离故障,二是为了重用服务模块。
  2. 服务冗余,可以去除单点故障,并可以支持服务的弹性伸缩,以及故障迁移。
  3. 限流降级,当系统实在扛不住压力时,只能通过限流或者功能降级的方式来停掉一部分服务,或是拒绝一部分用户,以确保整个架构不会挂掉。
  4. 高可用架构,从冗余架构的角度来保障可用性。比如,灾备多活,或是数据可以在其中复制保持一致性的集群。
  5. 高可用运维,指的是DevOps中的CI(持续集成)/CD(持续部署)。一个良好的运维应做了足够的自动化测试,做了相应的灰度发布,以及对线上系统的自动化控制。这样,可以做到“计划内”或是“非计划内”的宕机事件的时长最短。
  • 分布式架构有哪些关键技术?
  1. 服务治理。服务治理的最大意义是需要把服务间的依赖关系、服务调用链,以及关键的服务给梳理出来,并对这些服务进行性能和可用性方面的管理。
  2. 架构管理。基于服务所形成的架构需要有架构版本管理、整体架构的生命周期管理,以及对服务的编排、聚合、事务处理等服务调度功能。
  3. DevOps。分布式系统可以更为快速地更新服务,但是对于服务的测试和部署都会是挑战。所以,还需要DevOps的全流程,其中包括环境构建、持续集成、持续部署等。 自动化运维。有了DevOps后,我们就可以对服务进行自动伸缩、故障迁移、配置管理、状态管理等 一系列的自动化运维技术了。
  4. 资源调度管理。应用层的自动化运维需要基础层的调度支持,也就是云计算IaaS层的计算、存储、 网络等资源调度、隔离和管理。
  5. 整体架构监控。如果没有一个好的监控系统,那么自动化运维和资源调度管理只可能成为一个泡影, 因为监控系统是你的眼睛。没有眼睛,没有数据,就无法进行高效的运维。所以说,监控是非常重要 的部分。这里的监控需要对三层系统(应用层、中间件层、基础层)进行监控。
  6. 流量控制。最后是我们的流量控制,负载均衡、服务路由、熔断、降级、限流等和流量相关的调度都 会在这里,包括灰度发布之类的功能也在这里。

分布式架构优缺点以及设计相关推荐

  1. es 创建索引_从一道面试题来看ES的分布式架构原理

    概述 在搜索这块,lucene 是最流行的搜索库.几年前业内一般都问,你了解 lucene 吗?你知道倒排索引的原理吗?现在早已经 out 了,因为现在很多项目都是直接用基于 lucene 的分布式搜 ...

  2. 分布式架构和单体应用的优缺点

    使用分布式系统主要有两方面原因. 增大系统容量. 我们的业务量越来越大,而要能应对越来越大的业务量,一台机器的性能已经无法满足了,我们需要多台机器才能应对大规模的应用场景.所以,我们需要垂直或是水平拆 ...

  3. 如何实现高容量大并发数据库服务 | 数据库分布式架构设计

    袋鼠学院和优云.阿里云联合举办的沙龙结束之后,总是有小伙伴们来问PPT内容,想要进一步了解Topic内容.(哦,对了对了,竟然还有小伙伴专门冲着袋鼠云去听沙龙,感动cry~~) 千呼万唤,忙成狗的袋鼠 ...

  4. 以电商网站为例,谈大型分布式架构设计与优化

    本文大纲: 1. 使用电商案例的原因 2. 电商网站需求 3. 网站初级架构 4. 系统容量估算 5. 网站架构分析 6. 网站架构优化 本文主题为电商网站架构案例,将介绍如何从电商网站的需求,到单机 ...

  5. .NET 分布式架构开发实战之二 草稿设计

    前言: 本篇之所以称为草稿设计,是因为设计的都是在纸上完成的.反映了一个思考的过程. 本篇的议题如下: 1) 第一个数据层草图的提出 2) 对数据访问层的思考 3) 第二个数据层草图的提出 1.数据层 ...

  6. 阿里P8架构师谈:分布式架构设计12精讲

    分布式架构设计包含: 分布式缓存 分布式消息中间件 分库分表.读写分离 单点登录等 想成为阿里160万年薪的P8架构师?你必须掌握如下6大技能体系! 阿里P8架构师谈:分布式架构系统拆分原则.需求.微 ...

  7. 分布式架构中常见理论以及如何才能设计出高可用的分布式架构?

    分布式架构中常见理论以及如何才能设计出高可用的分布式架构? 一.前言 我们就来聊一聊目前主流的分布式架构以及分布式架构中常见理论以及如何才能设计出高可用的分布式架构好了.分布式架构中,SOA和微服务架 ...

  8. 架构设计(2)---分布式架构的演进过程

    分布式架构的演进过程 一.分布式架构的发展历史 1946年,世界上第一台电子计算机在美国的宾夕法尼亚大学诞生,它的名字是:ENICAC ,这台计算机的体重比较大,计算速度也不快,但是而代表了计算机时代 ...

  9. php项目分布式架构设计,【转】互联网项目架构之基于服务的分布式架构

    以前一直找一篇通俗易懂的文章,今天终于找到了,记录下. 文章来源:赵小忠 文章地址:https://www.cnblogs.com/1315925303zxz/p/6371550.html 随着互联网 ...

最新文章

  1. 使用过滤器模式,让客户关怀中的代码更加干净整洁
  2. Memobus总线光端机产品功能介绍
  3. LeetCode MySQL 1070. 产品销售分析 III(group by 陷阱)
  4. python偶数个数_python基础
  5. 博客杂志CMS模板,wpdx3.6破解版源码WordPress主题
  6. Oracle安装本地和远程两种方式的DISPLAY设置
  7. 什么样的对象会被直接放入老年代
  8. Linux终端、控制台复制粘贴
  9. 我不应该用计算机做题,超级计算器:能帮你做题的计算器,就是它了
  10. mysql 索引失效的7种情况
  11. 中国雅虎邮箱停止服务前后帐号迁移攻略
  12. 初探flask debug生成pin码
  13. 转置卷积中的棋盘效应
  14. JAVA-国密算法SM3和SM4应用Example
  15. java实现福利彩票抽奖_【福利】快来参与抽奖获得《Java程序设计》
  16. 免费的.cn域名,我的新域名
  17. Navicat for Mysql连接数据库时遇到10038错误
  18. JS: break 终止循环 continue跳过循环体中不想执行的语句
  19. 最厉害的面试技巧都有哪些?
  20. jquery二维码生成插件jquery.qrcode.js在线生成二维码

热门文章

  1. 程序员必备的20多种开发工具
  2. 关于__construct()和__destruct
  3. 王者荣耀服务器怎么修改,王者荣耀常用英雄自定义攻略怎么设置 自定义攻略设置方法介绍...
  4. 一文看懂:NAS网络存储与SAN、DAS的区别
  5. Unbound classpath container: ‘JRE System Library’已解决
  6. Surface Go无法访问windows store的解决心得
  7. 这个地图绘制工具太赞了,推荐~~
  8. 使用多张图片做帧动画的性能优化
  9. Don Box博客中文版志愿者翻译已招募
  10. Excel一键知道文本的字符长度