"論文『Orleans: Distributed Virtual Actors for Programmability and Scalability』を読んで" ( http://itiskj.hatenablog.com/entry/2018/08/30/142538 ) を書いたときと同様のきっかけで、"Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems" の Chapter 4 を読んでい。、章末の文献に紹介された一連の論文の中で、面白そうだったので読んでみた文献の一つ。
- Writing a distributed application in this model proceeds in three phases
- The first phase is to write the application without worrying about where objects are located and how their communication is implemented
- The second phase is to tune performance by "concretizing" object locations and communication methods
- The final phase is to test with "real bullets" (e.g., networks being partitioned, machines going down)
- Communications protocol development has tended to follow two paths.
- One path has emphasized integration with the current language model.
- The other path has emphasized solving the problems inherent in distributed computing.
- The major differences between local and distributed computing concern the areas of latency, memory access, partial failure, and concurrency
- A more fundamental (but still obvious) difference between local and remote computing concerns the access to memory in the two cases - specifically in the use of pointers
- While unlikely, it is at least logically possible that the differences in latency and memory access between local computing and distributed computing could be masked.
- Partial failure is a central reality of distributed computing. ... This is not the case in distributed computing. where one component (machine, network link) can fail while the others continue.