YoVDO

Building Modern Distributed Systems with Java

Offered By: Packt via Coursera

Tags

Distributed Systems Courses Databases Courses Java Courses Microservices Courses Load Balancing Courses Asynchronous Communication Courses

Course Description

Overview

Save Big on Coursera Plus. 7,000+ courses at $160 off. Limited Time Only!
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

Related Courses

Designing Applications for Kubernetes
A Cloud Guru
Docker - Deep Dive
A Cloud Guru
Amazon API Gateway for Serverless Applications
Amazon Web Services via AWS Skill Builder
Amazon API Gateway for Serverless Applications (Simplified Chinese)(中文配音版)
Amazon Web Services via AWS Skill Builder
Amazon API Gateway for Serverless Applications (Traditional Chinese)
Amazon Web Services via AWS Skill Builder