胆固醇偏高有什么危害| 溶媒是什么| 4ever是什么意思| 吃什么不会胖| 知觉是什么意思| 喷塑工是干什么的| 门槛什么意思| 近视是什么意思| 罗贯中是什么朝代的| 放疗后吃什么恢复快| 肝外胆管扩张什么意思| 甲亢属于什么科室| 儿童鼻炎吃什么药| 京东plus是什么意思| 斯德哥尔摩综合征是什么| 头孢不能和什么药一起吃| 保和丸有什么功效| 73年属什么| 居住证是什么意思| 铎读什么| 甲状腺有什么作用| pb是什么意思| OD是什么| 马失前蹄下一句是什么| 上不下要念什么| 卵巢囊肿有什么危害| 恐龙灭绝的原因是什么| 止咳平喘什么药最有效| 苹果手机用的什么系统| 婆什么起舞| 带状疱疹可以吃什么水果| 被蚂蚁咬了怎么止痒消肿要擦什么药| 引狼入室是什么意思| 说话口臭是什么原因引起的| 蛇为什么会咬人| 月牙是什么意思| 巨人观什么意思| 发热吃什么药| 芒果和什么相克| 蜂蜜什么人不能吃| 肠梗阻是因为什么原因引起的| 八零年属什么生肖| 氨酶偏高是什么意思| 身体乳是什么| 省委副书记是什么级别| 有氧运动和无氧运动有什么区别| 气山读什么| 金鸡报晓是什么意思| 为什么会得近视眼| 凝血功能障碍是什么病| 中国什么时候灭亡| 胸闷气短挂什么科| 梦见下雪是什么| 佟丽娅为什么离婚| 吃什么食物下奶快而且奶多| 巨蟹座跟什么星座最配| 什么可以解酒| 浑身乏力什么病的前兆| 未时左眼跳是什么预兆| 脑内腔隙灶是什么意思| 槟榔为什么上瘾| 蓝眼泪是什么意思| 什么是元素| 总监是什么级别| 崩溃什么意思| 11月14日什么星座| 吃什么能化解肾结石| 博美犬吃什么狗粮最好| 糖尿病吃什么食物| 挖矿是什么| 缺钾吃什么食物| 6月6日是什么节| 观音位置摆放什么方向| 不等是什么意思| 唐僧叫什么| 体液是指什么| 呦西是什么意思| 肾水不足是什么意思| 案山是什么意思| 旗袍穿什么鞋子好看图| la是什么牌子| 2015属什么生肖| 生吃大蒜有什么好处| 刮痧和拔罐有什么区别| 在屋顶唱着你的歌是什么歌| 凝视的近义词是什么| 伟岸一般形容什么人| 过问是什么意思| 口干口臭什么原因引起的| 端坐呼吸常见于什么病| crew是什么意思| 小孩为什么会流鼻血| 57是什么意思| 珍惜当下是什么意思| 美尼尔综合征吃什么药| 疱疹性咽峡炎吃什么药最管用| 什么茶降血脂最好| 脉搏低是什么原因| 为什么会自言自语| 掉头发补充什么维生素| 晟怎么读音是什么| 女性腰疼去医院挂什么科| 一个月一个元念什么| 舌头上火了吃什么降火| 内分泌失调看什么科| 2月14日是什么星座| 蓝莓是什么季节的水果| gc是什么激素| 尿潜血阳性什么意思| 畅销是什么意思| 为什么老是咳嗽| adhd是什么| 身上瘙痒是什么原因| 腿上出汗是什么原因| 低压48有什么危险| 麻辣拌里面都有什么菜| 乳糖不耐受什么意思| 控制欲是什么意思| 牛油果是什么味道的| utc是什么| 19时是什么时辰| 00年属什么生肖| 心虚吃什么补最快| 香醋是什么醋| 竹荪是什么| 芒果不可以跟什么一起吃| 抽烟对女生有什么危害| 相安无事是什么意思| 男生为什么要做包皮手术| 蛤蜊是什么| 慢性萎缩性胃炎是什么意思| plein是什么牌子| 孕妇吃什么对胎儿好| 乳腺彩超什么时候做最准确| 烧火棍是什么意思| 文理分科什么时候开始| bac是什么意思| 发烧喝什么水| 吃什么能让月经量增多| 跟腱炎什么症状| 补脑吃什么食物| dm是什么病| 全脂奶粉是什么意思| 为什么呢| 石斛什么价格| 核能是什么| 西瓜不可以和什么同食| 七杀大运是什么意思| 2019年出生属什么生肖| 流鼻涕吃什么药好| 5.25是什么星座| 打嗝不停吃什么药| 没有奶水怎么办吃什么能下奶| 为什么会得耳石症| or是什么意思| 好男儿志在四方是什么生肖| 什么情况需要打破伤风针| 尿偏红色是什么原因| 低钾有什么症状和危害| 高考早点吃什么好| 甲状腺球蛋白抗体高说明什么| 易烊千玺原名叫什么| 红茶是什么茶| 吃燕麦片有什么好处| 什么时候用得| 杀阴虱用什么药最好| 念珠菌用什么药| 薏米是什么米| 还债是什么意思| 经常手瘾吃什么药| 提拔是什么意思| 耳鸣吃什么| 停车坐爱枫林晚中的坐是什么意思| 喝茶对身体有什么好处| 三月二十六是什么星座| 什么时候种大白菜| 低头族是什么意思| hpv病毒是什么病毒| 嘴唇起泡是什么原因引起的| 手痒脚痒是什么原因| 11度穿什么衣服| 支气管哮喘吃什么药| 吃什么对胰腺好| 可以是什么意思| 两肺散在小结节是什么意思| 脚酸疼是什么原因引起的吗| 抽血挂什么科| 头晕呕吐挂什么科| 背后长疙瘩是什么原因| rr过高是什么意思| 专硕和学硕有什么区别| 耳朵上长痘痘什么原因| 遂什么意思| 肺结节吃什么药| 减肥期间可以喝什么饮料| 呼吸困难是什么原因引起的| 天蝎座喜欢什么样的女生| 预包装食品指的是什么| 充电宝什么品牌最好| 粉瘤挂什么科| 憨笑是什么意思| 汴去掉三点水念什么| 用酒擦身体有什么好处| dr检查是什么意思| 急性胃炎吃什么药好| 今天是什么冲什么生肖| 眼睛模糊什么原因| 泡脚时间长了有什么坏处| 梦见一坨屎是什么意思| 耳鼻喉科属于什么科| 囊性包块是什么| 门诊是什么意思| 花心大萝卜是什么意思| 槟子是什么水果| 勾践属什么生肖| 冰心原名叫什么名字| 朱砂是什么东西| 带银饰有什么好处| 丑是什么库| 蛀牙是什么样子的| fila是什么品牌| 为什么发际线高| 外面下着雨犹如我心血在滴什么歌| 什么人生病从来不看医生| 转氨酶高是什么引起的| 平板运动试验阳性是什么意思| 什么是前庭功能| gc什么意思| 什么东西最养胃| 百步穿杨是什么生肖| 皈依有什么好处| 消化道出血吃什么药| 血氯高是什么原因| 梦里见血代表什么预兆| 天经地义是什么意思| 科员是什么职务| 脾脏大是什么原因| 小腹痛挂什么科| shia是什么意思| 角膜塑形镜什么牌子好| 文爱是什么意思| 哈气是什么意思| 殳是什么意思| 女性一般什么年龄绝经| 后人是什么意思| 海棠花长什么样| 老年人腿浮肿是什么原因引起的| 女人为什么会喷水| 钵仔糕粉是什么粉| 房性心动过速是什么意思| 为什么经常流鼻血| 梦到和男朋友分手是什么征兆| 淋巴肿瘤吃什么食物好| 入党有什么好处| 投递是什么意思| 桃李是什么意思| 国家为什么不承认鬼神| 大是什么意思| 孕妇补铁吃什么药| 葛根是什么植物的根| 鼠肚鸡肠是什么生肖| 风调雨顺的下联是什么| 乳白色是什么颜色| 看男科挂什么门诊| 百度Jump to content

