Concurrency 促进并行/并发体系结构使用的挑战是什么?

Concurrency 促进并行/并发体系结构使用的挑战是什么?,concurrency,erlang,parallel-processing,python-stackless,stackless,Concurrency,Erlang,Parallel Processing,Python Stackless,Stackless,我对使用内置并行性/并发性的语言(如和)的可能性感到非常兴奋,并且坚信不久我们都将朝着这个方向前进——或者说我们希望这样做,因为这将是实现可伸缩性和性能的一种好的/简单的方法 然而,我已经习惯于以线性/串行/面向对象/函数的方式思考解决方案,因此我正在努力以一种值得使用并发的方式来转换我的任何领域问题。我想我只是需要忘却很多,但我想我会问以下问题: 您是否在stackless或erlang或其他应用程序中实现了任何相当大的功能 为什么这是一个好的选择?这是个好选择吗?你会再来一次吗 您的问题的

我对使用内置并行性/并发性的语言(如和)的可能性感到非常兴奋,并且坚信不久我们都将朝着这个方向前进——或者说我们希望这样做,因为这将是实现可伸缩性和性能的一种好的/简单的方法

然而,我已经习惯于以线性/串行/面向对象/函数的方式思考解决方案,因此我正在努力以一种值得使用并发的方式来转换我的任何领域问题。我想我只是需要忘却很多,但我想我会问以下问题:

  • 您是否在stackless或erlang或其他应用程序中实现了任何相当大的功能
  • 为什么这是一个好的选择?这是个好选择吗?你会再来一次吗
  • 您的问题的哪些特征意味着并发/并行是正确的
  • 您是否重新抛出了一个现有问题以利用并发性/并行性?及
  • 如果是,怎么做

有人愿意分享他们的经验吗?

这些问题在未来将几乎保持不变,但实现的底层硬件正在发生变化。要使用它,对象(组件、进程、服务,无论您如何称呼它)之间的计算方式将会改变。消息将异步发送,无需等待直接响应。相反,在一项工作完成后,该过程会给发送者回电话并给出答案。就像人们一起工作一样

我目前正在设计一个基于Erlang/OTP的轻量级事件驱动体系结构。它被称为潮滩EAS。我在这里描述这些想法和原则:。它还没准备好,但也许你会明白我的意思


mue

Erlang让您同时思考这个问题。你一秒钟也不会忘记的。过一段时间你就适应了。没什么大问题。除了解决方案在每个小角落变得平行。所有其他语言都需要调整。同时进行。这感觉很不自然。然后你会讨厌你的解决方案。不好玩


Erlang最大的优势是它没有全局垃圾收集。它永远不会休息。这一点很重要,当你每秒有10000个页面浏览量时。

在我们使用操作系统之前,开发应用程序的人会坐下来讨论如下事项:

  • 我们将如何在磁盘上存储数据
  • 我们将使用什么文件系统结构
  • 我们的应用程序将使用什么硬件
  • 等等等等
操作系统是从“开发者库”集合中产生的

操作系统的美妙之处在于,您的非书面软件具有某些特征,它可以:

  • 谈永久存储
  • 与网络对话
  • 在命令行中运行
  • 批量使用
  • 与GUI对话
  • 等等等等
一旦你换了一个操作系统-你就不会回到以前的状态

Erlang/OTP(即非Erlang)是一个应用系统,它运行在两台或更多计算机上

应用系统的美妙之处在于,您的非书面软件具有某些特征,它可以:

  • 两台机器之间的故障转移
  • 集群工作
  • 等等,等等
猜猜看,一旦你转移到一个应用系统-你也不会回去

你不必使用Erlang/OTP,Google的应用程序引擎中有一个很好的应用程序系统,所以不要为语言语法而烦恼


建立在Erlang/OTP堆栈而不是Google应用程序引擎上可能有很好的商业理由——贵公司的业务开发人员会为您做出这样的呼吁。

过去,当台式机只有一个CPU时,并行化只应用于“特殊”并行硬件。但是现在台式机通常有2到8个内核,所以现在标准的是并行硬件。这是一个很大的区别,因此这不仅是关于哪些问题建议并行,而且是关于如何将并行应用于比以前更广泛的一组问题

为了充分利用并行性,您通常需要以某种方式重新处理您的问题。平行性在许多方面改变了操场:

  • 您会遇到数据一致性和锁定问题。因此,您需要尝试组织您的问题,以便拥有半独立的数据结构,这些数据结构可以由不同的线程、进程和计算节点处理
  • 如果并行组件执行工作的相对顺序影响结果,那么并行也会在计算中引入不确定性。您可能需要对此进行保护,并定义算法的并行版本,该版本对不同的调度顺序具有鲁棒性
  • 当您超越主板内部并行性并进入网络/集群/网格计算时,您还将面临网络带宽、网络故障以及对失败计算节点的正确管理等问题。您可能需要修改您的问题,以便更容易处理当网络节点停机时部分计算丢失的情况

它不仅限于对象的通信方式。整个体系结构推理必须改变——就像OOP一样——否则您将拥有并行体系结构的串行应用程序,这是毫无意义的。关于硬件,你是对的;我们不使用的双核CPU已经出现了这种情况。是的,这是一种范式转变。我使用objects这个词只是为了让大家更熟悉它。在某种程度上,Erlang进程是一种特殊的对象。参与者系统受到Smalltalk消息传递的影响,Erlang在许多方面与Smalltalk-72类似。+1非常有趣的回答,谢谢。然而,我觉得算法并行性和分布式串行处理之间有区别,这就是我认为GAE等模型所代表的。我还没决定