Monday, 9 March 2020

Distributed System Design

This Distributed System Design, I will update based on my reading.
Today I had went through the twitter system design.

Twitter System Design:   https://imgur.com/6TFkVL2

 Twitter Technical Stack:
   1) Redis Cluster
   2) Apache Storm/Kafka Streams
   3) Search - EarlyBird
   4) http push websocket - million of mobiles
   5) Apache Zookeper - maintains nodes


 Refer: https://www.youtube.com/watch?v=wYk0xPP_P_8

Whatsup System Design

Whasup Techical Stack:
    1) Erlang, the functional programming language
    2) Webserver for load balancer - Yaws webserver
    3) Message Server - XMPP Server (XMPP protocol)
    4) Database - Mnesia / CouchDB Cluster
    5) Apache HttpServer for Media Handling



Refer: https://medium.com/codingurukul/whatsapp-engineering-inside-2-bdd1ec354748
           https://www.youtube.com/watch?v=L7LtmfFYjc4


Netflix System Design

Front End : React JS

Server: Netty Server (TCP Server), Apache EC2 Cluster(My sql), AWS ELB

Cache : EVCache (Memcached)

Streaming: Apache Kafka

Compute : Spark cluster, Apache Samza

Storage: AWS S3,Cassandra Cluster

Services: Microservices ( ZUUL, Hystrix etc), Amazon EMR ( Managed Hadoop Framework), Archer - MapReduce Style Platform, Elastic Search, Apache Chukwa (Apache Chukwa is an open source data collection system for monitoring large distributed systems) 

Service Orchestra: TITUS ( Container Managed Platform, like kubernets) AWS Application Auto Scaling feature ((Titus is a container management platform that provides scalable and reliable container execution and cloud-native integration with Amazon AWS))
   
Refer: https://medium.com/@narengowda/netflix-system-design-dbec30fede8d

Varnish  - Open source web cache

Below diagram talks about Replica Vs Sharding
Reference: Designing Distributed Systems By Brendan Burns ( Very Good Book which will cover main concepts)

Replica Service: Stateless Service, Assume Request A can answer by any of #1,#2,#3

Sharded Service: Stateful Service, Assume Request A can answer by #1


Now I am started to work on Kubernetes - Below is the best material to learn the Kubernetes
https://kodekloud.com/courses/675122/lectures/12039431
This author covered all the kubernetes topics very well.

To setup the minikube on window 10 home edition: https://www.assistanz.com/installing-minikube-on-windows-10-home-edition-using-virtualbox/

I had tried minikube is working with virtualbox 5.2.x only, for virtualbox 6.x I had got error. While installing the minikube in your local please refer the virutalbox.

Docker daemon is a process, it will come along with minkube, Hence in my local i am utilizing the minikube docker daemon.

Below is the command to check:
minikube docker-env

Result:
SET DOCKER_TLS_VERIFY=1
SET DOCKER_HOST=tcp://192.168.99.100:2376
SET DOCKER_CERT_PATH=C:\Users\rames\.minikube\certs
SET MINIKUBE_ACTIVE_DOCKERD=minikube


What is sticky session ?
2 Webservers - server1 and server2
Application Load Balancer - default time - 5 min

10:00 Client1   > ALB  > sticky session > server1
10:03 Client1   > ALB  > sticky session > server1
10:08 Client1   > ALB  > sticky session > server2 ( why ? because sticky session timeout 5 min means same client --> attach to server1 until 5 min, if any client1 request coming with in a 5 min, it will map to server1 means sticky session attached for particalr server).


What is Anti Corruption Layer ?
https://dev.to/asarnaout/the-anti-corruption-layer-pattern-pcd,  It is going to protect existing legacy system through combination of patterns those are facade, adapters and translators.

https://docs.microsoft.com/en-us/azure/architecture/patterns/anti-corruption-layer












No comments:

Post a Comment