RPC 设计与实现

2023-11-06

RPC 设计与实现

互联网架构演变(微观)

在这里插入图片描述

  • 单一架构,以实现功能为目的,扩展性差 - 数据访问层问题
  • 垂直架构,业务拆分,各司其职 - 控制层 M |V解耦
  • 分布式服务,服务间的相互调度 - RPCremote process call
  • 流动式计算,伸缩性,扩展性 - SOA治理

高并发互联网架构设计(宏观)

  • X轴:水平扩展,应用具有可复制性木桶原理
  • Y轴:垂直拆分各司其职 泳道设计
  • Z轴:将X/Y打包,做物理隔离

RPC 系统间通讯实现手段

  • 即时消息-点对点 消息发送和接收方必须同时在线 WebService-SOAP tcp/ip数据传输层
  • 离线消息- 异步消息 不要求消息发送方和接收方同时在线email MQ

TCP/IP通讯 | UDP- 网络编程

  • IO 非常重要 BIO/NIO

    • BIO

      • FileInputStream、FileOutputStream 字节流
      • BufferedReader/BufferedWriter 字符流
      • InputStreamReader、OutputStreamWriter 桥转换
      • PrintStream、PrintWriter
      • ObjectInputStream|ObjectOutputStream 序列化
    • NIO

      • FileChannel
      • ByteBuffer

      :磁盘 --> FileChannel#read–>ByteBuffer(变量)

      :ByteBuffer(变量)–>FileChannel#write–>磁盘

      只读FileChanel: FileInputStream#getChannel();

      可写FileChanel: FileOutputStream#getChannel();

      ByteBuffer常见操作
      在这里插入图片描述

      FileChannel inFileChannel=new FileInputStream("C:\\Users\\Administrator\\Desktop\\FeiQ2013.exe").getChannel();
      FileChannel outFileChannel=new FileOutputStream("C:\\Users\\Administrator\\Desktop\\FeiQ2018.exe").getChannel();
      
      //创建ByteBuffer
      ByteBuffer buffer=ByteBuffer.allocate(1024);
      while(true){
             
          buffer.clear();
          int n = inFileChannel.read(buffer);
          if(n==-1) break;
          buffer.flip();
          outFileChannel.write(buffer);
      }
      
      inFileChannel.close
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RPC 设计与实现 的相关文章

  • 4.three.js详解PBR物理渲染

    1 标准网格材质 import as THREE from three 导入轨道控制器 import OrbitControls from three examples jsm controls OrbitControls 导入动画库 im
  • java之路 —— 带你了解安全框架Shiro

    文章目录 前言 一 组件 二 主要开发步骤 三 常用的API 四 认证的流程 前言 在学习之前 让我们先了解一下什么是shiro Shiro Apache Shiro 是一个Java安全框架 提供了身份认证 授权 加密和会话管理等功能 它的
  • nginx重启报找不到nginx.pid的解决方法

    nginx被停止 nginx s stop 或者直接杀掉了进程 kill 9 nginx的进程号 后 调用命令 nginx s reload 或者 nginx s reopen 会报错 无法找到 var run nginx pid 文件 这
  • 以树状结构显示文件夹

    以树状结构显示文件夹 题目要求 编写程序 在命令行中以树状结构显示特定的文件夹及其子文件夹 如果子文件是文件则需要显示文件大小 最后统计整个目录的大小 public class Test static long fileNum 0 stat
  • 华为OD机试 C++ 报数问题

    题目 你和你的朋友们围成一个圈玩游戏 从第一个人开始 依次报数 1 2 3 当数到3的时候 那个人就得退出游戏 然后从他的下一个朋友继续开始 1 2 3 同样的 数到3的人又得退出 这样一直进行下去 直到圈里只剩下一个人 人会是谁 任务 给
  • Android Studio更新升级方法

    android studio一直在更新完善 为了与时俱进 我们当然要将工具更新到最新版本啦 其实更新本来是很简单 只要从Android Studio Help菜单中选择Check for Update即可 但因为 伟大的墙 实际更新失败 下
  • JS浏览器调试:Browser对象

    好久不搞前端 最近在搞钉钉的第三方应用的时候 前端给我露了一手 涉及到知识主要是JavaScript的Browser对象 首先现在很多PC客户端现在技术选型选择会选择nodejs这类 像nw js或者Electron 都会涉及到chromi
  • 给input框赋值成功后input框不能进行编辑

    选中一项后 input框不能进行编辑
  • 【工具】(z-library平替)Clibrary中文图书馆,电子书大全

    目录 新版目录 更新于2023 7 11 一 更新时间和简介 二 步骤 老版目录 接口无法使用 1 z library和Clibrary简介 2 Clibrary网址 3 具体操作界面 新版目录 更新于2023 7 11 一 更新时间和简介
  • three.js 制作地球标注的两种方法

    一 Sprite精灵标签 效果图 精灵标签 标签永远面向相机 function createTxt position name var texture new THREE CanvasTexture getCanvasFont var fo
  • 自学——一个月入门前端④

    本文的内容有关css盒模型 盒模型 在css中 所有的元素都被一个个的 盒子 包围着 广泛的使用两种盒子 块级盒子和内联盒子 这两种盒子会在页面流和元素之间的关系 block 绝大部分情况下盒子会和父容器一样宽 每个盒子都会换行 width
  • C/C++判断指针是否为空

    if p NULL if NULL p if p nullptr if nullptr p if p 0 if 0 p if p false if false p if p 个人理解 如有不对 敬请指正 最佳判断是if p 因为 p是一个指
  • 02-分布式协调服务ZooKeeper

    目录 一 ZooKeeper简介 1 什么是Zookeeper 2 基本特性 二 ZooKeeper原理 1 系统架构 1 1 角色分工 1 2 设计思想 1 3 为什么要引入Observer ZK 3 3 0 2 数据模型 2 1 Zno
  • 花书+吴恩达深度学习(二六)近似推断(EM, 变分推断)

    文章目录 0 前言 1 将推断视为优化问题 1 1 期望最大化 EM 1 2 最大后验推断 MAP 1 3 稀疏编码 2 变分推断 2 1 离散型潜变量 2 2 连续性潜变量 如果这篇文章对你有一点小小的帮助 请给个关注 点个赞喔 我会非常
  • 【Redis】持久化之AOF

    Redis持久化之AOF 以日志的形式来记录每个写操作 增量保存 将Redis执行过的所有写指令记录下来 读操作不记录 只许追加文件但不可以改写文件 redis启动之初会读取该文件重新构建数据 换言之 redis 重启的话就根据日志文件的内
  • 【element】之el-popconfirm:弹出组件确认按钮绑定

    element之el popconfirm 弹出组件确认按钮绑定 一 element官网说明 element中el popconfirm实例 element提供的接口 二 实际代码说明 无用代码 正确代码 一 element官网说明 ele
  • 通过bilibili_api获取bilibili弹幕+绘制词云的方法!

    由于自己学艺不精 后续词云的简略代码没怎么看懂 梳理了一遍把整个的学习内容记录下来 主要参考的为bilibili api的教程和词云的生成教程 https blog csdn net itanders article details 888
  • 华为b6手环能升级鸿蒙吗,华为手环B6全新发布:跨界形态再升级 强劲性能革新穿戴体验...

    2020年7月30日 北京 今日 华为正式推出了融合耳机和手环形态的跨界穿戴智能手环华为手环B6 它采用1 53英寸高清3D弧面柔性屏 外观时尚 操控自如 独创的分离式设计 让这款产品兼具蓝牙耳机的舒适佩戴和华为智能手环的专业运动健康功能
  • [Ubuntu] [Qt] Ubuntu18.04.6安装Qt后打不开

    1 安装完Qt5 15 2后点击图标没反应 2 通过指令打开Qt 可以看到失败的原因是因为glibc 2 28没找到 Qt Tools QtCreator bin qtcreator software Qt Tools QtCreator

