-
基于 netty4 手写 rpc-13-callType 调用方式
callType 调用方式
说明
不同的场景我们会希望有不同的调用方式。
常见的有三种调用方式:
(1)sync 同步调用
(2)async 异步调用
(3)oneWay 单向调用
个人感觉(1)(3)是最常见的需求,所以本次优先实现了这两种。
实现思路
不同的调用方式只是处理的行为不同而已。
可以将这个配置传递,分别在 client/server 的端进行相应的处理。
...
2018-08-24 08:23:15 |
Java
-
基于 netty4 手写 rpc-12-load balance 负载均衡
load balance
当我们有多个服务端时,就需要负载均衡进行选择。
策略
负载均衡的策略有很多,比如随机选择,权重选择,最小负载等等。
实现思路
直接将所有可以选择的服务端列举出来,通过实现对应的策略,选择一个即可。
代码实现
接口
为了便于拓展,我们定义一个接口。
/*
* Copyright (c) 2019. houbinbin Inc.
* rpc Al...
2018-08-24 08:23:15 |
Java
-
基于 netty4 手写 rpc-11-register center 注册中心
register 注册中心
上一节我们实现了 register 注册中心的基本实现,当然客户端和服务端也需要相关的实现调整。
服务端
ServiceRegistry
接口
调整如下:
package com.github.houbb.rpc.server.registry;
/**
* 服务注册类
* (1)每个应用唯一
* (2)每个服务的暴露协议应该保持一致
* 暂...
2018-08-24 08:23:15 |
Java
-
基于 netty4 手写 rpc-10-register center 注册中心
register 注册中心
需求
服务的注册与发现,是一个很常见也很有用的需求。
可以让我们不关心服务端的 ip 信息,只关心服务本身。
思路
实现的方式
SimpleRpcRegister 为 rpc 提供的默认实现方案。
实际可以结合 redis,zk 等常见的成熟框架实现。
其实可以把 register 当做是服务端,此时的 server/client 都是客户端。
...
2018-08-24 08:23:15 |
Java
-
java 从零开始手写 RPC (07)-timeout 超时处理
《过时不候》
最漫长的莫过于等待
我们不可能永远等一个人
就像请求
永远等待响应
超时处理
java 从零开始手写 RPC (01) 基于 socket 实现
java 从零开始手写 RPC (02)-netty4 实现客户端和服务端
java 从零开始手写 RPC (03) 如何实现客户端调用服务端?
java 从零开始手写 RPC (04) 序列化
java 从零开始...
2018-08-24 08:23:15 |
Java
-
java 从零开始手写 RPC (06) reflect 反射实现通用调用之客户端
通用调用
java 从零开始手写 RPC (01) 基于 socket 实现
java 从零开始手写 RPC (02)-netty4 实现客户端和服务端
java 从零开始手写 RPC (03) 如何实现客户端调用服务端?
java 从零开始手写 RPC (04) -序列化
上一篇我们介绍了,如何实现基于反射的通用服务端。
这一节我们来一起学习下如何实现通用客户端。
因为内容较...
2018-08-24 08:23:15 |
Java
-
java 从零开始手写 RPC (05) reflect 反射实现通用调用之服务端
通用调用
java 从零开始手写 RPC (01) 基于 socket 实现
java 从零开始手写 RPC (02)-netty4 实现客户端和服务端
java 从零开始手写 RPC (03) 如何实现客户端调用服务端?
java 从零开始手写 RPC (04) -序列化
前面我们的例子是一个固定的出参和入参,固定的方法实现。
本节将实现通用的调用,让框架具有更广泛的实用性。
...
2018-08-24 08:23:15 |
Java
-
java 从零开始手写 RPC (04) -序列化
序列化
java 从零开始手写 RPC (01) 基于 socket 实现
java 从零开始手写 RPC (02)-netty4 实现客户端和服务端
java 从零开始手写 RPC (03) 如何实现客户端调用服务端?
前面几节我们实现了最基础的客户端调用服务端,这一节来学习一下通讯中的对象序列化。
为什么需要序列化
netty 底层都是基于 ByteBuf 进行通讯的。
...
2018-08-24 08:23:15 |
Java