• 【其他】【RPC】RPC 框架的结构和设计


    RPC 框架的结构

    一个最简单的 RPC 框架分成三个部分:注册中心、服务端、客户端。以下是一个最简单的结构流程图。
    RPC框架最简单的结构
    组成部分:

    1. 注册中心:用于注册和获取服务。
    2. 服务端:指提供服务的一方,也叫服务提供方 Provider
    3. 客户端:指调用服务的一方,也叫服务消费者 Consumer

    流程:

    1. 服务端把服务信息注册到注册中心,通常包含服务端地址、接口类和方法
    2. 客户端从注册中心获取对应服务的信息
    3. 客户端根据服务的信息,通过网络调用到服务端的接口

    RPC 框架的设计

    上面的流程有很多细节没有画出来,例如:

    1. 服务端以什么形式注册到注册中心?
    2. 客户端是怎么做到像调用接口一样调用服务?
    3. 调用服务的网络协议是怎样的?

    一个基本的 RPC 框架,需要包含以下部分:

      1. 注册中心:注册中心负责服务信息的注册与查找。服务端在启动的时候,扫描所有的服务,然后将自己的服务地址和服务名注册到注册中心。客户端在调用服务之前,通过注册中心查找到服务的地址,就可以通过服务的地址调用到服务啦。常见的注册中心有 ZookeeperEureka 等。
      2. 动态代理:客户端调用接口,需要框架能自己根据接口去远程调用服务,这一步是用户无感知的。这样一来,就需要使用到动态代理,用户调用接口,实际上是在调用动态生成的代理类。常见的动态代理有:JDK ProxyCGLibJavassist 等。
      3. 网络传输:RPC 远程调用实际上就是网络传输,所以网络传输是 RPC 框架中必不可少的部分。网络框架有 Java NIONetty 框架等。
      4. 自定义协议:网络传输需要制定好协议,一个良好的协议能提高传输的效率。
      5. 序列化:网络传输肯定会涉及到序列化,常见的序列化有JsonProtostuffKyro 等。
      6. 负载均衡:当请求调用量大的时候,需要增加服务端的数量,一旦增加,就会涉及到符合选择服务的问题,这就是负载均衡。常见的负载均衡策略有:轮询、随机、加权轮询、加权随机、一致性哈希等等。
      7. 集群容错:当请求服务异常的时候,我们是应该直接报错呢?还是重试?还是请求其他服务?这个就是集群容错策略啦。
  • 相关阅读:
    hibernate中对象的3种状态:瞬时态(Transient)、 持久态(Persistent)、脱管态(Detached)
    object references an unsaved transient instance
    前端JS利用canvas的drawImage()对图片进行压缩
    js获取上传图片的尺寸大小
    多线程经典问题1——主线程子线程交替问题
    hdu 1689 Alien’s Necklace (bfs层次图剪枝)
    新炬数据库大师—暑期公益体验课
    怎样高速地安装Ubuntu SDK
    Spring boot 整合spring Data JPA+Spring Security+Thymeleaf框架(上)
    iOS 合并.a文件,制作通用静态库
  • 原文地址:https://www.cnblogs.com/zzsuje/p/15117308.html
Copyright © 2020-2023  润新知