我不当背景!詹姆斯凶残劈扣吓坏坎宁安(鹈鹕vs骑士)

From Wikipedia, the free encyclopedia
(Redirected from Distributed application)
百度 据此可知,很多企业不是由于走出去获得国际声誉,而是因为中国强大,它们才变得强大,变得受关注。

Distributed computing is a field of computer science that studies distributed systems, defined as computer systems whose inter-communicating components are located on different networked computers.[1][2]

The components of a distributed system communicate and coordinate their actions by passing messages to one another in order to achieve a common goal. Three significant challenges of distributed systems are: maintaining concurrency of components, overcoming the lack of a global clock, and managing the independent failure of components.[1] When a component of one system fails, the entire system does not fail.[3] Examples of distributed systems vary from SOA-based systems to microservices to massively multiplayer online games to 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.[4] 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.[5] According to Marc Brooker: "a system is scalable in the range where marginal cost of additional workload is nearly constant." Serverless technologies fit this definition but the total cost of ownership, and not just the infra cost must be considered.[6]

A computer program that runs within a distributed system is called a distributed program,[7] and distributed programming is the process of writing such programs.[8] There are many different types of implementations for the message passing mechanism, including pure HTTP, RPC-like connectors and message queues.[9]

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,[10] which communicate with each other via message passing.[11]

Introduction

[edit]

The word distributed in terms such as "distributed system", "distributed programming", and "distributed algorithm" originally referred to computer networks where individual computers were physically distributed within some geographical area.[12] The terms are nowadays used in a much wider sense, even referring to autonomous processes that run on the same physical computer and interact with each other by message passing.[11]

While there is no single definition of a distributed system,[13] the following defining properties are commonly used as:

  • There are several autonomous computational entities (computers or nodes), each of which has its own local memory.[14]
  • The entities communicate with each other by message passing.[15]

A distributed system may have a common goal, such as solving a large computational problem;[16] the user then perceives the collection of autonomous processors as a unit. Alternatively, each computer may have its own user with individual needs, and the purpose of the distributed system is to coordinate the use of shared resources or provide communication services to the users.[17]

Other typical properties of distributed systems include the following:

  • The system has to tolerate failures in individual computers.[18]
  • The structure of the system (network topology, network latency, number of computers) is not known in advance, the system may consist of different kinds of computers and network links, and the system may change during the execution of a distributed program.[19]
  • Each computer has only a limited, incomplete view of the system. Each computer may know only one part of the input.[20]

Patterns

[edit]

Here are common architectural patterns used for distributed computing:[21]

Events vs. Messages

[edit]

