鲜明对比:分布式计算与并行编程
2019-02-26 来源:多智时代
分布式计算和并行编程的差异是一种常见的混乱,因为当你着手完成在服务器、网络和软件开发上的绩效目标时,这两者之间有大量的重叠。那有什么差异呢?在基本水平上,分布式计算和并行编程仅仅是描述性术语,指的是在运行时把工作完成的方式(如并行处理,另一个常常与分布式计算和并行编程两者混为一谈的术语)。在这些术语精确和包罗万象的定义上,你可能永远得不到一群开发商的同意。但是我们给你描绘一些重要的地方,让你能够理解他们所说的企业计算世界。
无论何时,一个负载分布在两个或更多的计算设备上,或者通过不同类型的网络连接的计算机,这就是分布式计算。有各种各样的方法来做到这一点。当一个客户端设备,比如一台个人电脑、智能手机或平板电脑,可以处理一部分工作时,这是客户端-服务器的分布式计算。一个三层体系架构有一个中间层参与,正如许多web应用程序一样,因此,客户端可以是无状态的,服务器不需要记住每个客户的信息或每个会话。点对点架构中每个组件或机器能力等同并且负责执行任何要求的任务,集群架构还有多个机器并行运行一个进程,这两个架构是另外一些例子。网格计算和云计算是分布式计算的两个广泛子集。
这个术语通常是指软件代码,它促进在同一时间执行多个计算任务的性能。这有点像有一个操场上有20个滑梯而不是一个。孩子们不必排队等待轮到自己,因为他们可以同时玩。你可以使用电脑鼠标,一边听在线广播,一边更新电子表格中的信息,并对你的个人电脑做病毒扫描,这唯一的理由就是并发编程。在这种情况下,它的多重任务允许多个程序或进程访问CPU而没有等待。这一设置允许使用多任务共享的资源进行密集的I/O处理和有效的信号处理。并发性也可以通过实施多个计算线程发生(通常采用交错启动和完成点)。这叫做多线程,并且它发生在一个单一的进程或程序中。这就是为什么你可以打印一个文档,同时继续编辑另一个文档。如果没有多线程,UI会太慢,因为系统将无法在同一时间应对多个用户操作。
所有分布式系统必须,通过其本身的性质,利用某种形式的并行编程,否则他们无法完成任何事情。在一个非常简单的层面上,你可能会说,分布式计算主要是基础设施、物理或虚拟化,而并发编程是在应用程序层实现。两者都是用来利用可用资源并提高性能。
不用惊讶,Java提供了一种编程语言、类库、API、架构和其他工具并且同时支持分布式计算和并行编程。DJVM,分布式Java虚拟机,在服务器端允许并行处理一个多线程Java应用程序来提高计算性能,同时使分布式的环境可以通过一个单一的接口访问。自从企业应用程序期望利用分布式计算,对于依赖Java的组织来说Java EE是天然的选择平台。Java语言本身和可用的Java库都可通过API支持并发编程,例如那些java.util.Concurrent包。如果你真的想深入挖掘分布式计算如何使用JVM,请回顾我们先前的文章“Distributed Computing Made Easy”,Server Side网站的Jonas Boner所写。它始于2006年,但至今其基本原则仍然适用。
对于计算能力和更好的性能需求只会增加。云、移动和大数据都在创造企业能够并且应该每时每刻管理大量信息的期望中扮演一个角色。我们可以看到越来越多的框架和工具使其更容易。拥有MapReduce的Hadoop结合了分布式计算和并行编程的一些最好的特征,把大量的并行编程注入良好的措施中。《Hadoop in Action》一书的作者Chuck Lam说,这个技术已经颇具规模,并且准备进一步发展。
“我认为现在的基础设施已经很成熟。你甚至可以获取Hadoop并很容易地运行在Amazon上,因为他们引进了Elastic MapReduce。对于开发者社区来说,所感兴趣的是开始探索应用程序层。许多公司现在有某种Hadoop集群,可以处理任何类型的数据。现在重要的是弄清楚如何利用这些数据来得到一些商业价值。”那么,未来不会只是提高计算性能,也将是提升企业的性能。
在不久的将来,云计算一定会彻底走入我们的生活,有兴趣入行未来前沿产业的朋友,可以收藏云计算,及时获取人工智能、大数据、云计算和物联网的前沿资讯和基础知识,让我们一起携手,引领人工智能的未来!
标签: 大数据 代码 服务器 服务器端 开发者 网络 云计算
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。
上一篇:10岁黑客发现苹果游戏漏洞
下一篇:如何解决移动云安全问题?