
👊 从零开始设计一个轻量级的分布式 RPC 框架
文章平均质量分 91
📖 Spring + Netty + Zookeeper + Protostuff 从零开始设计实现一个轻量级的分布式 RPC 框架,内含详细设计思路以及开发教程,通过造轮子的方式来学习,深入理解 RPC 框架的底层原理
飞天小牛肉
公众号 @飞天小牛肉
展开
-
从零开始设计一个轻量级分布式 RPC 框架
本项目基于 Spring + Netty + Zookeeper + Protostuff 从零开始设计实现一个轻量级的分布式 RPC 框架,内含详细设计思路以及开发教程,通过造轮子的方式来学习,深入理解 RPC 框架的底层原理。相比简历上一律的 xxxx 系统,造轮子很显然更能赢得面试官的青睐原创 2020-12-19 22:36:52 · 1953 阅读 · 3 评论 -
什么是 RPC 及其原理【前置知识点】
RPC(Remote Procedure Call)远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。比如两个不同的服务 A、B 部署在两台不同的机器上,那么服务 A 如果想要调用服务 B 中的某个方法该怎么办呢?使用 HTTP 请求当然可以,但是可能会比较麻烦。 RPC 的出现就是为了让你调用远程方法像调用本地方法一样简单。原创 2020-12-19 23:07:49 · 584 阅读 · 1 评论 -
Dubbo 架构及工作原理【前置知识点】
把 Dubbo 放在本教程的原因是本框架是仿 Dubbo 的架构来实现的,学习 Dubbo 有助于我们在自己动手实现 RPC 框架的时候有更清晰的思路。原创 2020-12-20 12:34:02 · 383 阅读 · 1 评论 -
SpringBoot + Dubbo + Zookeeper 搭建一个简单的分布式服务【前置知识点】
把这章放在本教程中,也是因为本框架开发完成后,使用的步骤基本和 Dubbo 差不多,了解 Dubb 的使用有助于我们在自己动手实现 RPC 框架的时候有更清晰的思路原创 2020-12-20 15:14:57 · 335 阅读 · 0 评论 -
Zookeeper 重要概念详解【前置知识点】
ZooKeeper 是一个开源的分布式协调服务,它的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供给用户使用。原创 2020-12-20 16:00:14 · 316 阅读 · 0 评论 -
Zookeeper 安装与基本使用【前置知识点】
Zookeeper 安装与 Zookeeper 客户端的开源框架 Curator / ZkClient 的基本使用原创 2020-12-20 16:01:50 · 284 阅读 · 0 评论 -
彻底读懂 Java 反射【前置知识点】
在 Java 运行时环境中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为 Java 语言的反射机制原创 2020-12-20 20:34:30 · 340 阅读 · 0 评论 -
使用 Zookeeper 实现服务注册与发现【框架代码分析】
注册中心负责服务地址的注册与查找,相当于目录服务。服务端启动的时候将服务名称及其对应的地址(ip+port)注册到注册中心,服务消费端根据服务名称找到对应的服务地址。有了服务地址之后,服务消费端就可以通过网络请求服务端了。原创 2020-12-20 15:16:08 · 583 阅读 · 0 评论 -
序列化介绍以及序列化协议对比【前置知识点】
序列化: 将数据结构或对象转换成二进制串的过程反序列化:将在序列化过程中所生成的二进制串转换成数据结构或者对象的过程原创 2020-12-20 20:35:41 · 903 阅读 · 0 评论 -
序列化协议 Protostuff 基本使用【前置知识点】
protostuff 是针对 Java 的序列化框架,基于 Google protobuf,但是提供了更多的功能和更简易的用法。虽然更加易用,但是不代表 ProtoStuff 性能更差。原创 2020-12-20 20:37:33 · 372 阅读 · 0 评论 -
网络传输实体类与序列化【框架代码分析】
RpcRequest 封装 RPC 请求,RpcResponse 封装 RPC 响应,要在网络传输数据就必然涉及到序列化和反序列化,本框架使用 Ptotostuff 实现原创 2020-12-20 20:45:49 · 302 阅读 · 0 评论 -
Java 网络编程 — Socket 编程【前置知识点】
网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来。学习 Socket 网络编程有助于我们了解 Netty原创 2020-12-21 11:45:02 · 303 阅读 · 0 评论 -
从 BIO、NIO 到 Netty【前置知识点】
详细讲解从 BIO、NIO 到 Netty 的发展史原创 2020-12-21 11:46:15 · 443 阅读 · 0 评论 -
Netty 实战:实现聊天功能【前置知识点】
通过本实例掌握 Netty 的基本使用原创 2020-12-21 11:47:25 · 276 阅读 · 0 评论 -
Netty 是如何实现 TCP 心跳机制与断线重连的【前置知识点】
所谓心跳机制 / 心跳检测, 即在 TCP长连接中 , 客户端每隔一小段时间向服务器发送一个数据包,通知服务器自己仍然在线, 以确保 TCP连接的有效性.原创 2020-12-21 11:48:01 · 714 阅读 · 0 评论 -
Spring 之 IoC 详解【前置知识点】
Spring 是分层的 Java SE/EE应用 full-stack 轻量级开源框架,以 IoC(Inverse Of Control: 控制反转)和 AOP(Aspect Oriented Programming:面向切面编程)为内核,提供了展现层 Spring MVC 和持久层 Spring JDBC 以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多著名的第三方框架和类库,逐渐成为使用最多的Java EE 企业应用开源框架。原创 2020-12-21 11:49:01 · 238 阅读 · 0 评论 -
Java 注解【前置知识】
Java 注解 Annotation 是从 Java5 开始添加到 Java 的。注解也是一种类的类型,他是用的修饰符为 @interface原创 2020-12-21 21:46:23 · 218 阅读 · 0 评论 -
编写 Netty / RPC 服务端【框架代码分析】
RPC 服务端要做的事有以下几点:第一点:接收(反序列化 / 解码)客户端的请求消息并获取客户端请求的方法名、参数类型、具体参数,然后通过反射调用客户端请求的方法第二点:将方法的执行结果封装进 RpcResponse 发送给客户端第三点:定义一个注解,用户可使用该注解暴露服务(仿 Dubbo)原创 2020-12-21 21:47:23 · 267 阅读 · 0 评论 -
一文读懂 Java 静态代理和动态代理【前置知识点】
代理模式简单来说就是我们使用代理对象来代替对真实对象(real object)的访问,这样就可以在不修改原目标对象的前提下,提供额外的功能操作,扩展目标对象的功能。原创 2020-12-21 21:50:25 · 458 阅读 · 0 评论 -
编写 Netty / RPC 客户端【框架代码分析】
RPC 客户端做的事情很简单:建立连接并向服务端发送请求 `send`(该方法的真正调用是在代理中)接收服务端的响应消息 `channelRead0`原创 2020-12-22 11:48:34 · 400 阅读 · 1 评论