In distributed systems, events represent a fact or state change (e.g., OrderPlaced) and are typically broadcast asynchronously to multiple consumers, promoting loose coupling and scalability. While events generally don’t expect an immediate response, acknowledgment mechanisms are often implemented at the infrastructure level (e.g., Kafka commit offsets, SNS delivery statuses) rather than being an inherent part of the event pattern itself. [22][23]

In contrast, messages serve a broader role, encompassing commands (e.g., ProcessPayment), events (e.g., PaymentProcessed), and documents (e.g., DataPayload). Both events and messages can support various delivery guarantees, including at-least-once, at-most-once, and exactly-once, depending on the technology stack and implementation. However, exactly-once delivery is often achieved through idempotency mechanisms rather than true, infrastructure-level exactly-once semantics. [22][23]

Delivery patterns for both events and messages include publish/subscribe (one-to-many) and point-to-point (one-to-one). While request/reply is technically possible, it is more commonly associated with messaging patterns rather than pure event-driven systems. Events excel at state propagation and decoupled notifications, while messages are better suited for command execution, workflow orchestration, and explicit coordination. [22][23]

Modern architectures commonly combine both approaches, leveraging events for distributed state change notifications and messages for targeted command execution and structured workflows based on specific timing, ordering, and delivery requirements. [22][23]

Parallel and distributed computing

[edit]
(a), (b): a distributed system.
(c): a parallel system.

Distributed systems are groups of networked computers which share a common goal for their work. The terms "concurrent computing", "parallel computing", and "distributed computing" have much overlap, and no clear distinction exists between them.[24] The same system may be characterized both as "parallel" and "distributed"; the processors in a typical distributed system run concurrently in parallel.[25] Parallel computing may be seen as a particularly tightly coupled form of distributed computing,[26] and distributed computing may be seen as a loosely coupled form of parallel computing.[13] Nevertheless, it is possible to roughly classify concurrent systems as "parallel" or "distributed" using the following criteria:

  • In parallel computing, all processors may have access to a shared memory to exchange information between processors.[27]
  • In distributed computing, each processor has its own private memory (distributed memory). Information is exchanged by passing messages between the processors.[28]

The figure on the right illustrates the difference between distributed and parallel systems. Figure (a) is a schematic view of a typical distributed system; the system is represented as a network topology in which each node is a computer and each line connecting the nodes is a communication link. Figure (b) shows the same distributed system in more detail: each computer has its own local memory, and information can be exchanged only by passing messages from one node to another by using the available communication links. Figure (c) shows a parallel system in which each processor has a direct access to a shared memory.

The situation is further complicated by the traditional uses of the terms parallel and distributed algorithm that do not quite match the above definitions of parallel and distributed systems (see below for more detailed discussion). Nevertheless, as a rule of thumb, high-performance parallel computation in a shared-memory multiprocessor uses parallel algorithms while the coordination of a large-scale distributed system uses distributed algorithms.[29]

History

[edit]

The use of concurrent processes which communicate through message-passing has its roots in operating system architectures studied in the 1960s.[30] The first widespread distributed systems were local-area networks such as Ethernet, which was invented in the 1970s.[31]

ARPANET, one of the predecessors of the Internet, was introduced in the late 1960s, and ARPANET e-mail was invented in the early 1970s. E-mail became the most successful application of ARPANET,[32] and it is probably the earliest example of a large-scale distributed application. In addition to ARPANET (and its successor, the global Internet), other early worldwide computer networks included Usenet and FidoNet from the 1980s, both of which were used to support distributed discussion systems.[33]

The study of distributed computing became its own branch of computer science in the late 1970s and early 1980s. The first conference in the field, Symposium on Principles of Distributed Computing (PODC), dates back to 1982, and its counterpart International Symposium on Distributed Computing (DISC) was first held in Ottawa in 1985 as the International Workshop on Distributed Algorithms on Graphs.[34]

Architectures

[edit]

Various hardware and software architectures are used for distributed computing. At a lower level, it is necessary to interconnect multiple CPUs with some sort of network, regardless of whether that network is printed onto a circuit board or made up of loosely coupled devices and cables. At a higher level, it is necessary to interconnect processes running on those CPUs with some sort of communication system.[35]

Whether these CPUs share resources or not determines a first distinction between three types of architecture:

Distributed programming typically falls into one of several basic architectures: client–server, three-tier, n-tier, or peer-to-peer; or categories: loose coupling, or tight coupling.[36]

  • Client–server: architectures where smart clients contact the server for data then format and display it to the users. Input at the client is committed back to the server when it represents a permanent change.
  • Three-tier: architectures that move the client intelligence to a middle tier so that stateless clients can be used. This simplifies application deployment. Most web applications are three-tier.
  • n-tier: architectures that refer typically to web applications which further forward their requests to other enterprise services. This type of application is the one most responsible for the success of application servers.
  • Peer-to-peer: architectures where there are no special machines that provide a service or manage the network resources.[37]:?227? Instead all responsibilities are uniformly divided among all machines, known as peers. Peers can serve both as clients and as servers.[38] Examples of this architecture include BitTorrent and the bitcoin network.

Another basic aspect of distributed computing architecture is the method of communicating and coordinating work among concurrent processes. Through various message passing protocols, processes may communicate directly with one another, typically in a main/sub relationship. Alternatively, a "database-centric" architecture can enable distributed computing to be done without any form of direct inter-process communication, by utilizing a shared database.[39] Database-centric architecture in particular provides relational processing analytics in a schematic architecture allowing for live environment relay. This enables distributed computing functions both within and beyond the parameters of a networked database.[40]

