Fish Skin RPC Frame
From 0 to 1, take you to develop your own RPC framework
Fish skin original project tutorial series: https://yuyuanweb.feishu.cn/wiki/SePYwTc9tipQiCktw7Uc7kujnCd
Project Introduction
A high-performance RPC framework based on Java + Etcd + Vert.x, uses a novel technology stack to lead everyone to develop wheels from 0 to 1. The tutorials are from shallow to deep, and you can learn and practice Vert.x-based network servers, serializers, Etcd and ZooKeeper-based registration centers, reflections, dynamic agents, custom network protocols, multiple design patterns (singleton/factory/decorators, etc.), load balancer design, retry and fault tolerance mechanisms, Spring Boot Starter annotation-driven development, etc., greatly improving architectural design capabilities.
The project is divided into basic and extended versions:
- The basic version can be written on the resume in just a few hours~
- The extended version will be a technical project full of highlights, and will be paired with a business project to make the resume more competitive.
Start learning or learn more: Handwritten RPC Framework (24 years of latest)
Open source address: https://github.com/liyupi/yu-rpc
Chapter 1 of the tutorial can be learned for free
Instruction Video - RPC Explanation
Project display
Directory structure:

Detailed nanny-level text tutorial:

Technical selection
rear end
Backend technology is mainly Java, but all ideas and designs can be reused to other languages, and the code is just different.
- ️ Vert.x framework
- ️ Etcd cloud native storage middleware (jetcd client)
- ZooKeeper distributed coordination tool (curator client)
- ️ SPI mechanism
- ️ Multiple serializers
- JSON Serialization
- Kryo Serialization
- Hessian Serialization
- ️ Multiple design modes
- Double check lock singleton mode
- Factory model
- Agent Mode
- Decorator mode
- ️ Spring Boot Starter Development
- Reflection and annotation drive
- Guava Retrying Retry Library
- JUnit Unit Testing
- Logback log library
- Hutool, Lombok tool library
Source Code Directory
- yu-rpc-core: Fish Skin RPC framework core code
- yu-rpc-easy: Fish Skin RPC Frame Simple Version (suitable for beginners)
- example-common: Example code common module
- example-consumer: Example service consumers
- example-provider: sample service provider
- example-springboot-consumer: Sample service consumer (Spring Boot framework)
- example-springboot-provider: Sample service provider (Spring Boot framework)
- yu-rpc-spring-boot-starter: Annotation-driven RPC framework that can be used quickly in Spring Boot projects
Project Tutorial Outline
This project has a lot of content, so you can see if you have any knowledge points you want to learn.
Chapter 1: RPC Framework Simple Version
- RPC basic concepts and functions
- RPC framework implementation ideas | Basic design
- RPC framework implementation ideas | Extended design
- Simple version of RPC development | Project initialization
- Simple version of RPC development | web server
- Simple version of RPC development | Local service registrant
- Simple version of RPC development | Serializer
- Simple version of RPC development | Request processor
- Simple version of RPC development | Consumer agent
- Simple version of RPC development | Test verification
Chapter 2: RPC framework extension version
- Global configuration loading | Extended version project initialization
- Global configuration loading | Configuration loading implementation
- Global configuration loading | Maintain global configuration objects
- Interface Mock Design and Implementation
- Serializer | Comparison of mainstream serializers
- Serializer | Multiple serializer implementations
- Serializer | SPI mechanism
- Serializer | Extensible Serializer Implementation (SPI + Factory Mode)
- Registration Center | Registration Center Core Competencies
- Registration Center | Registration Center Technical Selection
- Registration Center | Getting Started with Etcd Cloud Native Middleware
- Registration Center | Implementation of Registration Center based on Etcd
- Registration Center | Extensible Registration Center Implementation (SPI + Factory Mode)
- Registration Center Optimization | Heartbeat Detection and Renewal Mechanism
- Registration Center Optimization | Service Node Offline Mechanism
- Registration Center Optimization | Consumer Service Cache
- Registration Center Optimization | Cache Update (Etcd Listening Mechanism)
- Registration Center Optimization | ZooKeeper Registration Center Implementation
- Custom protocol | Requirements analysis and solution design
- Custom Protocol | Message Structure Design (refer to Dubbo)
- Custom Protocol | Network Transmission Design (Implementing TCP Server Based on Vert.x)
- Custom Protocol | Encoder/Decoder
- Custom Protocol | TCP Request Processor
- Custom Protocol | TCP Request Client
- Custom protocol | Analysis of sticky half-package problem
- Custom Protocol | Use Vert.x to Solve Sticky Half Package Issues
- Custom Protocol | Client Code Optimization (Decorator Mode)
- Load balancing | Load balancing concept and common algorithms
- Load Balancing | Consistent Hash
- Load balancing | Multiple load balancing implements
- Load Balancing | Scalable Load Balancer Implementation (SPI + Factory Mode)
- Retry mechanism | Retry waiting policy
- Retry Mechanism | Retry Solution Design
- Retry mechanism | Implementation of multiple retry strategies
- Retry Mechanism | Extensible Retry Policy Implementation (SPI + Factory Mode)
- Fault-tolerant mechanism | Fault-tolerant policies and implementation methods
- Fault-tolerant mechanism | Fault-tolerant solution design
- Fault-tolerant mechanism | Implementation of multiple fault-tolerant strategies
- Fault-tolerant mechanism | Scalable fault-tolerant policy implementation (SPI + factory model)
- Startup Mechanism | Framework Quick Start Class
- Startup Mechanism | Annotation Driven Design
- Startup mechanism | Spring Boot Starter annotation driver implementation
- Project expansion ideas
Complete project tutorial study
Click to join the programming navigation, and all original projects in the past can be learned.