gitwtfhub

wtf is easy-rpc?

coderleixiaoshuai/easy-rpc — explained in plain English

Analysis updated 2026-07-21 · repo last pushed 2022-10-26

69JavaAudience · developerComplexity · 3/5DormantSetup · moderate

TL;DR

A hands-on Java learning project that teaches you how to build a simple RPC framework from scratch, simulating a mini version of Dubbo using Spring Boot, Netty, and ZooKeeper.

Mindmap

mindmap
  root((repo))
    What it does
      Teaches RPC basics
      Simulates Dubbo
      Learn by doing
    Tech stack
      Java
      Spring Boot
      Netty
      ZooKeeper
    How it works
      Custom annotations
      Service registration
      Dynamic proxy
      Spring Boot starter
    Use cases
      Learn distributed systems
      Understand service discovery
      Study network communication
      Build a mini RPC
    Audience
      Java developers
      Distributed systems learners

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Why would anyone build with this?

REASON 1

Build your own mini RPC framework in Java to understand how remote service calls work.

REASON 2

Learn how ZooKeeper handles service registration and discovery in a distributed setup.

REASON 3

Study custom annotations and dynamic proxy patterns used to make remote calls feel local.

REASON 4

Practice Spring Boot auto-configuration by plugging the RPC starter into a standard app.

What's in the stack?

JavaSpring BootNettyZooKeeper

How it stacks up

coderleixiaoshuai/easy-rpcredis/docszhisheng17/mybatis
Stars696966
LanguageJavaJavaJava
Last pushed2022-10-262017-04-23
MaintenanceDormantDormant
Setup difficultymoderatemoderatemoderate
Complexity3/52/52/5
Audiencedeveloperdeveloperdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you spin it up?

Difficulty · moderate Time to first run · 30min

Requires a running ZooKeeper instance plus Java and Spring Boot, which means setting up an external dependency before the framework can function.

The explanation does not mention a license, so the terms of use are unknown.

Wtf does this do

easy-rpc is a hands-on learning project that walks Java developers through building their own RPC (remote procedure call) framework from scratch. An RPC framework is what lets different parts of an application talk to each other across a network as if they were running on the same machine. The author built this project specifically so other developers could learn by doing rather than just reading someone else's source code. The project simulates a simplified version of Dubbo, a widely-used RPC framework in the Java ecosystem. On the server side, you mark a service with a custom annotation to expose it over the network. The service gets registered in ZooKeeper, which acts as a directory that keeps track of which services are available and where they live. On the client side, you use another annotation to automatically get a reference to that remote service, and then you can call its methods as though it were a local object. Under the hood, the project uses Netty for network communication, Java reflection, and dynamic proxy techniques to make the remote calls feel seamless. It also packages everything as a Spring Boot starter, so it plugs into a standard Spring Boot application with just a dependency and a couple of config lines. The primary audience is Java developers who want to deepen their understanding of how distributed service frameworks actually work. Rather than using a production-grade tool as a black box, you build a mini version yourself and learn the moving parts: service registration and discovery, network communication, custom annotations, Spring Boot auto-configuration, and more. The author pairs the code with a written tutorial series, making it approachable for someone who wants guided, step-by-step learning. The project is upfront about being a low-performance, educational tool, not something you would use in production. The tradeoff is intentional: by keeping the implementation simple, the code stays readable and approachable for learners, which matters more here than speed or reliability. The README doesn't go into detail about advanced features like load balancing or circuit breaking, though it hints that those concepts are part of the broader RPC landscape the series aims to cover over time.

Yoink these prompts

Prompt 1
Help me set up the easy-rpc project locally. I have Java and Spring Boot installed. Walk me through cloning the repo, starting ZooKeeper, and running both the server and client sides step by step.
Prompt 2
Using the easy-rpc project as reference, explain how the custom service annotation exposes a Java service over the network via Netty, and show me how to add a new service endpoint of my own.
Prompt 3
Walk me through how the client-side reference annotation works in easy-rpc. How does the dynamic proxy intercept method calls and send them over the network as if the remote service were local?
Prompt 4
Based on the easy-rpc codebase, help me trace the full lifecycle of a single RPC call from the moment the client invokes a method to when the server returns the result, including ZooKeeper lookup.
Prompt 5
The easy-rpc README says it covers service registration, discovery, and Spring Boot auto-configuration. Help me add a simple load balancing strategy to the client-side proxy as a learning exercise.

Frequently asked questions

wtf is easy-rpc?

A hands-on Java learning project that teaches you how to build a simple RPC framework from scratch, simulating a mini version of Dubbo using Spring Boot, Netty, and ZooKeeper.

What language is easy-rpc written in?

Mainly Java. The stack also includes Java, Spring Boot, Netty.

Is easy-rpc actively maintained?

Dormant — no commits in 2+ years (last push 2022-10-26).

What license does easy-rpc use?

The explanation does not mention a license, so the terms of use are unknown.

How hard is easy-rpc to set up?

Setup difficulty is rated moderate, with roughly 30min to a first successful run.

Who is easy-rpc for?

Mainly developer.

View the repo → Decode another repo

This repo across BitVibe Labs

Don't trust strangers blindly. Verify against the repo.