IT教程 弹力设计篇之“补偿事务” 前面,我们说过,分布式系统有一个比较明显的问题就是,一个业务流程需要组合一组服务。这样的事情在微服务下就更为明显了,因为这需要业务上的一致性的保证。也就是说,如果一个步骤失败了,那么要么回滚到以前的服... 07月22日 发表评论 阅读全文
IT教程 弹力设计篇之“服务的状态” 之前在我们讲的幂等设计中,为了过滤掉已经处理过的请求,其中需要保存处理过的状态,为了把服务做成无状态的,我们引入了第三方的存储。而这一篇中,我们将谈论一下服务的状态,只有清楚地了解了状态这个事,我们才... 07月22日 发表评论 阅读全文
IT教程 弹力设计篇之“幂等性设计” 所谓幂等性设计,就是说,一次和多次请求某一个资源应该具有同样的副作用。用数学的语言来表达就是:f(x) = f(f(x))。 比如,求绝对值的函数,abs(x) = abs(abs(x))。 为什么我... 07月22日 发表评论 阅读全文
IT教程 弹力设计篇之“异步通讯设计” 前面所说的隔离设计通常都需要对系统做解耦设计,而把一个单体系统解耦,不单单是把业务功能拆分出来,正如上面所说,拆分完后还会面对很多的问题。其中一个重要的问题就是这些系统间的通讯。 通讯一般来说分同步和... 07月22日 1 阅读全文
IT教程 弹力设计篇之“隔离设计” 隔离设计对应的单词是 Bulkheads,中文翻译为隔板。但其实,这个术语是用在造船上的,也就是船舱里防漏水的隔板。一般的船无论大小都会有这个东西,大一点的船都会把船舱隔成若干个空间。这样,如果船舱漏... 07月22日 发表评论 阅读全文
IT教程 弹力设计篇之“认识故障和弹力设计” 我前面写的《分布式系统架构的本质》系列文章,从分布式系统的业务层、中间件层、数据库层等各个层面介绍了高并发架构、异地多活架构、容器化架构、微服务架构、高可用架构、弹性化架构等,也就是所谓的“纲”。通过... 07月22日 发表评论 阅读全文
IT教程 编程范式游记(11)- 程序世界里的编程范式 这个世界到今天有很多很多的编程范式,相当复杂。下面这个图比较好地表现了这些各式各样的编程范式。这个图越往左边就越是“声明式的”,越往右边就越不是“声明式的”(指令式的),我们可以看到,函数式编程、逻辑... 07月22日 发表评论 阅读全文
IT教程 编程范式游记(10)- 逻辑编程范式 这篇文章重点介绍 Prolog 语言。Prolog(Programming in Logic 的缩写)是一种逻辑编程语言。它创建在逻辑学的理论基础之上,最初被运用于自然语言等研究领域。现在它已被广泛地... 07月22日 发表评论 阅读全文
IT教程 编程范式游记(9)- 编程的本质 我们讲了各式各样的不同语言的编程范式,从 C 语言的泛型,讲到 C++ 的泛型,再讲到函数式的 Map/Reduce/Filter,以及 Pipeline 和 Decorator,还有面向对象的多态通... 07月22日 发表评论 阅读全文
IT教程 编程范式游记(8)- Go 语言的委托模式 我们再来看 Go 语言这个模式,Go 语言的这个模式挺好玩儿的。声明一个 struct,跟 C 很一样,然后直接把这个 struct 类型放到另一个 struct 里。 委托的简单示例 我们来看几个示... 07月22日 发表评论 阅读全文