Francesco Cesarini. Concurrency + Distribution = Availability + Scalability.

Similar documents
2015 Erlang Solutions Ltd

Thinking in a Highly Concurrent, Mostly-functional Language

FRANCESCO CESARINI. presents ERLANG/OTP. Francesco Cesarini Erlang

It also performs many parallelization operations like, data loading and query processing.

Message Passing. Advanced Operating Systems Tutorial 7

A Closer Look at the Epiphany IV 28nm 64 core Coprocessor. Andreas Olofsson PEGPUM 2013

An Introduction to Erlang

IntegratedArchitecture

Distributed Systems. Thoai Nam Faculty of Computer Science and Engineering HCMC University of Technology

An Introduction to Erlang

Introduction to Distributed Data Systems

Distributed Systems LEEC (2006/07 2º Sem.)

HPC Architectures. Types of resource currently in use

Mini USB 3.0 Dual Display Dock

Cassandra, MongoDB, and HBase. Cassandra, MongoDB, and HBase. I have chosen these three due to their recent

Distributed Systems 24. Fault Tolerance

The Actor Model applied to the Raspberry Pi and the Embedded Domain. Omer

OVERVIEW OF DIFFERENT APPLICATION SERVER MODELS

Cloud Computing CS

BUILDING A SCALABLE MOBILE GAME BACKEND IN ELIXIR. Petri Kero CTO / Ministry of Games

There s STILL plenty of room at the bottom! Andreas Olofsson

Assessing performance in HP LeftHand SANs

The Google File System

An Oracle White Paper May Oracle VM 3: Overview of Disaster Recovery Solutions

Distributed System Chapter 16 Issues in ch 17, ch 18

Microsoft SQL Server on Stratus ftserver Systems

Overview of Tianhe-2

ERLANG EVOLVES FOR MULTI-CORE AND CLOUD ENVIRONMENTS

High Availability Using Fault Tolerance in the SAN. Wendy Betts, IBM Mark Fleming, IBM

Large-scale cluster management at Google with Borg

Cisco Universal Small Cell 8050 Enterprise Management System

Distributed Systems. Overview. Distributed Systems September A distributed system is a piece of software that ensures that:

Patriot Hardware and Systems Software Requirements

Chapter 1: Distributed Information Systems

FYS Data acquisition & control. Introduction. Spring 2018 Lecture #1. Reading: RWI (Real World Instrumentation) Chapter 1.

Client Server & Distributed System. A Basic Introduction

Taurus Super-S Combo

Chapter 2 Parallel Hardware

HP Supporting the HP ProLiant Storage Server Product Family.

Open Compute Stack (OpenCS) Overview. D.D. Nikolić Updated: 20 August 2018 DAE Tools Project,

Erlang. Joe Armstrong.

Database Architectures

Gustavo Alonso, ETH Zürich. Web services: Concepts, Architectures and Applications - Chapter 1 2

Wind River. All Rights Reserved.

Monitor System Status

Telecom Open Rack Concept

A QoS-Aware Middleware for Fault Tolerant Web Services

Flat Datacenter Storage. Edmund B. Nightingale, Jeremy Elson, et al. 6.S897

Parallella: A $99 Open Hardware Parallel Computing Platform

Google File System. Sanjay Ghemawat, Howard Gobioff, and Shun-Tak Leung Google fall DIP Heerak lim, Donghun Koo

An Introduction to Erlang

Slurm Workload Manager Overview SC15

Distributed Systems 23. Fault Tolerance

arm MULTICORE PLATFORMS FOR ADVANCED APPLICATIONS Product Longevity

LBRN - HPC systems : CCT, LSU

Interconnect Your Future

SuccessMaker Learning Management System System Requirements v1.0

Scott Meder Senior Regional Sales Manager

GFS: The Google File System

Google is Really Different.

Indexing Large-Scale Data

Module 15: Network Structures

Installing VMware vsphere 5.1 Components

Reducing Time-to-Market with i.mx6-based Qseven Modules

Distributed Shared Memory

Module 16: Distributed System Structures

WOMBATOAM OPERATIONS & MAINTENANCE FOR ERLANG & ELIXIR SYSTEMS

WOMBATOAM OPERATIONS & MAINTENANCE FOR ERLANG & ELIXIR SYSTEMS

Graph Database and Analytics in a GPU- Accelerated Cloud Offering

Tech Sheet Benefits of Dual Redundant Active/Active Storage Architecture

DELL EMC READY BUNDLE FOR VIRTUALIZATION WITH VMWARE AND FIBRE CHANNEL INFRASTRUCTURE

IBM Enterprise X-Architecture Technology

