Replies: 11 comments 17 replies
-
Perhaps, we should start thinking about the framework's system model from the most abstract level: the distributed system as a whole. At that level of abstraction, the distributed system can be represented as a single entity. Obviously, it doesn't make sense to consider it in total isolation, for it must exist within and somehow interact with the rest of the world. Here it already starts getting interesting and we can ponder on the following questions:
|
Beta Was this translation helpful? Give feedback.
-
What could be considered a part of the external world and what could belong to the internals of the distributed system?Internals of the Distributed System
External World
|
Beta Was this translation helpful? Give feedback.
-
I suggest to think of whole distributed systems as something purposeful, sufficient and complete. In a functional model, a distributed system must be a part of a greater system, playing a certain role within the encompassing system, performing a certain function therein, i.e. have a purpose. From this perspective, at the most abstract level, everything that is used to fulfill the purpose of the distributed system, and nothing more, can be considered internal to it, making it sufficient and complete. |
Beta Was this translation helpful? Give feedback.
-
Time is closely related to the notion of change. Intuitively, we can start by considering time as a dimension of change, a continuum for representing the dynamics of the system. Then a dynamically changing system can be represented with a function of time, where the image of the system at each point in time corresponds to the state of the system at that moment. Assuming there are countably many system states, the time-function effectively defines a sequence of system states or, equally, a sequence of state transitions. Time makes each state transition distinct from any other state transition in the time-sequence, even if the corresponding changes in the system state are equivalent. So we can think of time as ordering of changes. We can take a part of the system, a subsystem, and obtain that subsystem's time-function by projecting the result of the original time-function onto the corresponding partial system state. Partitioning the original time-sequence into contiguous intervals according to the partial state projection, we can relate the subsystem's state transitions to the state transitions of the original system corresponding to the transitions between those intervals. This will preserve the ordering according to the precedence relation. For any pair of state transitions in the same time-sequence we can tell which one precedes the other in time, thus defining a precedence relation. If we take two arbitrary subsystems and try to relate their state transitions in terms of precedence according to the encompassing system, there might be some state transitions that correspond to the same state transition of the encompassing system. We can say that such state transitions are simultaneous. The precedence relation should be undefined for simultaneous state transitions and thus become a partial relation. Time is also closely related to the notion of causality. We can consider state transitions as events, where one event may causally depend on another event. An event casually depends on another event if a modification of the latter can affect the former. Casual dependency must be an asymmetric and transitive relation. There might be events such that are neither casually depends on the other, so the casual dependency relation can be partial, as well. An event can only casually depend on an event that precedes it in time. Time must ensure casual consistency by ordering events such that this rule is obeyed. So we can think of time as causally consistent partial ordering of changes. |
Beta Was this translation helpful? Give feedback.
-
Time and non-determinism are closely related. If a system is fully determined by the initial assumptions then it's absolutely static, and time is irrelevant to it. Distributed systems are not like that. Non-determinism primarily manifests itself as uncertainty of changes happening in the system over time. On the other hand, deterministic intermediate transformations within the system should be irrelevant in terms of time. Building upon previous considerations, we can think of time as causally consistent ordering of non-deterministic changes. The ultimate source of non-determinism must be outside of the system because a system is determined by everything that is a part of it. Thus we can think of non-determinism as external dependencies of the system. If we take a certain state transition of a system then everything it depends on must also be certain. From that perspective, the past is fully deterministic; thus non-determinism belongs to the future. We can say that a dynamic system consumes (resolves?) non-determinism from outside as it progresses in time. |
Beta Was this translation helpful? Give feedback.
-
Building upon previous considerations about time and non-determinism, we can think of system state as consistent image of the system or information that is necessary and sufficient for preserving the system's causal consistency as it progresses in time. In other words, the system state represents the past of the system, the result of causally consistent partial ordering of changes that possible future changes may causally depend on. The system state does not, and often cannot, represent the history of the system in full detail; instead, it contains just enough information about the past to preserve the consistency of the system in future, thus connecting the past and the future. Since the system state may lose unnecessary information about the past, and it must do this if the lifetime of the system is indefinite, it may be uncertain about the exact prior history of the system, as if partially retaining the non-determinism absorbed from outside in the past. |
Beta Was this translation helpful? Give feedback.
-
Interaction is a dynamic process, something that happens over time, and thus it inherently involves non-determinism (see previous considerations about time and non-determinism). We can think of interaction as causal dependencies between the interacting systems. In unidirectional interaction only one system depends on the other; in bidirectional interaction both systems depend on each other. A subsystem interacts with the encompassing system by interacting with other subsystems within that encompassing system. The system that acts in interaction as an external dependency of the other represents a source of non-determinism for the latter. If we consider the interacting systems as one then we shall see that the non-determinism of their interaction must ultimately originate from the outside of both systems. Thus we can also think of interaction as redistribution of non-determinism from outside. |
Beta Was this translation helpful? Give feedback.
-
A correct system must fulfill its purpose given the assumptions hold. However, when the assumptions are violated, the system may fail to fulfill its purpose. In other words, a system as a whole may fail if the amount of uncertainty (non-determinism) imposed on the system exceeds what it was supposed to handle. In that case, the system will leak the excessive non-determinism imposed on it. |
Beta Was this translation helpful? Give feedback.
-
In computer science, there are metaphoric concepts of "angelic" and "demonic" non-determinism. Angelic non-determinism aims to favor desired results, whereas demonic non-determinism allows for unpredictable and potentially unfavorable outcomes. We might also want to distinguish those types of non-determinism in our system model. |
Beta Was this translation helpful? Give feedback.
-
As noted earlier, we can think of interaction between (sub)systems as establishing new causal relationships between events (changes) in those systems or, more precisely, occurrence of events in one system that causally depend on some events from the other system. We can also think of such interaction as communicating information about causal dependencies between past events. The information thus communicated can be of different fidelity, i.e. preserving different amount of details about transitive causal dependencies between past events. The amount of detail communicated determines what causal dependencies the new event can establish with the past events. The amount of information that can be communicated in interaction is limited; therefore, new causal dependencies may only refer directly to a limited part of the actual causal dependency graph. At the same time, each act of interaction effectively resolves some amount of non-determinism imposed on the recipient system from the outside by determining which from all possible communication events occurs. On the other hand, since only limited amount of information can be communicated, some uncertainty, i.e. non-determinism, may be re-introduced in communication from the perspective of the system where it originates from. |
Beta Was this translation helpful? Give feedback.
-
We cannot allow absolutely arbitrary interaction, i.e. establishing new casual relationships, between (sub)systems, or we end up with chaos instead of a purposeful system. Therefore, there must be something that determines which interactions are possible and which are not. Absolutely isolated, unrelated systems should not be able to interact; in order for interaction to happen between systems, they must already have some relationship. Thus interactions are enabled by already established relationships. We can think of those prior relationships enabling interactions as links or connections between systems. Such connections can be established dynamically as a result of prior interaction, but ultimately, there must be some set of relationships determined by the way the system was initially prepared. Those initial relationships effectively characterize, define the system and its possible behavior. |
Beta Was this translation helpful? Give feedback.
-
This is a discussion for gathering initial ideas concerning the framework's system model as described in #47.
Beta Was this translation helpful? Give feedback.
All reactions