Cell-Based Architecture

[edit]

Cell-based architecture is a distributed computing approach in which computational resources are organized into self-contained units called cells. Each cell operates independently, processing requests while maintaining scalability, fault isolation, and availability. [41][42][43]

A cell typically consists of multiple services or application components and functions as an autonomous unit. Some implementations replicate entire sets of services across multiple cells, while others partition workloads between cells. In replicated models, requests may be rerouted to an operational cell if another experiences a failure. This design is intended to enhance system resilience by reducing the impact of localized failures. [44][45][46]

Some implementations employ circuit breakers within and between cells. Within a cell, circuit breakers may be used to prevent cascading failures among services, while inter-cell circuit breakers can isolate failing cells and redirect traffic to those that remain operational. [47][48][49]

Cell-based architecture has been adopted in some large-scale distributed systems, particularly in cloud-native and high-availability environments, where fault isolation and redundancy are key design considerations. Its implementation varies depending on system requirements, infrastructure constraints, and operational objectives. [50][51][52]

Applications

[edit]

Reasons for using distributed systems and distributed computing may include:

  • The very nature of an application may require the use of a communication network that connects several computers: for example, data produced in one physical location and required in another location.
  • There are many cases in which the use of a single computer would be possible in principle, but the use of a distributed system is beneficial for practical reasons. For example:
    • It can allow for much larger storage and memory, faster compute, and higher bandwidth than a single machine.
    • It can provide more reliability than a non-distributed system, as there is no single point of failure. Moreover, a distributed system may be easier to expand and manage than a monolithic uniprocessor system.[53]
    • It may be more cost-efficient to obtain the desired level of performance by using a cluster of several low-end computers, in comparison with a single high-end computer.

Examples

[edit]

Examples of distributed systems and applications of distributed computing include the following:[54]

Reactive distributed systems

[edit]

According to Reactive Manifesto, reactive distributed systems are responsive, resilient, elastic and message-driven. Subsequently, Reactive systems are more flexible, loosely-coupled and scalable. To make your systems reactive, you are advised to implement Reactive Principles. Reactive Principles are a set of principles and patterns which help to make your cloud native application as well as edge native applications more reactive. [56]

Theoretical foundations

[edit]

Models

[edit]

Many tasks that we would like to automate by using a computer are of question–answer type: we would like to ask a question and the computer should produce an answer. In theoretical computer science, such tasks are called computational problems. Formally, a computational problem consists of instances together with a solution for each instance. Instances are questions that we can ask, and solutions are desired answers to these questions.

Theoretical computer science seeks to understand which computational problems can be solved by using a computer (computability theory) and how efficiently (computational complexity theory). Traditionally, it is said that a problem can be solved by using a computer if we can design an algorithm that produces a correct solution for any given instance. Such an algorithm can be implemented as a computer program that runs on a general-purpose computer: the program reads a problem instance from input, performs some computation, and produces the solution as output. Formalisms such as random-access machines or universal Turing machines can be used as abstract models of a sequential general-purpose computer executing such an algorithm.[57][58]

The field of concurrent and distributed computing studies similar questions in the case of either multiple computers, or a computer that executes a network of interacting processes: which computational problems can be solved in such a network and how efficiently? However, it is not at all obvious what is meant by "solving a problem" in the case of a concurrent or distributed system: for example, what is the task of the algorithm designer, and what is the concurrent or distributed equivalent of a sequential general-purpose computer?[citation needed]

The discussion below focuses on the case of multiple computers, although many of the issues are the same for concurrent processes running on a single computer.

Three viewpoints are commonly used:

Parallel algorithms in shared-memory model
  • All processors have access to a shared memory. The algorithm designer chooses the program executed by each processor.
  • One theoretical model is the parallel random-access machines (PRAM) that are used.[59] However, the classical PRAM model assumes synchronous access to the shared memory.
  • Shared-memory programs can be extended to distributed systems if the underlying operating system encapsulates the communication between nodes and virtually unifies the memory across all individual systems.
  • A model that is closer to the behavior of real-world multiprocessor machines and takes into account the use of machine instructions, such as Compare-and-swap (CAS), is that of asynchronous shared memory. There is a wide body of work on this model, a summary of which can be found in the literature.[60][61]
Parallel algorithms in message-passing model
  • The algorithm designer chooses the structure of the network, as well as the program executed by each computer.
  • Models such as Boolean circuits and sorting networks are used.[62] A Boolean circuit can be seen as a computer network: each gate is a computer that runs an extremely simple computer program. Similarly, a sorting network can be seen as a computer network: each comparator is a computer.
Distributed algorithms in message-passing model
  • The algorithm designer only chooses the computer program. All computers run the same program. The system must work correctly regardless of the structure of the network.
  • A commonly used model is a graph with one finite-state machine per node.

In the case of distributed algorithms, computational problems are typically related to graphs. Often the graph that describes the structure of the computer network is the problem instance. This is illustrated in the following example.[63]

An example

[edit]

Consider the computational problem of finding a coloring of a given graph G. Different fields might take the following approaches:

Centralized algorithms[63]
  • The graph G is encoded as a string, and the string is given as input to a computer. The computer program finds a coloring of the graph, encodes the coloring as a string, and outputs the result.
