nelson-yeh-fy / Adventure

0 stars 0 forks source link

basics#5 - Divide and Conquer #37

Open sync-by-unito[bot] opened 3 years ago

sync-by-unito[bot] commented 3 years ago

Note to bush up system design basics#5 - Divide and conquer (application layer):

TL, Read Later. better check this again when have more SD examples and case studies.

Microservice benefits: 1.Development teams can choose different language frameworks and databases that are most appropriate. 2.Small services can evolve and plan more aggressively for the sake of hyper-growth. 3.Not monolithically scaling up/out, but focus on the most important bottlenecks. 4.From a product perspective it's possible to have both AP/CP services in the same product (to meet different requirements, check youtube's scaling tips). 5.Iterate at will with less risk, DevOps pipelines, also easier to do UI A/B testing. https://www.ibm.com/cloud/learn/microservices https://cloudncode.blog/2016/07/22/msa-getting-started/ https://www.nginx.com/blog/building-microservices-using-an-api-gateway/

Service Discovery, becomes a must while dividing: 1.ELB, Kubernetes and Marathon handle service instance registration and de-registration. 2.Zookeeper, Consul, Etcd are CP systems (in terms of CAP theorem): a.Zookeeper, a centralized leader will be unavailable for registering new services. b.Consul, de-centralized approach. https://www.consul.io/intro/vs/zookeeper 3.Eruka, uber hyperbahn(dead) are AP (eventual consistent) systems. https://www.nginx.com/blog/service-discovery-in-a-microservices-architecture/ https://workmarket.tech/choosing-a-service-discovery-system-1979ee55c728

Inter process communication: a.Asynchronous, Message-Based Communication b.Synchronous, Request/Response IPC (REST/Thrift) c.Deep dive the IPC message format (Schema evolution, and how to achieve backward compatibility): https://www.nginx.com/blog/building-microservices-inter-process-communication/ https://netflixtechblog.com/fault-tolerance-in-a-high-volume-distributed-system-91ab4faae74a https://martin.kleppmann.com/2012/12/05/schema-evolution-in-avro-protocol-buffers-thrift.html

How to handle partial failures: https://microservices.io/patterns/reliability/circuit-breaker.html https://netflixtechblog.com/fault-tolerance-in-a-high-volume-distributed-system-91ab4faae74a

┆Issue is synchronized with this Trello card by Unito ┆Attachments: https://www.ibm.com/cloud/learn/microservices | https://cloudncode.blog/2016/07/22/msa-getting-started/ | https://www.nginx.com/blog/building-microservices-using-an-api-gateway/

sync-by-unito[bot] commented 3 years ago

➤ Nelson 3513 commented:

https://www.ibm.com/cloud/learn/microservices https://cloudncode.blog/2016/07/22/msa-getting-started/ https://www.nginx.com/blog/building-microservices-using-an-api-gateway/

sync-by-unito[bot] commented 3 years ago

➤ Nelson 3513 commented:

https://www.consul.io/intro/vs/zookeeper https://www.nginx.com/blog/service-discovery-in-a-microservices-architecture/ https://workmarket.tech/choosing-a-service-discovery-system-1979ee55c728