Configuration Maximums VMware Infrastructure 3: ESX Server 3.5 Update 2, ESX Server 3i version 3.5 Update 2, VirtualCenter 2.

The Lion of storage systems

CS October 2017

NAS System. User s Manual. Revision 1.0

Oracle Exadata X7. Uwe Kirchhoff Oracle ACS - Delivery Senior Principal Service Delivery Engineer

Ten (or so) Small Computers

Nutanix Tech Note. Virtualizing Microsoft Applications on Web-Scale Infrastructure

The Golden Trinity of Erlang How Something Simple Has Real Business Value

BeoLink.org. Design and build an inexpensive DFS. Fabrizio Manfredi Furuholmen. FrOSCon August 2008

Distributed Transaction Management 2003

Dell EMC. VxBlock Systems for VMware NSX 6.2 Architecture Overview

CUDA GPGPU Workshop 2012

Taurus S2. User Manual. Dual-Bay Storage Enclosure for 3.5 Serial ATA Hard Drives. (English )

The Cray Rainier System: Integrated Scalar/Vector Computing

Last time. Distributed systems Lecture 6: Elections, distributed transactions, and replication. DrRobert N. M. Watson

An Alternative to GPU Acceleration For Mobile Platforms

Dynamo: Amazon s Highly Available Key-Value Store

Large-Scale Key-Value Stores Eventual Consistency Marco Serafini

Distributed Systems Conclusions & Exam. Brian Nielsen

PT APPLICATION FIREWALL BASED ON PT UNIFIED CHASSIS

The BioHPC Nucleus Cluster & Future Developments

Chapter 5. The MapReduce Programming Model and Implementation

The MOSIX Algorithms for Managing Cluster, Multi-Clusters, GPU Clusters and Clouds

Distributed Systems. 19. Fault Tolerance Paul Krzyzanowski. Rutgers University. Fall 2013

Silicon Motion s Graphics Display SoCs

Network Service Appliances

Advanced Databases ( CIS 6930) Fall Instructor: Dr. Markus Schneider. Group 17 Anirudh Sarma Bhaskara Sreeharsha Poluru Ameya Devbhankar

Lecture 23 Database System Architectures

Transcription:

Concurrency + Distribution = Availability + Scalability Francesco Cesarini francesco@erlang-solutions.com www.erlang-solutions.com @francescoc

Chapter 13 Ch 13: Node Architecture

Chapter 13 Ch 13: Distributed Architectures Ch 14: Systems That Never Stop Ch 15: Scaling Out Ch 16: Monitoring and Preemptive Support

Concurrency The world is concurrent. People speak to each other through message passing. Things fail.

Mutable State Immutable State

Problem 1 with mutable state: Your program crashes whilst executing in the critical section

Problem 2 with mutable state: Where do you locate your state Seattle London

Problem 3 with mutable state: What happens if your network connectivity fails Seattle London

Problem 1 with mutable state: Your program crashes whilst executing in the critical section London Your state does not get corrupted.

Problem 2 with mutable state: Where do you locate your state Seattle London You do not Locate state, you copy it.

Problem 3 with mutable state: What happens if your network connectivity fails Seattle London Make sure your business logic and databases handle network splits!

Distributed Architectures A node is the smallest executable standalone unit consisting of a running instance of the Erlang runtime system.

Clients Server Front-end Node Node Types Business Node Database Service Node

Fully Meshed

Dynamo

hash(sessionid1) hash(sessionid2) Dynamo Key Range Vnode 1 Vnode 2 Vnode 3 Vnode 4 Vnode 32 Vnodes Erlang Node 1 vnode 1,5, 9, 13, 17, 21, 25, 29 Erlang Node 2 vnode 2, 6, 10, 14, 18, 22, 26, 30 Erlang Node 3 vnode 3, 7,11, 15, 19, 23, 27, 31 Erlang Node 4 vnode 4, 8, 12, 16, 20, 24, 28, 32 Erlang Nodes

Service Dynamo Service Service Service Service

Service Service Dynamo Service Service Service Service Service Service

Service Bus Service Bus Service Service Service

Peer to Peer

Peer to Front- End Front- End Peer Front- End Front- End

Clients Networking DMZ Server Business

Email Clients Networking IMAP Server DMZ Business Database

STEPS EVOLVING AROUND DISTRIBUTION 1. Split up your system's functionality into manageable, stand-alone nodes. 2. Choose a distributed architectural pattern. 3. Choose the network protocols your nodes, node families, and clusters will use when communicating with each other. 4. Define your node interfaces, state and data model.

Systems That Never Stop You need at least two computers to make a fault tolerant system.