Parallel algorithms
  • Again, the graph G is encoded as a string. However, multiple computers can access the same string in parallel. Each computer might focus on one part of the graph and produce a coloring for that part.
  • The main focus is on high-performance computation that exploits the processing power of multiple computers in parallel.
Distributed algorithms
  • The graph G is the structure of the computer network. There is one computer for each node of G and one communication link for each edge of G. Initially, each computer only knows about its immediate neighbors in the graph G; the computers must exchange messages with each other to discover more about the structure of G. Each computer must produce its own color as output.
  • The main focus is on coordinating the operation of an arbitrary distributed system.[63]

While the field of parallel algorithms has a different focus than the field of distributed algorithms, there is much interaction between the two fields. For example, the Cole–Vishkin algorithm for graph coloring[64] was originally presented as a parallel algorithm, but the same technique can also be used directly as a distributed algorithm.

Moreover, a parallel algorithm can be implemented either in a parallel system (using shared memory) or in a distributed system (using message passing).[65] The traditional boundary between parallel and distributed algorithms (choose a suitable network vs. run in any given network) does not lie in the same place as the boundary between parallel and distributed systems (shared memory vs. message passing).

Complexity measures

[edit]

In parallel algorithms, yet another resource in addition to time and space is the number of computers. Indeed, often there is a trade-off between the running time and the number of computers: the problem can be solved faster if there are more computers running in parallel (see speedup). If a decision problem can be solved in polylogarithmic time by using a polynomial number of processors, then the problem is said to be in the class NC.[66] The class NC can be defined equally well by using the PRAM formalism or Boolean circuits—PRAM machines can simulate Boolean circuits efficiently and vice versa.[67]

In the analysis of distributed algorithms, more attention is usually paid on communication operations than computational steps. Perhaps the simplest model of distributed computing is a synchronous system where all nodes operate in a lockstep fashion. This model is commonly known as the LOCAL model. During each communication round, all nodes in parallel (1) receive the latest messages from their neighbours, (2) perform arbitrary local computation, and (3) send new messages to their neighbors. In such systems, a central complexity measure is the number of synchronous communication rounds required to complete the task.[68]

This complexity measure is closely related to the diameter of the network. Let D be the diameter of the network. On the one hand, any computable problem can be solved trivially in a synchronous distributed system in approximately 2D communication rounds: simply gather all information in one location (D rounds), solve the problem, and inform each node about the solution (D rounds).

On the other hand, if the running time of the algorithm is much smaller than D communication rounds, then the nodes in the network must produce their output without having the possibility to obtain information about distant parts of the network. In other words, the nodes must make globally consistent decisions based on information that is available in their local D-neighbourhood. Many distributed algorithms are known with the running time much smaller than D rounds, and understanding which problems can be solved by such algorithms is one of the central research questions of the field.[69] Typically an algorithm which solves a problem in polylogarithmic time in the network size is considered efficient in this model.

Another commonly used measure is the total number of bits transmitted in the network (cf. communication complexity).[70] The features of this concept are typically captured with the CONGEST(B) model, which is similarly defined as the LOCAL model, but where single messages can only contain B bits.

Other problems

[edit]

Traditional computational problems take the perspective that the user asks a question, a computer (or a distributed system) processes the question, then produces an answer and stops. However, there are also problems where the system is required not to stop, including the dining philosophers problem and other similar mutual exclusion problems. In these problems, the distributed system is supposed to continuously coordinate the use of shared resources so that no conflicts or deadlocks occur.

There are also fundamental challenges that are unique to distributed computing, for example those related to fault-tolerance. Examples of related problems include consensus problems,[71] Byzantine fault tolerance,[72] and self-stabilisation.[73]

Much research is also focused on understanding the asynchronous nature of distributed systems:

Note that in distributed systems, latency should be measured through "99th percentile" because "median" and "average" can be misleading.[77]

Coordinator election (or leader election) is the process of designating a single process as the organizer of some task distributed among several computers (nodes). Before the task is begun, all network nodes are either unaware which node will serve as the "coordinator" (or leader) of the task, or unable to communicate with the current coordinator. After a coordinator election algorithm has been run, however, each node throughout the network recognizes a particular, unique node as the task coordinator.[78]

The network nodes communicate among themselves in order to decide which of them will get into the "coordinator" state. For that, they need some method in order to break the symmetry among them. For example, if each node has unique and comparable identities, then the nodes can compare their identities, and decide that the node with the highest identity is the coordinator.[78]

The definition of this problem is often attributed to LeLann, who formalized it as a method to create a new token in a token ring network in which the token has been lost.[79]

Coordinator election algorithms are designed to be economical in terms of total bytes transmitted, and time. The algorithm suggested by Gallager, Humblet, and Spira[80] for general undirected graphs has had a strong impact on the design of distributed algorithms in general, and won the Dijkstra Prize for an influential paper in distributed computing.

Many other algorithms were suggested for different kinds of network graphs, such as undirected rings, unidirectional rings, complete graphs, grids, directed Euler graphs, and others. A general method that decouples the issue of the graph family from the design of the coordinator election algorithm was suggested by Korach, Kutten, and Moran.[81]

In order to perform coordination, distributed systems employ the concept of coordinators. The coordinator election problem is to choose a process from among a group of processes on different processors in a distributed system to act as the central coordinator. Several central coordinator election algorithms exist.[82]

Properties of distributed systems

[edit]

So far the focus has been on designing a distributed system that solves a given problem. A complementary research problem is studying the properties of a given distributed system.[83][84]

