手写RPC总结篇

news2024/12/24 9:42:34

在这里插入图片描述
协议制定:client到server做交互的通信协议,比如request response 网络端点peer

难点1 : Jetty嵌入

◆jetty Server
◆ServletContextHandler
◆ServletHolder

  • jetty server 起到网络监听的作用
  • ServletContextHandler注册到jetty server中
  • ServletHolder托管servlet
  • 具体数据的接收和写回都是在servlet里做的
  • 基于servlet做的网络处理

难点2 :动态代理

◆Proxy.newProxyInstance (创建动态代理对象)
◆RemoteInvoker implements InvocationHandler (最关键的是实现invoke()方法—调用了哪些方法,传递了哪些参数。通过二进制发送request对象,远程会返回一个response对象)

不足和展望:
安全性:

身份信息校验没做,https比http多了安全控制

序列化安全加密,建立网络连接时做身份验证

服务端处理能力:

server的transport是基于jetty做的,jetty本身是有线程池处理client请求的, 线程池最好自己做, 返回数据的通道最好做成队列形式。

注册中心:

对RPC锦上添花,起到对server地址的注册,client能够通过这个注册中心自动的去发现server的地址。

集成能力:

和其他框架的嵌入结合,比如springboot结合,比如做一个springboot starter,让他自动的创建server或client

bean factory自动创建代理对象。

基于redis实现的注册中心

更多负载均衡算法的实现

项目名称:基于Java语言实现的RPC框架

项目描述:

  • 实现轻量级RPC框架,使得客户端可以通过网络从远程服务端程序上请求服务
  • 注册中心部分使用Redis实现注册、订阅功能(可选)
  • 在客户端实现了基于一致性哈希算法的负载均衡(可选)
  • 动态代理部分使用JDK动态代理
  • 网络传输部分使用Http协议进行传输

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/650722.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

测试开发之Python自动化 Pytest 之 fixture

Pytest 之 fixture unittest 和 nose 都支持 fixture 的,但是 fixture 在 pytest 里使用更灵活。也算是 pytest 的一个闪光点吧可以理解为一个跟 setup 和 teardown 这种前后置类似的东西。但是比它们要强大、灵活很多 fixtur 当做参数传入 # -*- coding: utf-8 -*-import p…

图像处理实战02-yolov5目标检测

yolov5 YOLOv5 是一种目标检测算法,它是 YOLO (You Only Look Once) 系列算法的最新版本。YOLOv5 采用了一种新的架构,它包括一个基于 CSPNet (Cross Stage Partial Network) 的主干网络以及一系列改进的技巧,如多尺度训练、数据增强、网络混…

互联网行业-镭速文件传输系统方案

互联网行业是一个快速变化和高度竞争的行业,这一行业需要传输大量的数据、代码和文件。在互联网企业的生产和运营过程中,需要传输各种敏感和大型的文件,例如业务报告、数据分析、软件代码等。这些文件需要在不同的部门、不同的地点之间高效地…

微服务springcloud 07 hystrix + turbine 集群聚合监控

01.hystrix dashboard 一次只能监控一个服务实例&#xff0c;使用 turbine 可以汇集监控信息&#xff0c;将聚合后的信息提供给 hystrix dashboard 来集中展示和监控 02.新建 sp10-turbine 项目 03.pom.xml <?xml version"1.0" encoding"UTF-8"?&…

C语言---malloc(0)会产生什么结果,真的是空指针吗?

前言 &#xff08;1&#xff09;几天前在一个交流群中看到有人说&#xff0c;面试问malloc(0)会怎么样是真的恶心。 &#xff08;2&#xff09;这个突然激起了我的好奇心。居然还可以malloc(0)&#xff1f;&#xff01; &#xff08;3&#xff09;经过测试最后&#xff0c;发现…

基于Java学生课外知识学习网站设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a; ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精…

PulsarMQ系列入门篇

文章目录 介绍&#xff1a;部署安装讲解:安装单机版本测试&#xff08;Linux下&#xff09;&#xff1a; 介绍&#xff1a; PulsarMQ 现托管于apache Apache 软件基金会顶级项目&#xff0c;2016年由雅虎公司开源的分布式多租户消息中间件 &#xff0c;是下一代云原生分布式消息…

PaddleOCR #hello paddle: 从普通程序走向机器学习程序 - 初识机器学习

这篇示例向你介绍普通程序跟机器学习程序的区别&#xff0c;并带着你用百度飞桨框架&#xff0c;实现第一个机器学习程序&#xff0c;并初步认识机器学习。 作为一名开发者&#xff0c;你最熟悉的开始学习一门编程语言&#xff0c;或者一个深度学习框架的方式&#xff0c;可能是…

