RPC
概念
RPC框架:负责组装协议数据,调用传输层发送【框架】
例如Dubbo框架 openFeign框架 gRPC框架 Thrift框架
RPC协议:规定了数据的组织方式和和含义【网络层】
Dubbo 协议 HTTP协议 gRPC 协议 Thrift 二进制协议
传输:规定了数据如何在网络上移动【传输中间层】
Netty传输
底层:TCP【传输层】
TCP有粘包问题,因为它是基于字节流的,所以上层协议要定义一个消息头来定义包的大小
各种RPC框架

Netty
一、开局:从最原始的 BIO 说起
什么是 BO (Blocking I/O)?
模型:
ServerSocket.accept()阻塞等待连接,InputStream.read()阻塞等待数据。问题:一个连接一个线程。如果有1000个客户端,就得开1000个线程。线程是昂贵的资源(内存约1MB/线程,上下文切换开销大)。并发量一大,系统直接崩了
二、进阶:NIO 的出现(解决问题,但带来复杂度)
什么是 NIO (Non-blocking I/O)?
Channel 是通道,Buffer 是载体,Selector 是多路复用器。Channel 注册到 Selector,Selector 轮询就绪的 Channel,通过 Buffer 读写
三、Netty
放弃
IO复用
select
poll
epoll
openFeign使用
HTTP只是广义上的远程调用协议,openFeign也只是广义上的远程调用框架
基本使用
依赖
1 | <dependency> |
开启Feign:

定义Feign客户端

业务层调用:

超时配置

日志级别

请求拦截器

异常处理

负载均衡
只要服务注册到 Eureka / Nacos:自动负载均衡
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 夏天的风吹向哪里!