The halting problem is an analogous example from the field of centralised computation: we are given a computer program and the task is to decide whether it halts or runs forever. The halting problem is undecidable in the general case, and naturally understanding the behaviour of a computer network is at least as hard as understanding the behaviour of one computer.[85]

However, there are many interesting special cases that are decidable. In particular, it is possible to reason about the behaviour of a network of finite-state machines. One example is telling whether a given network of interacting (asynchronous and non-deterministic) finite-state machines can reach a deadlock. This problem is PSPACE-complete,[86] i.e., it is decidable, but not likely that there is an efficient (centralised, parallel or distributed) algorithm that solves the problem in the case of large networks.

Other Topics

[edit]

Linearizability

See also

[edit]

Notes

[edit]
  1. ^ a b Tanenbaum, Andrew S.; Steen, Maarten van (2002). Distributed systems: principles and paradigms. Upper Saddle River, NJ: Pearson Prentice Hall. ISBN 0-13-088893-1. Archived from the original on 2025-08-06. Retrieved 2025-08-06.
  2. ^ "Distributed Programs". Texts in Computer Science. London: Springer London. 2010. pp. 373–406. doi:10.1007/978-1-84882-745-5_11. ISBN 978-1-84882-744-8. ISSN 1868-0941. 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.
  3. ^ Dusseau & Dusseau 2016, p. 1–2.
  4. ^ Ford, Neal (March 3, 2020). Fundamentals of Software Architecture: An Engineering Approach (1st ed.). O'Reilly Media. pp. 146–147. ISBN 978-1492043454.
  5. ^ Monolith to Microservices Evolutionary Patterns to Transform Your Monolith. O'Reilly Media. ISBN 9781492047810.
  6. ^ Building Serverless Applications on Knative. O'Reilly Media. ISBN 9781098142049.
  7. ^ "Distributed Programs". Texts in Computer Science. London: Springer London. 2010. pp. 373–406. doi:10.1007/978-1-84882-745-5_11. ISBN 978-1-84882-744-8. ISSN 1868-0941. 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.
  8. ^ Andrews (2000). Dolev (2000). Ghosh (2007), p. 10.
  9. ^ Magnoni, L. (2015). "Modern Messaging for Distributed Sytems (sic)". Journal of Physics: Conference Series. 608 (1): 012038. Bibcode:2015JPhCS.608a2038M. doi:10.1088/1742-6596/608/1/012038. ISSN 1742-6596.
  10. ^ Godfrey (2002).
  11. ^ a b Andrews (2000), p. 291–292. Dolev (2000), p. 5.
  12. ^ Lynch (1996), p. 1.
  13. ^ a b Ghosh (2007), p. 10.
  14. ^ Andrews (2000), pp. 8–9, 291. Dolev (2000), p. 5. Ghosh (2007), p. 3. Lynch (1996), p. xix, 1. Peleg (2000), p. xv.
  15. ^ Andrews (2000), p. 291. Ghosh (2007), p. 3. Peleg (2000), p. 4.
  16. ^ Ghosh (2007), p. 3–4. Peleg (2000), p. 1.
  17. ^ Ghosh (2007), p. 4. Peleg (2000), p. 2.
  18. ^ Ghosh (2007), p. 4, 8. Lynch (1996), p. 2–3. Peleg (2000), p. 4.
  19. ^ Lynch (1996), p. 2. Peleg (2000), p. 1.
  20. ^ Ghosh (2007), p. 7. Lynch (1996), p. xix, 2. Peleg (2000), p. 4.
  21. ^ Fundamentals of Software Architecture: An Engineering Approach. O'Reilly Media. 2020. ISBN 978-1492043454.
  22. ^ a b c d Kleppmann, Martin (2017). Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems. O'Reilly Media. ISBN 978-1449373320.
  23. ^ a b c d Building Event-Driven Microservices: Leveraging Organizational Data at Scale. ISBN 978-1492057895.
  24. ^ Ghosh (2007), p. 10. Keidar (2008).
  25. ^ Lynch (1996), p. xix, 1–2. Peleg (2000), p. 1.
  26. ^ Peleg (2000), p. 1.
  27. ^ Papadimitriou (1994), Chapter 15. Keidar (2008).
  28. ^ See references in Introduction.
  29. ^ Bentaleb, A.; Yifan, L.; Xin, J.; et al. (2016). "Parallel and Distributed Algorithms" (PDF). National University of Singapore. Archived (PDF) from the original on 2025-08-06. Retrieved 20 July 2018.
  30. ^ Andrews (2000), p. 348.
  31. ^ Andrews (2000), p. 32.
  32. ^ Peter (2004), The history of email Archived 2025-08-06 at the Wayback Machine.
  33. ^ Banks, M. (2012). On the Way to the Web: The Secret History of the Internet and its Founders. Apress. pp. 44–5. ISBN 9781430250746. Archived from the original on 2025-08-06. Retrieved 2025-08-06.
  34. ^ Tel, G. (2000). Introduction to Distributed Algorithms. Cambridge University Press. pp. 35–36. ISBN 9780521794831. Archived from the original on 2025-08-06. Retrieved 2025-08-06.
  35. ^ Ohlídal, M.; Jaro?, J.; Schwarz, J.; et al. (2006). "Evolutionary Design of OAB and AAB Communication Schedules for Interconnection Networks". In Rothlauf, F.; Branke, J.; Cagnoni, S. (eds.). Applications of Evolutionary Computing. Springer Science & Business Media. pp. 267–78. ISBN 9783540332374.
  36. ^ "Real Time And Distributed Computing Systems" (PDF). ISSN 2278-0661. Archived from the original (PDF) on 2025-08-06. Retrieved 2025-08-06. {{cite journal}}: Cite journal requires |journal= (help)
  37. ^ Vigna P, Casey MJ. The Age of Cryptocurrency: How Bitcoin and the Blockchain Are Challenging the Global Economic Order St. Martin's Press January 27, 2015 ISBN 9781250065636
  38. ^ Quang Hieu Vu; Mihai Lupu; Beng Chin Ooi (2010). Peer-to-peer computing : principles and applications. Heidelberg: Springer. p. 16. ISBN 9783642035135. OCLC 663093862.
  39. ^ Lind P, Alm M (2006), "A database-centric virtual chemistry system", J Chem Inf Model, 46 (3): 1034–9, doi:10.1021/ci050360b, PMID 16711722.
  40. ^ Chiu, G (1990). "A model for optimal database allocation in distributed computing systems". Proceedings. IEEE INFOCOM'90: Ninth Annual Joint Conference of the IEEE Computer and Communications Societies.
  41. ^ Newman, Sam (2025-08-06). Building Microservices. O'Reilly Media. ISBN 978-1491950357.
  42. ^ Richardson, Chris (2019). Microservices patterns: with examples in Java. Shelter Island, NY: Manning Publications. ISBN 978-1-61729-454-9.
  43. ^ Christudas, Binildas (2019). Practical Microservices Architectural Patterns: Event-Based Java Microservices with Spring Boot and Spring Cloud. Berkeley, CA: Apress L. P. ISBN 978-1-4842-4501-9.
  44. ^ Newman, Sam (2025-08-06). Building Microservices. O'Reilly Media. ISBN 978-1491950357.
  45. ^ Richardson, Chris (2019). Microservices patterns: with examples in Java. Shelter Island, NY: Manning Publications. ISBN 978-1-61729-454-9.
  46. ^ Christudas, Binildas (2019). Practical Microservices Architectural Patterns: Event-Based Java Microservices with Spring Boot and Spring Cloud. Berkeley, CA: Apress L. P. ISBN 978-1-4842-4501-9.
  47. ^ Newman, Sam (2025-08-06). Building Microservices. O'Reilly Media. ISBN 978-1491950357.
  48. ^ Richardson, Chris (2019). Microservices patterns: with examples in Java. Shelter Island, NY: Manning Publications. ISBN 978-1-61729-454-9.
  49. ^ Christudas, Binildas (2019). Practical Microservices Architectural Patterns: Event-Based Java Microservices with Spring Boot and Spring Cloud. Berkeley, CA: Apress L. P. ISBN 978-1-4842-4501-9.
  50. ^ Newman, Sam (2025-08-06). Building Microservices. O'Reilly Media. ISBN 978-1491950357.
  51. ^ Richardson, Chris (2019). Microservices patterns: with examples in Java. Shelter Island, NY: Manning Publications. ISBN 978-1-61729-454-9.
  52. ^ Christudas, Binildas (2019). Practical Microservices Architectural Patterns: Event-Based Java Microservices with Spring Boot and Spring Cloud. Berkeley, CA: Apress L. P. ISBN 978-1-4842-4501-9.
  53. ^ Elmasri & Navathe (2000), Section 24.1.2.
  54. ^ Andrews (2000), p. 10–11. Ghosh (2007), p. 4–6. Lynch (1996), p. xix, 1. Peleg (2000), p. xv. Elmasri & Navathe (2000), Section 24.
  55. ^ Haussmann, J. (2019). "Cost-efficient parallel processing of irregularly structured problems in cloud computing environments". Journal of Cluster Computing. 22 (3): 887–909. doi:10.1007/s10586-018-2879-3. S2CID 54447518.
  56. ^ Reactive Application Development. Manning. 2018. ISBN 9781638355816.
  57. ^ Toomarian, N.B.; Barhen, J.; Gulati, S. (1992). "Neural Networks for Real-Time Robotic Applications". In Fijany, A.; Bejczy, A. (eds.). Parallel Computation Systems For Robotics: Algorithms And Architectures. World Scientific. p. 214. ISBN 9789814506175. Archived from the original on 2025-08-06. Retrieved 2025-08-06.
  58. ^ Savage, J.E. (1998). Models of Computation: Exploring the Power of Computing. Addison Wesley. p. 209. ISBN 9780201895391.
  59. ^ Cormen, Leiserson & Rivest (1990), Section 30.
  60. ^ Herlihy & Shavit (2008), Chapters 2–6.
  61. ^ Lynch (1996)
  62. ^ Cormen, Leiserson & Rivest (1990), Sections 28 and 29.
  63. ^ a b c TULSIRAMJI GAIKWAD-PATIL College of Engineering & Technology, Nagpur Department of Information Technology Introduction to Distributed Systems[1]
  64. ^ Cole & Vishkin (1986). Cormen, Leiserson & Rivest (1990), Section 30.5.
  65. ^ Andrews (2000), p. ix.
  66. ^ Arora & Barak (2009), Section 6.7. Papadimitriou (1994), Section 15.3.
  67. ^ Papadimitriou (1994), Section 15.2.
  68. ^ Lynch (1996), p. 17–23.
  69. ^ Peleg (2000), Sections 2.3 and 7. Linial (1992). Naor & Stockmeyer (1995).
  70. ^ Schneider, J.; Wattenhofer, R. (2011). "Trading Bit, Message, and Time Complexity of Distributed Algorithms". In Peleg, D. (ed.). Distributed Computing. Springer Science & Business Media. pp. 51–65. ISBN 9783642240997. Archived from the original on 2025-08-06. Retrieved 2025-08-06.
  71. ^ Lynch (1996), Sections 5–7. Ghosh (2007), Chapter 13.
  72. ^ Lynch (1996), p. 99–102. Ghosh (2007), p. 192–193.
  73. ^ Dolev (2000). Ghosh (2007), Chapter 17.
  74. ^ Lynch (1996), Section 16. Peleg (2000), Section 6.
  75. ^ Lynch (1996), Section 18. Ghosh (2007), Sections 6.2–6.3.
  76. ^ Ghosh (2007), Section 6.4.
  77. ^ Kamburugamuve, Supun; Ekanayake, Saliya (2021). Foundations of Data Intensive Applications Large Scale Data Analytics Under the Hood. John Wiley & Sons. ISBN 9781119713012.
  78. ^ a b Haloi, S. (2015). Apache ZooKeeper Essentials. Packt Publishing Ltd. pp. 100–101. ISBN 9781784398323. Archived from the original on 2025-08-06. Retrieved 2025-08-06.
  79. ^ LeLann, G. (1977). "Distributed systems - toward a formal approach". Information Processing. 77: 155·160 – via Elsevier.
  80. ^ R. G. Gallager, P. A. Humblet, and P. M. Spira (January 1983). "A Distributed Algorithm for Minimum-Weight Spanning Trees" (PDF). ACM Transactions on Programming Languages and Systems. 5 (1): 66–77. doi:10.1145/357195.357200. S2CID 2758285. Archived (PDF) from the original on 2025-08-06.{{cite journal}}: CS1 maint: multiple names: authors list (link)
  81. ^ Korach, Ephraim; Kutten, Shay; Moran, Shlomo (1990). "A Modular Technique for the Design of Efficient Distributed Leader Finding Algorithms" (PDF). ACM Transactions on Programming Languages and Systems. 12 (1): 84–101. CiteSeerX 10.1.1.139.7342. doi:10.1145/77606.77610. S2CID 9175968. Archived (PDF) from the original on 2025-08-06.
  82. ^ Hamilton, Howard. "Distributed Algorithms". Archived from the original on 2025-08-06. Retrieved 2025-08-06.
  83. ^ "Major unsolved problems in distributed systems?". cstheory.stackexchange.com. Archived from the original on 20 January 2023. Retrieved 16 March 2018.
  84. ^ "How big data and distributed systems solve traditional scalability problems". theserverside.com. Archived from the original on 17 March 2018. Retrieved 16 March 2018.
  85. ^ Svozil, K. (2011). "Indeterminism and Randomness Through Physics". In Hector, Z. (ed.). Randomness Through Computation: Some Answers, More Questions. World Scientific. pp. 112–3. ISBN 9789814462631. Archived from the original on 2025-08-06. Retrieved 2025-08-06.
  86. ^ Papadimitriou (1994), Section 19.3.