万字长文:大模型训练避坑指南

自 2022 年 11 月底 ChatGPT 发布以来&#xff0c;大模型的热度持续发酵&#xff0c;相信高屋建瓴的讨论大家已经看了很多了。今天我们选择从实用角度&#xff0c;分别就算力、算法、工程、数据和团队等方向讨论了训练一个千亿参数量级的大语言模型和 ChatGPT 需要些什么&#…

4.17 TCP三次握手 4.18滑动窗口 4.19TCP四次挥手

4.17 TCP三次握手 TCP 是一种面向连接的单播协议&#xff0c;在发送数据前&#xff0c;通信双方必须在彼此间建立一条连接。所谓的“连接”&#xff0c;其实是客户端和服务器的内存里保存的一份关于对方的信息&#xff0c;如 IP 地址、端口号等。 TCP 可以看成是一种字节流&a…

i.MX 91x推出,飞凌嵌入式携手NXP打造更强大、更经济、更安全的解决方案

NXP在COMPUTEX 2023上发布了i.MX 91应用处理器系列&#xff0c;作为i.MX 9系列的入门级产品&#xff0c;i.MX 91x简化了高性价比边缘设备的开发过程&#xff0c;助力构建需要安全性、高性能表现以及Linux支持的可扩展、高可靠性的平台&#xff0c;可满足下一代基于Linux的物联网…

【数据库三】MySQL索引

MySQL索引、事务与存储引擎 1.MySQL索引1.1 索引的概念1.2 索引的作用​1.3 索引的副作用​1.4 创建索引的原则依据​ 2.索引的分类和创建2.1 普通索引2.2 唯一索引2.3 主键索引2.4 组合索引2.5 全文索引 3. 查看索引4.删除索引5. 知识点总结 1.MySQL索引 1.1 索引的概念 索引…

基于html+css的图展示127

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

Unity光照贴图的切换,实现黑夜和白天效果

有这么一个需求&#xff0c;不能使用实时光来进行动态控制光照开关&#xff0c;但是又要实现白天和黑夜的效果&#xff0c;我的场景中有大概十几个点光源和平行光 实现步骤&#xff1a; 一、模型原模原样复制到另一个场景中&#xff08;因为贴图只能存在于当前的场景文件夹&am…

618私藏好物推荐!看这份清单就够了!

又到了一年一度的618&#xff0c;相信大家的购物车已经堆得满满的&#xff0c; 部分人已经选好了自己想要的东西&#xff0c;但也有一部分人还在纠结自己到底应该买什么。今天就给大家分享我的618私藏好物&#xff0c; 如果你想在这个夏天买到自己心仪的好物&#xff0c;建议你…

IIC总线 测温度和湿度

iic.c #include "iic.h"extern void printf(const char* fmt, ...); /** 函数名 &#xff1a; delay_us* 函数功能&#xff1a;延时函数* 函数参数&#xff1a;无* 函数返回值&#xff1a;无* */ void delay_us(void) {unsigned int i 2000;while(i--); } /** 函数…

字符设备驱动的内部实现

1.inode号的功能 &#xff1a;①inode号是文件存在于文件系统的唯一标识1 ②同时也是索引当前文件的inode结构体的索引导 2.文件信息结构体&#xff1a;只要文件存在于文件系统中&#xff0c;那么内核中一定会存在一个struct inode结构体&#xff0c;这个结构体里面存放了文件…

详解Http的Content-Type

目录 1.概述 2.常用类型 2.1.application/x-www-form-urllencoded 2.2.application/json 3.Spring MVC支持的编码 3.1.实验 3.2.适配器 3.3.自定义适配器 1.概述 HTTP&#xff08;HyperText Transfer Protocol&#xff09;&#xff0c;超文本传输协议。超文本&#xf…

从redis-trib.rb到集群加减节点实战

redis-trib.rb工具介绍 redis-trib.rb是redis集群管理工具&#xff0c;可以检查集群、创建删除节点、挪key、批量下发实例命令等等。 不是没有redis-trib.rb就没有集群管理了&#xff0c;没有redis-trib.rb照样可以管理集群。redis本身就有集群相关管理命令&#xff0c;redis-…

2021年系统架构设计师考试下午案例分析真题

试题一 阅读以下关于软件架构设计与评估的叙述&#xff0c;在答题纸上回答问题1和问题2。 [说明] 某公司拟开发-套机器学习应用开发平台,支持用户使用浏览器在线进行基于机器学习的智能应用开发活动。 该评台的核心应用场景是用户通过拖拽算法组件灵活定义机器学习流程&#…