![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
RPC
文章平均质量分 77
~Maple~
帅
展开
-
RPC 之负载均衡
RPC 之负载均衡为什么需要负载均衡假设有一次流量高峰,突然发现线上服务的可用率降低了,经过排查发现是有几台机器比较旧了,当流量达到高峰时,这几台机器由于负载太高,就扛不住压力,那怎么解决这种问题呢?首先我们可能会想到,在治理平台上调低这几台机器的权重,这样的话,流量自然就减少了。但是这样会导致服务可用率降低,业务请求受到影响,那 RPC 框架有没有什么智能负载的机制?能及时地控制服务节点接收到的访问量?什么是负载均衡当一个服务节点无法支撑现有的访问量时,会部署多个节点,组成一个集群,然后通过负原创 2021-10-24 14:53:52 · 597 阅读 · 0 评论 -
RPC 之路由策略
RPC 之路由策略为什么选择路由策略在真是环境中,我们的服务方是以集群的方式提供服务,这对于服务调用方来说,就是一个接口会有多个服务提供方同时提供服务,所以我们的 RPC 在每次发送请求的时候,都需要从多个服务提供方里面选择一个同于发请求的节点。既然这些节点都可以用来发送请求,那么我们就可以简单的认为这些节点是同质的,这里的同质就是请求无论发送到集群的哪个节点上,返回的结果都是一样的。既然服务提供方是以集群的形式对外提供服务,那就需要考虑一些实际问题。每次上线应用的时候都不止一台服务器会运行实例,那原创 2021-10-20 10:53:54 · 806 阅读 · 0 评论 -
RPC 中为啥需要健康检测
RPC 中为啥需要健康检测因为有了集群,每次发送请求前,RPC 框架会根据路由和负载均衡算法选择一个具体的 IP 地址。为了保证请求成功,就需要确保每次选择出来的 IP 对应的连接是健康的。但是调用方各个服务集群节点之间的网络状态是瞬息万变的,两者之间可能会出现闪断或者网络设备损坏等情况,那么怎么保证连接一定是可用的呢?终极的解决方案是让调用方实时感知到节点的状态变化,这样他们才能做出正确的选择。那么在 ROC 框架里面,怎么设计这台机制呢?健康检测的逻辑当服务方下线,正常情况下我们会收到连接断开原创 2021-10-20 10:52:50 · 495 阅读 · 0 评论 -
一文详解 RPC 中的注册中心
一文详解 RPC 中的注册中心为什么需要服务发现为了高可用,在生产环境中服务提供方都是以集群的方式对外提供服务,集群里面的这些 IP 随时可能会变化,我们需要一本“通信录”即时获取到对应的服务节点,这个获取的过程我们一般叫做“服务发现”。对于服务调用方和服务提供方来说,其契约就是接口。服务 IP 集合作为“通信录”中的地址,从而可以通过接口获取服务 IP 的集合来完成服务的发现,这就是 RPC 框架的服务发现机制。1.服务注册:在服务提供方启动的时候,将对外暴露的接口注册到注册中心之中,注册中心将原创 2021-10-17 21:47:22 · 1824 阅读 · 1 评论 -
浅谈动态代理在 RPC 中的应用
浅谈动态代理在 RPC 中的应用远程调用魔法话说动态代理在 RPC 中有啥作用呢?在项目中,当我们要使用 RPC 的时候,一般的做法是 先找服务提供方要接口,通过 Maven 等工具把接口依赖到我们项目中。如果要调用提供方的接口,就只需要通过依赖注入的方式把接口注入到项目中就行了,然后在代码里面直接调用接口的方法。但是接口里并不包含真实的业务逻辑,业务逻辑都在服务提供方应用里面,但我们通过调用接口方法,拿到了我们想要的结果,那在 RPC 中这是怎么完成的呢,答案就是动态代理。RPC 会自动给我们生原创 2021-09-22 11:15:42 · 293 阅读 · 0 评论 -
一文弄懂 RPC 中使用哪种网络 IO 模型
一文弄懂 RPC 中使用哪种网络 IO 模型常见的网络 IO 模型网络通信是整个 RPC 调用流程的基础,那 RPC 中使用哪种网络 IO 模型呢?常见的网络 IO 模型分为四种:同步阻塞 IO(BIO)、同步非阻塞 IO(NIO)、IO 多路复用和异步非阻塞 IO(AIO),其中最常用的就是同步阻塞 IO 和 IO 多路复用。阻塞IO(blocking IO)同步阻塞 IO 是最简单、最常见的 IO 模型,在 Linux 中,默认情况下所有的额socket 都是 blocking 的。应用进程原创 2021-09-22 11:14:10 · 262 阅读 · 0 评论 -
一文彻底弄懂 RPC 中的协议和序列化
一文彻底弄懂 RPC 中的协议和序列化一、协议协议的作用我们知道 RPC 需要将对象序列化成二进制数据,写入本地 Socket 中,然后被网卡发送到网络设备中进行网络传输。但是在传输过程中,RPC 并不会把请求参数的所有二进制数据整体一下子发送到对端机器上,中间可能会拆分成好几个数据包,也可能会合并其他请求的数据包(同一个 TCP 连接上的数据),至于怎么拆分合并,这其中的细节会涉及到系统参数配置和 TCP 窗口大小。对于服务提供方来说,他会从 TCP 通道里面收到很多的二进制数据,那这时候怎么识别出原创 2021-09-21 15:46:14 · 872 阅读 · 0 评论 -
一文弄懂 RPC 通信流程全过程
一文弄懂 RPC 通信流程全过程什么是 RPC 呢RPC 的全称是 Remote Procedure Call,即远程过程调用从字面意思可以知道,远程肯定是指要跨机器而非本机,需要网络编程才能实现。但是不是只要通过网络通信访问到另一台机器的应用程序,就可以称之为 RPC 调用了?其实 RPC 是帮助我们用来屏蔽网络编程细节,实现调用远程方法就跟调用本地方法(同一个项目中的方法)一样的简单,不需要因为网络编程而写很多与业务无关的代码。总之,RPC 的作用体现在两方面:屏蔽远程调用根本地调用的区别,原创 2021-09-21 12:45:18 · 2294 阅读 · 0 评论