References

[edit]
Books
Articles
Web sites

Further reading

[edit]
Books
Articles
Conference Papers
  • Rodriguez, Carlos; Villagra, Marcos; Baran, Benjamin (2007). "Asynchronous team algorithms for Boolean Satisfiability". 2007 2nd Bio-Inspired Models of Network, Information and Computing Systems. pp. 66–69. doi:10.1109/BIMNICS.2007.4610083. S2CID 15185219.
[edit]
我行我素的人什么性格 肚脐下方疼是什么原因 哼哼唧唧是什么生肖 有编制是什么意思 什么是佛教什么是道教
什么鱼红烧最好吃 喉咙干是什么原因 羽加立念什么 左大腿外侧麻木是什么原因 什么是介入手术
福建有什么好吃的 尿路感染吃什么药 倭瓜是什么瓜 可乐不能和什么一起吃 bml什么意思
玉米什么时候种 成都有什么 pcr医学上是什么意思 胆囊手术后不能吃什么 肾病吃什么药最好
aspirin是什么意思hcv7jop9ns4r.cn 为什么会闪电hcv7jop6ns5r.cn 多事之秋是什么意思hcv8jop4ns6r.cn 吃什么补肾壮阳hcv8jop2ns2r.cn 狗的鼻子为什么是湿的hcv9jop4ns4r.cn
女人总犯困是什么原因hcv7jop4ns5r.cn 88年的属什么hcv7jop9ns3r.cn 15号是什么日子aiwuzhiyu.com 吃什么食物能补钾jasonfriends.com 甲氰咪胍又叫什么hcv7jop9ns9r.cn
应接不暇的暇是什么意思hcv7jop4ns7r.cn 菌子中毒吃什么解毒hcv9jop1ns8r.cn 屁股右边痛是什么原因hcv9jop7ns0r.cn 减肥最快的运动是什么运动hcv9jop3ns3r.cn 什么是tct检查hcv8jop8ns6r.cn
王维是诗什么hcv7jop7ns0r.cn 后脖子出汗多是什么原因hcv7jop9ns0r.cn 单招是什么学历hcv8jop3ns8r.cn 含义是什么意思hcv9jop0ns6r.cn g1p1是什么意思baiqunet.com
百度