A Note on Distributed Computing

Local computing means programs that are confined to a single address space.

本地计算即只有一个地址空间的程序

Distributed computing means programs that make calls to other address spaces, possibly on another machine. Nothing is known about the recipient of the call other than that it supports a particular interface.

分布式计算是指会调用其它地址空间的程序,很可能是在其它机器上。调用者只知道一个接口,而关于被调用者的其它信息一无所知

There is an overall vision of distributed OO computing in which there is no essential distinction between objects that share an address space and objects that are on two machines with different architectures located on different continents. Whether local or remote, these systems are defined in terms of a set of interfaces declared in an interface definition language – the implementation is independent of the interface and hidden from other objects.

分布式面向对象计算有一个全局的视野,不管是共享相同的地址空间的对象还是在不同计算机上的对象,这些对象之间没有本质的区别。不管是本地的还是远程的,这些系统都是通过接口定义语言中的一系列接口组成的——接口的实现是相互独立的,且实现过程对其它对象是隐藏的。

Given the isolation of an object’s implementation from clients of the object, the use of objects for distributed computing seems natural.

通过对用户隐藏对象的实现细节,分布式计算中对象的使用似乎很自然。

There is a single paradigm of object use and communication used no matter what the location of the object might be. In actual practice, a local member function call and a cross-continent object invocation are not the same thing.

不管对象的位置在哪,对象的使用和通信都只有一个机制。实际上,本地成员方法调用和跨节点调用不是同一件事情。

First phase of writing an application proceeds with writing the application without worrying about where the objects are located and how their communication is implemented. The developer will simply strive for the natural and correct interface between objects. This approach enforces a desireable separation between the abstract architecture of the application and the need for performance tuning.

分布式应用的第一个阶段是写一个应用程序,而不用考虑对象的位置以及通信的实现过程。开发者尽量让对象使用自然且正确的接口。这种对应用架构和性能调优之间的抽象,是一种令人满意的隔离

The second phase is to tune performance. The right set of interfaces to export to various clients can be chosen.

第二个阶段是提高性能。使用合理的接口,以让不同的用户使用。

The final phase is to test with “real bullets” (e.g., networks being partitioned, machines going down). Interfaces between objects can be beefed up to deal with these sorts of partial failures introduced by distribution by adding replication, transactions or whatever else is needed.

最后阶段是用“真枪实弹”进行测试(比如网络分割,机器down掉)。在处理这类问题时,对象间接口的功能应该被增强,可以使用副本、事务机制,或者任何需要使用的手段。

A central part of this vision is machines an application is built using OO all the way down, the right “fault points” to insert process or machine boundaries will emerge naturally. One justification for this vision is that there is no impact of the correctness of the program. It makes no difference to the correctness of the program whether the operation is carried out within the same address space, on some other machine, or off-line by some other piece of equipment.

愿景的一个中心部分是一直通过面向对象的方式编程,插入一段处理过程或者机器界限的功能正确的“故障处理点”将会很自然地融合到程序中。这个愿景的一个理由是这对程序的正确性没有影响。不管是在相同的地址空间,或者一些远程的机器,或者一些其它类型的离线装备上,这些操作对程序的正确性都没有影响。

The vision is centered around the following principles:

愿景拥有以下几个中心原则:

there is a single natural OO design for a given application, regardless of deployment context; 不管部署环境如何,对给定的应用程序来说,都有一个给定的自然的面向对象设计方案。failure and performance issues are tied to the implementation of components, and consideration of these can be left out of an initial design; and 失败和性能相关的问题被绑定到组件的实现过程中,这些是设计最开始就要考虑的the interface of an object is independent of the context in which that object is used. 对象的接口独立于使用环境 Unfortunately, all of these principles are false! 不幸的是,这些原则都是错的The desire to merge the programming and computational models of local and remote computing is not new.

将本地计算和远程计算的编程和计算模型融合在一起的需求不是现在才出现的。

Programming distributed applications is not the same as programming non-distributed applications. Making the communications paradigm the same as the language paradigm is insufficient to make programming distributed programs easier, because communicating between the parts of a distributed application is not the difficult part of that application.

编写分布式应用程序和编写非分布式应用程序不是一样的。让通信机制和语言本身的提供的机制一样,不会让分布式应用程序更简单,因为分布式应用程序不同组件之间的通信不是程序中比较难的部分。

The hard problems in distributed computing concern dealing with partial failure and the lack of a central resource manager, ensuring adequate performance and dealing with problems of concurrency, differences in memory access paradigms between local and distributed entities.你爱我吗?已经爱到危险的程度了.危险到什么程度?已经不能一个人生活。

A Note on Distributed Computing

相关文章:

你感兴趣的文章:

标签云: