Building Distributed Systems with Java Online Course
Building Distributed Systems with Java Online Course
This course focuses on addressing performance challenges in large-scale enterprises, especially those built on legacy monolithic systems. It explores the world of microservices, emphasizing the importance of robust remote procedure calls and cluster coordination. Key topics include Service Registry and Discovery, Apache Kafka, Apache Cassandra, and design patterns like idempotent service design, retry logic, and sharding. You’ll also learn about distributed system principles such as consistency models, load balancing, and fault-tolerant strategies. By the end of the course, you will be equipped with the knowledge of best practices and common techniques to build scalable, reliable, and fault-tolerant distributed systems.
Key Benefits
- Learn to design and implement distributed applications that are globally scalable, fault-tolerant, and resilient.
- Gain a deep understanding of key algorithms and techniques commonly used in NoSQL databases and streaming platforms.
- Acquire specialized knowledge in working with Apache Cassandra, Apache Kafka, and ETCD for building robust distributed systems.
Target Audience
This course is for Java developers and architects seeking to expand their expertise in distributed computing, NoSQL databases, efficient remote procedure calls (RPC), messaging middleware, and cluster coordination. It is also highly beneficial for professionals working within modern IT environments. Additionally, this course serves as an excellent review for those preparing for systems design interviews. Proficiency in Java is required, along with an eagerness to explore the complexities of distributed computing. A basic understanding of the Spring Boot framework will enhance your ability to navigate through the course content effectively.
Learning Objectives
- Explore the core concepts and principles of distributed systems
- Gain an understanding of both synchronous and asynchronous communication patterns
- Study the architecture and benefits of service meshes and idempotent service design
- Learn to differentiate between traditional RDBMS systems and NoSQL databases
- Understand the deployment requirements for building strongly consistent distributed systems
- Develop practical skills by building a distributed URL-shortening service, similar to Tiny-URL
Course Outline
The Building Distributed Systems with Java Exam covers the following topics -
Module 1. Fundamentals of Distributed Systems
- Evolution of Computer System Architectures
- Challenges in Scaling Distributed Systems
- Practical Applications of Distributed Systems in This Course
Module 2. Remote Procedure Call (RPC)
- The Importance of Communication in Distributed Systems
- Message Transport Mechanisms and Formats
- Synchronous vs. Asynchronous Communication Models
- Traditional Load Balancing Techniques
- Service Discovery and Registration
- Service Mesh Architectures
- Designing Idempotent Services
Module 3. Distributed Databases
- Comparing Relational Databases (RDBMS) and NoSQL Systems
- Techniques for Data Sharding and Consistent Hashing
- Understanding the CAP Theorem
- Introduction to Apache Cassandra
Module 4. Cluster Coordination
- The Need for Cluster-Wide Coordination in Distributed Systems
- Understanding the RAFT Consensus Algorithm
- Introduction to ETCD
- Implementing a Distributed Mutex
- The Leader Election Design Pattern
- Deployment Considerations for Consistent Distributed Systems
- ACID Properties in a Distributed Context
Module 5. Distributed Messaging Systems
- Asynchronous Communication and Message-Oriented Middleware
- Overview of Apache Kafka
- Using Apache Kafka in Distributed Systems
- Event-Driven Architecture Principles