Distributed systems

Definition: A distributed system is a collection of independent components that appears to its user as a single coherent unit. These components are physically (machines) or logically (VMs, containers, processes) distributed.

Alternative  definition of a distributed system:
  • There are several autonomous computational entities (computers or nodes), each of which has its own local memory.
  • The entities communicate with each other by message passing.
examples:
Network-based software:  are distributed systems that involve separate clients that request services from server components over a network connection. (consider client+server as the whole system) 

A distributed system should provide these abilities:
  • Share (limited) resources to large amount of users
  • Easy access to resources.
  • Transparency: 
    • Access: Hide how a component is represented or accessed
    • Location: Hide where a component is located inside the system
    • Migration / Relocation (i.e. migration while in use) / Replication transparencies are, in my opinion, direct consequences of Location transparency.
    • Concurrency: Hide that a resource is shared by concurrent user.
    • Failure: Hide that a resource was recovered
  • Openness: provide a standardized, complete and neutral API to ensure:
    • Interoperability with other systems.
    • Portability of a component to be executed (without modification) in an other distributed system.
  • Extensible: components should be small and easily replaceable components.
  • Customization: separate Policy (set of rules to be defined on user side) from Mechanism (the execution of these rules inside system)
  • Scalable in size, geography and administration.
  •  
 
Scalability (property of a system): is the ability of a system to be enlarged in order to accommodate a growing amount of work.

Some metrics to know how scalable a system is:
  • Performance: amount of useful work /  used resources
  • availability: uptime / (uptime + downtime).

Distributed transaction

https://www.researchgate.net/profile/Yanchun_Zhang2/publication/221152644_Web_Service_Composition_Transaction_Management/links/0046351ff636b02822000000.pdf

Brief description of distributed TX processing model :
  • 2 Phases commit: Synchronous, Locking, Read Isolation. A long-living transaction is started, rollbacked or ended by a orchestrator.
  • Saga model: Asynchronous, event driven, No Read isolation. Local transaction is stared by one participant. When this local tx ended (or rollbacked), a new event, if any, is created and sent to other participants, to proceed with the rest of the job.
  • Saga model with Broker: Participant send command message  to a broker. The broker bind each message with a predefined workflow (e.g state machine)

No comments: