刚接触分布式应用程序的程序员总是做出的错误假设。
出现关于分布式系统的错误认知

网络可靠

网络不可靠,任何特定通信都可能失败

  • 解决方案:

    1. 重传
    2. 存储重传(可在宕机后恢复传送)

无延迟

延迟无处不在, 与 光速和通信距离(或路径)有关
所有:两个系统之间的距离在这里起着重要作用。

  • 减少延迟的影响

    1. 要缩短系统通讯的物理距离
    2. 每次请求尽可能传输更多数据。

带宽无限

通讯通道能承载的数据大小是有限的
虽然为了降低延迟的影响要尽可能多传输数据,但如果数据量达到了带宽限制,会很快崩溃

权衡 延迟与带宽, Trade off

无通讯成本

系统增多,通讯增多,过去可忽略的系统间的通信成本变高。

比如:过去的系统基本都用xml,json传输。但在大规模的分布式系统中用json格式通讯已经变的有些重量级,
目前更多会使用grpc等通讯方式

网络安全

各种层面的漏洞层出不穷。

随着众包漏洞赏金计划的出现和每天新闻中的重大漏洞利用,这一点变得更加明显。

拓扑不变

随着 Docker 和 Kubernetes 的出现, 网络结构会很容易发生变化
暴露的问题是:如果基础设施的关键部分出现故障,流量能否继续流向适当的目的地?是否存在单点故障?

网络是同构的

分布式系统非常灵活
不同的操作系统、不同的框架、不同的数据格式 都可能存在系统里
所以实现互通必不可少

只要管理一个系统

系统会不可避免的依赖你无法控制的其他系统。 需要管理的系统会很多
所以需要考虑系统依赖关系, 管理各自系统的配置,监控、观察跨系统的调用

  • 基础架构即代码 (IaC)

新手对于分布式系统的谬误相关推荐

  1. 分布式系统(Distributed System)资料

    分布式系统(Distributed System)资料 <Reconfigurable Distributed Storage for Dynamic Networks> 介绍:这是一篇介 ...

  2. 分布式系统的8个谬误

    可靠网络 在分布式系统中即使一个网络节点本身发生故障概率非常低,可是当节点足够多的时候整个分布式系统网络发生故障的概率就不可忽略了 那么这意味着在分布式系统中需要更多考虑到其他节点可能故障的情况,以及 ...

  3. 有哪些新手程序员不知道的小技巧?

    提到新手程序员,大家想到的第一个词可能就是:刷题.尤其是通过LeetCode刷题,想必新手程序员们都经历过这一步,甚至不少人认为只要在LeetCode上刷的题目够多,就一定能够进阶为大神. 但是,不难 ...

  4. 彻底厘清真实世界中的分布式系统

    [编者的话]本文从一个实践者的角度,首先介绍了分布式系统的一些理论结果,例如 FLP 不可能性和 CAP 定理等:然后介绍了构建实际分布式系统最重要的一个原则:端到端:最后讨论了实际系统经常用到的协调 ...

  5. 什么是分布式系统,如何学习分布式系统(转)

    转载自:https://www.cnblogs.com/xybaby/p/7787034.html#_label_5 正文 虽然本人在前面也写过好几篇分布式系统相关的文章,主要包括CAP理论.分布式存 ...

  6. python可以做什么项目-适合Python 新手的5大练手项目,你练了么?

    已经学习了一段时间的Python,如果你看过之前W3Cschool的文章,就知道是时候该进去[项目]阶段了. 但是在练手项目的选择上,还存在疑问?不知道要从哪种项目先下手? W3Cschool首先有两 ...

  7. python新手项目-推荐:一个适合于Python新手的入门练手项目

    原标题:推荐:一个适合于Python新手的入门练手项目 随着人工智能的兴起,国内掀起了一股Python学习热潮,入门级编程语言,大多选择Python,有经验的程序员,也开始学习Python,正所谓是人 ...

  8. 想从事分布式系统,计算,hadoop等方面,需要哪些基础,推荐哪些书籍?--转自知乎...

    作者:廖君 链接:https://www.zhihu.com/question/19868791/answer/88873783 来源:知乎 分布式系统(Distributed System)资料 & ...

  9. 分布式系统的那些事儿(六) - SOA架构体系

    有十来天没发文了,实在抱歉!最近忙着录视频,同时也做了个开源的后台管理系统LeeCX,目前比较简单,但是后续会把各类技术完善.具体可以点击"原文链接". 那么今天继续说分布式系统的 ...

最新文章

  1. 转:JAVA常见错误处理方法 和 JVM内存结构
  2. 多核 CPU 和多个 CPU 有何区别
  3. 企业微信推送消息延迟_iPhone手机微信推送消息总是延迟怎么办?
  4. zbb20170606 oracle 查看空表
  5. E20170626-gg
  6. 线程问题—一个线程怎么调出另外一个线程的结果。
  7. 教你用python爬取网站数据
  8. JS - Object.create(prototype)方法
  9. python的sort()和sorted()的区别_Python 3中sort()和sorted()的区别和用法,Python3
  10. 异常:System.BadImageFormatException,未能加载正确的程序集XXX
  11. jsp数组自动转换html,jsp页面将选中的复选框转数组传到后台
  12. Rust : Attribute 属性 作者:Mike Tang
  13. 基于java坦克大战游戏
  14. 谷歌浏览器导入插件教程
  15. android里面的USB功能-----Accessory模式
  16. Python代码画喜羊羊怎么画_卧槽!没想到,用Python竟能做五仁月饼
  17. android软路由,软路由体验 篇一:  100块钱还要啥自行车,软路由初体验
  18. ASCII码的转换应用:
  19. 剪映导出帧率选多少_剪映帧率是什么 剪映帧率在哪设置
  20. EasyExcel读excel文件模板校验暨时间格式正则表达式

热门文章

  1. TSM12M(TSM16C)驱动程序及注意事项
  2. 【Codeforces 723D】Lakes in Berland (dfs)
  3. 支持ipv6的各种服务器和客户端
  4. Ubuntu配置流水账
  5. 递增数列(迭代加深搜索)
  6. Linux安装pyhive
  7. Python的数学建模课-02.数据导入
  8. 海康摄像头中的SADP协议(Smart Active Device Protocol,智能活动设备协议)和ONVIF协议(Open Network Video Interface Forum)是什么?
  9. js写css字体,js如何写出css动画 ?js写css动画的方法(代码)
  10. lucene实现分组统计的方法