Fault Tolerance Request Client Request Client Error Request Request Error/Timeout

Resilience Request1 Client Error Request2 Client Reply Request2 Reply

Client Request Load Balancer Request Client Request Load Balancer Request Reply Client Reply Load Balancer Reliability Request Request Reply

Sharing Data You have at least two computers to make a fault tolerant system, you need to share state and data.

Client1 Client2 Login Load Balancer Login Login Request Request Client1 Load Balancer Unknown session Unknown session Client1 Login Login Load Balancer www.erlang-solutions.com Share Nothing Login Login Request Unknown session Login Session1 Session2 Session2 Session1 Session2

Client Buy book Load Balancer Client Buy train set Load Balancer www.erlang-solutions.com Share Something Buy Buy Buy Buy Session1 book Session1 Session1 train set

Client Buy book Load Balancer Buy Buy Load Balancer Buy train set Remove www.erlang-solutions.com Share Everything Remove book Load Balancer Buy Buy Remove Session1 book Session1 book Session1 book train set Session1 train set Session1 train set

Network Partitions Session1 Session1 Session1 Session1 book train set train set book

Retry Strategy Client 1 2 Request Request Client Reply Request Reply Request {duplicate, Reply}

Trade-offs Recovery Strategy Sharing Data Consistency exactly once at least once at most once Reliability share everything share something share nothing Availability Availability

STEPS EVOLVING AROUND AVAILABILITY, CONSISTENCY & RELIABILITY 5. 1. For every interface function in your nodes, you need to pick a retry strategy. 2. 6. For all your data and state, pick your sharing strategy across node families, clusters and types, taking into consideration the needs of your retry strategy.

Scaling Out Distribute for scale and replicate for availability.

Scaling Vertically Client Client Client Client Server

Scaling Horizontally web server web server web server web server web server web server web server web server Node Node Node

Trade-offs Recovery Strategy Sharing Data Consistency exactly once at least once at most once Availability share everything share something share nothing Scalability Scalability

Capacity Planning

Capacity Planning

- CAPACITY PLANNING - Capacity planning is the design phase which guarantees that your system can withstand the load it was built to handle, and with time, scaling to handle increased demand. No single point of failure Cluster blueprint for scalability Load Regulation Back Pressure

Monitoring and Preemptive Support With the right tools and approach, the five nines once reserved for Telecom systems are now easily attainable in whatever other vertical for which you might be developing software.

Heterogeneous multi-core hardware is here to stay www.erlang-solutions.com Different cores doing different things CPUs, GPUs, FPGA Parallella Board Dual core ARM processor + FPGA 1GB RAM + MicroSD Card 16 or 64 core Epiphany co-processor Gigabit Ethernet 2x USB ports + HDMI port

Heterogeneous multi-core hardware is here to stay www.erlang-solutions.com Different cores doing different things CPUs, GPUs, FPGA Parallella Board Dual core ARM processor + FPGA 1GB RAM + MicroSD Card 16 or 64 core Epiphany co-processor Gigabit Ethernet 2x USB ports + HDMI port

The Fastest Computer in the World! Tianhe-2 Chinese National University of Defence Technology 33.86 petaflops/s (November 2013) 16,000 Nodes, each with 2 Ivy Bridge multicores and 3 Xeon Phis 3,120,000 x86 cores in total

The Fastest Computer in the World! Tianhe-2 Chinese National University of Defence Technology 33.86 petaflops/s (November 2013) 16,000 Nodes, each with 2 Ivy Bridge multicores and 3 Xeon Phis 3,120,000 x86 cores in total

1. For all your data and state, pick your sharing strategy across node families, clusters and types, taking www.erlang-solutions.com 1. Split up your system's functionality into manageable, stand-alone nodes. 2. Decide what distributed architectural pattern you are going to use. 3. Decide what network protocols your nodes, node families and clusters will use when. communicating with each other. 4. Define your node interfaces, state and data model. 5. For every interface function in your nodes, you need to pick a retry strategy.

and data model. 5. Split up your system's functionality into manageable, stand-alone nodes. www.erlang-solutions.com 6. For all your data and state, pick your sharing strategy across node families, clusters and types, taking into consideration the needs of your retry strategy. 7. Reiterate through steps 1, 2, 3, 4, 5 & 6 until you have the trade-offs which suit your specification. 8. Design your cluster blueprint, looking at node ratios for scaling up and down. 9. Indentify where to apply backpressure and load regulation. 10. Define your O&M approach, defining system and business alarms, logs and metrics.

THANK YOU! Any questions? francesco@erlang-solutions.com www.erlang-solutions.com @francescoc Discount Code: authd 50% off the Early Release 40% off the printed copy