$19.99
per month
Video
Apr 2022
3hrs 54mins
1st Edition
-
Design and implement globally distributed, scalable, fault-tolerant, and resilience applications
-
Understanding of common algorithms and techniques used in the majority of NoSQL databases and streaming platforms
-
In-depth knowledge of Apache Cassandra, Apache Kafka, and ETCD
A significant percentage of large-scale enterprises experience performance issues with their business-critical applications. Most of the production systems have been built on top of legacy, monolith technologies. The recent popularity of micro-services will not fulfill its promise of decoupled, scalable, and fault-tolerant systems, unless “done right”. While entering the world of micro-services, engineers start building distributed applications, where robust remote procedure calls and cluster coordination are a must.
You will look at various technologies, algorithms, and design patterns here. Some of them are Service Registry and Discovery, Service Mesh, Apache Cassandra ETCD (coordinator managing Kubernetes clusters), Apache Kafka, Idempotent service design, retry logic, Sharding, and Consistent Hashing, Client-side Load Balancing, Distributed Tracing, Canary Deployment, Sidecar Pattern, Circuit Breaker, and many more. Finally, you will also see the principles of various distributed systems designs; for example, master-less versus with leaders, poll-based versus push-based, immediate versus eventual consistency.
After completing the course, learning new distributed database technology would be easier, because you will know the commonly reused techniques, including their pros and cons.
All the resource files are available on the GitHub repository at https://github.com/PacktPublishing/Building-Modern-Distributed-Systems-with-Java
This course is designed for Java developers and architects who wish to broaden their knowledge of distributed computing, NoSQL databases, efficient RPC calls, messaging middleware, and cluster coordination. It is also recommended for anyone working in modern IT landscapes. The course may be a good recap for people preparing for systems design interviews.
You will need proficiency in Java programming language, and an open mind to discover the challenges of distributed computing. Beginner-level knowledge in the Spring Boot framework will help you get along with the course easily.
-
Look at the concepts of distributed systems
-
Understand synchronous and asynchronous communication patterns
-
Study service meshes and Idempotent service design
-
Differentiate between traditional RDBMS systems and NoSQL
-
Learn deployment requirements for strongly consistent distributed systems
-
Build distributed URL-shortening services like Tiny-URL