Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Distributed computing
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|System with multiple networked computers}} {{Distinguish|Decentralized computing}} '''Distributed computing''' is a field of [[computer science]] that studies '''distributed systems''', defined as [[computer system]]s whose inter-communicating components are located on different [[computer network|networked computers]].<ref name="tanenbaum">{{cite book |author1=Tanenbaum, Andrew S. |author2=Steen, Maarten van |title=Distributed systems: principles and paradigms |publisher=Pearson Prentice Hall |location=Upper Saddle River, NJ |year=2002 |isbn=0-13-088893-1 |url=https://www.distributed-systems.net/index.php/books/ds3/ |access-date=2020-08-28 |archive-date=2020-08-12 |archive-url=https://web.archive.org/web/20200812174339/https://www.distributed-systems.net/index.php/books/ds3/ |url-status=live }}</ref><ref name="Distributed Programs 2010 pp. 373β406">{{cite book | title=Texts in Computer Science | chapter=Distributed Programs | publisher=Springer London | publication-place=London | year=2010 | isbn=978-1-84882-744-8 | issn=1868-0941 | doi=10.1007/978-1-84882-745-5_11 | pages=373β406 | quote=Systems consist of a number of physically distributed components that work independently using their private storage, but also communicate from time to time by explicit message passing. Such systems are called distributed systems.}}</ref> The components of a distributed system communicate and coordinate their actions by [[message passing|passing messages]] to one another in order to achieve a common goal. Three significant challenges of distributed systems are: maintaining [[Concurrency (computer science)|concurrency]] of components, overcoming the [[clock synchronization|lack of a global clock]], and managing the independent failure of components.<ref name="tanenbaum" /> When a component of one system fails, the entire system does not fail.{{sfn|Dusseau|Dusseau|2016|p=1β2}} Examples of distributed systems vary from [[service-oriented architecture|SOA-based systems]] to [[microservices]] to [[massively multiplayer online game]]s to [[peer-to-peer|peer-to-peer applications]]. Distributed systems cost significantly more than monolithic architectures, primarily due to increased needs for additional hardware, servers, gateways, firewalls, new subnets, proxies, and so on.<ref>{{Cite book |last=Ford |first=Neal |title=Fundamentals of Software Architecture: An Engineering Approach |date=March 3, 2020 |publisher=O'Reilly Media |isbn=978-1492043454 |edition=1st |pages=146β147}}</ref> Also, distributed systems are prone to [[fallacies of distributed computing]]. On the other hand, a well designed distributed system is more scalable, more durable, more changeable and more fine-tuned than a [[monolithic application]] deployed on a single machine.<ref>{{Cite book |title=Monolith to Microservices Evolutionary Patterns to Transform Your Monolith |publisher=O'Reilly Media |isbn=9781492047810}}</ref> According to Marc Brooker: "a system is scalable in the range where [[marginal cost]] of additional workload is nearly constant." [[Serverless computing|Serverless]] technologies fit this definition but the total cost of ownership, and not just the infra cost must be considered.<ref>{{Cite book |title=Building Serverless Applications on Knative |publisher=O'Reilly Media |isbn=9781098142049}}</ref> A [[computer program]] that runs within a distributed system is called a '''distributed program''',<ref name="Distributed Programs 2010 pp. 373β406 II">{{cite book | title=Texts in Computer Science | chapter=Distributed Programs | publisher=Springer London | publication-place=London | year=2010 | isbn=978-1-84882-744-8 | issn=1868-0941 | doi=10.1007/978-1-84882-745-5_11 | pages=373β406 | quote=Distributed programs are abstract descriptions of distributed systems. A distributed program consists of a collection of processes that work concurrently and communicate by explicit message passing. Each process can access a set of variables which are disjoint from the variables that can be changed by any other process.}}</ref> and ''distributed programming'' is the process of writing such programs.<ref>{{harvtxt|Andrews|2000}}. {{harvtxt|Dolev|2000}}. {{harvtxt|Ghosh|2007}}, p. 10.</ref> There are many different types of implementations for the message passing mechanism, including pure HTTP, [[remote procedure call|RPC-like]] connectors and [[message-oriented middleware|message queues]].<ref>{{Cite journal|last=Magnoni|first=L.|date=2015|title=Modern Messaging for Distributed Sytems (sic)|journal=Journal of Physics: Conference Series|language=en|volume=608|issue=1|pages=012038|doi=10.1088/1742-6596/608/1/012038|issn=1742-6596|doi-access=free|bibcode=2015JPhCS.608a2038M }}</ref> ''Distributed computing'' also refers to the use of distributed systems to solve computational problems. In ''distributed computing'', a problem is divided into many tasks, each of which is solved by one or more computers,<ref>{{harvtxt|Godfrey|2002}}.</ref> which communicate with each other via message passing.<ref name="Andrews 2000">{{harvtxt|Andrews|2000}}, p. 291β292. {{harvtxt|Dolev|2000}}, p. 5.</ref>
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)