返回介绍

19.2 大型系统已经逐渐走入细分领域的时代

发布于 2024-12-15 23:01:53 字数 1247 浏览 0 评论 0 收藏 0

当然,数据量或运算量上的规模依然是系统的一个(外在的、表现上的、实际应用中的)问题。就目前的实践而言,我们事实上也把它们独立为计算机系统开发中的领域,例如分布式计算领域以及分布式存储领域 1

分布并不等于并发,这一点我们此前已经讨论过。但分布必然意味着要处理逻辑与数据之间的耦合关系:其一,耦合紧密的逻辑不易拆分,也就不易分布;其二,逻辑与数据紧密耦合,也存有类似的问题。现实中的通用应用开发语言(例如 C、Java 等)是在“算法 + 数据结构 = 程序”这样的结构化理论上发展的,为了增强语言的通用性,其结构化的特性非常明显。这并不利于数据与逻辑的解耦,例如在一个既存的面向对象应用中,想要将对象的数据成员与方法成员解耦并分布,是一件不可想象的事情。但在这个问题上,并不是说具体的语言有多大的问题,而是这个程序设计范式本身的理念与我们讨论的背景并不适配。

在现在的大型通用应用开发语言 2 中,接口的引入是解决上述问题的一个良好实践。但接口带来的是面向行为的设计理念,例如在这样的环境下,我们讨论的问题通常是:某个对象或某个子系统所具有的哪些行为,是可以被抽象为接口的。而实践过程中的这些具体工作,与对象本身的设计以及与面向对象系统的设计是没有多少关系的。也就是说,接口设计与面向对象设计是两回事,只是实践中把两者综合在一起,并试图解决后者的一些实际问题。

这些“实际问题”,具体来说,就是“逻辑如何分布” 3

另一方面,现实的软件开发中的“数据”,并不总是和对象一样地通过一个实体(instance)与方法绑定起来。我们面临的这些数据 4 要么是结构化的,例如结构化文本或结构化数据库,要么是非结构化的,例如待索引的文件或者流式数据。这意味着,通用应用开发语言对于处理大数据量几乎毫无帮助。例如在实际工作中,如果这些数据存在于关系型数据库中,我们将使用 SQL 语言来操作;如果它们存在于 NoSQL(非关系型)数据库中,我们就会采用类似于数据流式语言或其他特定的数据处理语言来操作。

所以综合来说,即使仅仅观察“数据+算法”这样的软件开发本质工作,大型系统也被具体分成多个领域了。而软件开发进入领域细分时代的大背景,才是像“云计算”这样的理念得以提出的基础。

换言之,我们一再讨论的分布问题,本身也可以被理解为领域问题。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文