1
2
UNIX设计哲学:
保持接口与实现的简单性,比系统的任何其他属性,包括准确性、一致性和完整性都来得更加重要。

在这个阶段提出的分布式架构的目标:使用多个独立的分布式服务来共同构建出一个更大型的系统。而这个目标,从历史的局限性就决定了他不可能 是一蹴而就的解决分布式系统中的难题。其中面临的最大问题就是:由于调用本地方法与调用远程方法的差别,如何像调用本地方法一样去调用远程方法

那“远程”二字代表了什么呢?

  1. 首先不可能 用内联等传统编译原理中的优化算法,来提升运行速度
  2. 远程所带来的网络环境问题,包括:
    • 远程服务在哪里–>服务发现
    • 有多少个–>负载均衡
    • 网络出现分区,超时出错怎么办–>熔断,隔离降级
    • 方法参与返回结果如何表示 –>序列化协议
    • 如何传输–>传输协议
    • 服务权限怎么管理–>认证授权
    • 如何 保证通信安全–>网络安全层
    • 如何 令调用不同机器服务返回相同的结果–>分布式数据一致性

针对大部分问题,DCE从0开始从无到有回答了其中大部分的问题。

总结

在这个阶段采用分布式架构,为了解决上述各种问题,所付出的代价远远超过了所取得的收益。那接下来该如何发展呢?

  1. 尽快提升单机处理能力,以避免分布式的种种问题
  2. 寻找更完美的解决方案,来应对上述在构筑分布式系统的问题
1
某个功能能够进行分布式,并不意味着它就应该进行分布式,强行追求透明的分布式操作只会自食其果

行文思路:

image-20210216102359012

思考题

1
今天以微服务为代表的分布式系统,是如何看待简单的?

思考:

微服务所谓的简单,不管是从开发工具、开发形式亦或是运维上来看,都是在趋于看上去的简单。把复杂 留给 自己,简单留给别人。易开发、易部署、易扩展、易运维等等的说法。都在宣誓着把简单作为主要的原则 ,但背后所面临着诸如本节课所有的讨论的问题,都是需要一一关注,一一解决的。所以我觉得这里的简单并不是真正的简单。