随机推荐

  • labelimg 修正模型错误标注遇到的问题

    场景介绍 使用了 模型 如YOLOv5 v7 detec py 保存的 YOLO 格式的结果 包括测试的图像和对应的 txt 文件 模型跑出来的结果可能不够准确 需要手工修正下 因此我需要使用 labelimg 来可视化图像 并且修改其标注
  • Tomcat安装版和解压版

    在eclipse中开发web项目经常需要在eclipse中添加tomcat服务器 之前下载了目前最新版本tomcat9的zip版 由于目前的eclipse只支持到tomcat8 原本准备就这样安装了 在浏览器输入了n次http localh
  • redis持久化操作RDB和AOF详解与操作(docker)

    redis持久化 Redis 提供了两种不同的持久化方法来将数据存储到硬盘里面 一种方法叫快照 snapshotting RDB 它可以将存在于某一时刻的所有数据都写入硬盘里面 另一种方法叫只追加文件 append only file AO
  • SVR4/4.3BSD与Linux对待伪终端的不同方式

    打开伪终端意味着打开了一个 终端对 这个终端对的其中一个是主终端 另一个是从终端 简单说主终端和类似sshd telnetd等用户空间的远程协议处理进程连接 而从终端则和shell之类的实际进程连接 在处理远程登录的时候 一般都是由远程协议
  • uniapp uview2 使用笔记

    创建项目安装组件 npm install uview ui 配置 引入uView主JS库 在项目src目录中的main js中 引入并使用uView的JS库 注意这两行要放在import Vue之后 main js import uView
  • 毕业设计-基于深度学习的肺炎医学 CT 图像分类算法研究

    目录 前言 课题背景和意义 实现技术思路 一 数据集及数据预处理 二 卷积神经网络 CNN 网络技术 三 分类模型结构与方法 三 基于改进的 Inception ResNet 的分类网络 实现效果图样例 最后 前言 大四是整个大学期间最忙碌
  • 解析网页-selenium-非常实用-python爬虫知识点7

    selenium 一 引入 二 配置Selenium chromdriver 三 Selenium的基本操作 一 设置驱动 退出驱动 driver webdriver Chrome 路径 driver quit 二 网页打开 关闭等基本操作
  • Spring Boot中优雅的判断请求来源设备并跳转对应的页面-Site preference

    在Spring Boot中优雅的判断请求来源设备并跳转对应的页面 Device detection这篇文章中已经对Spring Mobile有过简单的介绍 这里介绍的是Spring Mobile的另一种类似的方法 Site preferen
  • 结合ChatGPT制作PPT

    今天看到圈友的一个AI分享 然后自己本身需要做一个分享的PPT 刚好那着帖子实战一下 先说下整体感受 优点 制作成本确实会比较低 很熟练的话大概就是1分钟一个都有可能 整体流程是先找个第三方PPT制作网站 看下支不支持文本转PPT功能 有这
  • ASP.NET导出Excel文件

    将页面显示的订单表导出Excel文件 步骤 定义导出Excel文件的方法 private void Export string FileType string FileName Response Charset GB2312 Respons
  • Mysql_常用函数

    Mysql 常用函数 Mysql 常用字符串函数 函数 功能 concat s1 s2 sn 连接s1 s2 sn为一个字符串 insert str x y instr 将字符串str从第x位置开始 y个字符长的字串替换为字符串instr
  • 分布式发展过程

    目录 1 分布式的演变过程 1 分布式的演变过程 框架的演变过程 友情链接 分布式的演变过程 友情链接 2 分布式架构的演进 初始阶段架构 初始阶段 的小型系统 应用程序 数据库 文件等所有的资源都在一台服务器上通俗称为LAMP 特征 应用
  • opencv基础-环境配置&官方文档&源码编译

    opencv环境配置 官方文档 源码编译 前言 一 官方下载网址 二 官方文档地址 三 安装教程 1 包下载 2 环境配置 1 为什么要配置环境 2 环境变量 3 系统环境 四 配置vs工程环境 vs2019 opencv4 6 0 1 v
  • Kubernetes学习笔记之Deployment篇(六)

    Deployment概念 Kubernetes Deployment是Kubernetes中的一个控制器对象 用于管理应用程序的部署 它管理和自动更新应用程序的ReplicaSets 并确保应用程序在任何时候都有一定数量的可用实例 Depl
  • IP3 三阶交调截取点测试(转帖)

    放大器 混频器和振荡器的通用规范 本文介绍并定义了在混频器 放大器和振荡器的数据资料中用到的RF术语 包括增益 变频增益 相位噪声 三阶截取点 P1dB 插入损耗 输出功率 调谐增益和调谐范围 另外还给出了图形和图像以阐明关键的概念 这些在
  • Grouped Query Attention论文阅读

    论文 GQA Training Generalized Multi Query Transformer Models from Multi Head Checkpoints 1 背景介绍 Google在2023年发表的一篇关于Transfo
  • MATLAB求解矩阵特征值的六种方法

    MATLAB求解矩阵特征值的六种方法 关于这个特征值的求解一共六种方法 幂法 反幂法 QR方法 对称QR方法 jacobi方法 二分法 接下来就着重讲解这些算法的是如何使用的 幂法 算法如下 输入 矩阵A 非零矢量x0 maxit 2000
  • openGL之API学习(二十七)glEnable

    开启服务器端的opengl功能 void glEnable GLenum cap GL BLEND If enabled blend the computed fragment color values with the values in
  • LeetCode416-分割等和子集(经典01背包问题—动态规划)

    目录 思路 什么是01背包问题 01背包问题空间复杂度优化 滚动数组 本题代码 本题空间复杂度优化 滚动数组 给你一个 只包含正整数 的 非空 数组 nums 请你判断是否可以将这个数组分割成两个子集 使得两个子集的元素和相等 示例 1 输
  • RPC 设计与实现

    RPC 设计与实现 互联网架构演变 微观 单一架构 以实现功能为目的 扩展性差 数据访问层问题 垂直架构 业务拆分 各司其职 控制层 M V解耦 分布式服务 服务间的相互调度 RPCremote process call 流动式计算 伸缩性