Class Central is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

Coursera

Building Modern Distributed Systems with Java

Packt via Coursera

Overview

In today’s tech landscape, distributed systems form the backbone of scalable and reliable applications. This course walks you through the foundational concepts of distributed computing using Java, guiding you from the evolution of system architectures to mastering the intricacies of modern distributed databases. You’ll explore key topics like remote procedure calls (RPCs), asynchronous communication, and cluster coordination to build resilient systems. Through a mix of theory and practice, you’ll delve into the communication protocols that power distributed systems. Concepts like service registries, load balancing, and message transport are explored in depth, preparing you to design systems that scale effortlessly. Each module includes hands-on projects, such as configuring a Tiny-URL system to reinforce your learning with real-world applications. By the end of this course, you will have a deep understanding of how to architect distributed systems that meet today’s technical demands. You’ll be equipped to implement robust solutions using Java, covering everything from databases and messaging systems to consensus algorithms and event-driven architectures. Whether you’re designing microservices or large-scale data pipelines, this course has you covered. This course is designed for Java developers and software engineers with a basic understanding of object-oriented programming and networking. Prior experience with databases and system design concepts is beneficial but not required.

Syllabus

  • Concepts of Distributed Systems
    • In this module, we will explore the fundamental concepts of distributed systems, starting with how computer systems' architecture has evolved over time. We will also cover the unique challenges posed by distributed compounding and introduce a use case that will be central to the course project. Finally, we will guide you through a practical setup for the Tiny-URL project to solidify your learning.
  • Remote Procedure Call
    • In this module, we will dive into the importance of communication within distributed systems, focusing on message transport and communication patterns. You'll learn about traditional load balancers, service registries, and service meshes that help manage distributed services. We'll also cover idempotent service design to ensure fault tolerance. Finally, you'll get hands-on experience configuring resilient Remote Procedure Calls (RPC) and exploring service discovery technologies.
  • Distributed Databases
    • In this module, we will examine the role of distributed databases in modern systems, starting with a comparison between traditional RDBMS systems and NoSQL databases. You'll learn about advanced techniques like data sharding and consistent hashing, along with the implications of the CAP theorem. A brief introduction to Apache Cassandra will set the stage for the hands-on practice, where you'll use Cassandra in the Tiny-URL project to implement a distributed database solution.
  • Cluster Coordination
    • In this module, we will explore how cluster-wide coordination is crucial for maintaining consistency in distributed systems. You'll learn about the RAFT consensus algorithm and its implementation, along with a brief introduction to ETCD. Key techniques like leader election and distributed mutexes will be covered, and we'll discuss the deployment requirements for strongly consistent systems. Finally, you'll gain hands-on experience by adding cluster coordination to the Tiny-URL project.
  • Distributed Messaging Systems
    • In this module, we will explore distributed messaging systems, focusing on asynchronous communication patterns and message-oriented middleware. You'll get an introduction to Apache Kafka and understand how it operates as a distributed system. We'll also cover event-driven architecture and its advantages in distributed systems. In the practice session, you'll gain hands-on experience with distributed messaging systems to enhance the Tiny-URL project.

Taught by

Packt - Course Instructors

Reviews

Start your review of Building Modern Distributed Systems with Java

Never Stop Learning.

Get personalized course recommendations, track subjects and courses with reminders, and more.

Someone learning on their laptop while sitting on the floor.