当前位置: 首页 > news >正文

用vis做的简单网站怎么自己创建一个网页

用vis做的简单网站,怎么自己创建一个网页,中国智慧城市建设门户网站,婚纱网站怎么做seo文章目录 新的开始什么是RPC?设计一个RPC需要些什么#xff1f; 新的开始 经常会遇到一些项目#xff0c;看着看着就发现看不懂文档了#xff0c;也就是会出现一些跳过讲解的文章#xff0c;使得自己很难了解某种中间件的开发全貌#xff0c;所以想着自己先设计一个比较… 文章目录 新的开始什么是RPC?设计一个RPC需要些什么 新的开始 经常会遇到一些项目看着看着就发现看不懂文档了也就是会出现一些跳过讲解的文章使得自己很难了解某种中间件的开发全貌所以想着自己先设计一个比较简易的RPC框架在实现所有功能的前提下向公司内部的技术分享一样用口语化的方式讲述RPC框架使得大家更容易理解。 这也是BlossomRPC项目的初衷。 RPC项目 配置中心项目 网关项目 再之前的网关项目中我们已经了解到了Netty再网络通信中的作用我们可以使用Netty开发非常多的东西比如实现WebSocketHttp的服务器上位机等。 只要是涉及到网络通信这一块的东西都可以考虑使用我们的Netty去进行设计。 这一章节我们将使用Netty去实现一个简单的RPC框架。 好的接下来我们继续按照自顶向下的方式来学习这个自研的RPC框架。 嘿嘿最近在读金字塔原理这不得让我试试我的学习成果 因此为了能够向你讲解清楚并且让你最后能理解这个项目我会按照如下的方式为你介绍在这一章里面你会知道并且学习到什么东西。 什么是RPC如何自己实现一个RPC框架代码实战 oklet‘s go 什么是RPC? 我在字节的时候我和我的mentor闲聊聊到了RPC和HTTP。 然后就这个问题他问了我很多东西。 因此再聊RPC之前我们得先知道什么是RPC他和HTTP的区别是什么为什么我们会经常将PRC和HTTP去做比较呢以及为什么企业内网中通信更多用的是RPC而公网通信更多用的是HTTP 我们随便搜索一下都能看到如下的对RPC的介绍 RPCRemote Procedure Call是一种网络通信协议它允许程序调用在另一台机器上的程序或服务就像调用本地对象一样。RPC抽象了网络通信的复杂性使得开发者可以像调用本地函数一样调用远程函数。RPC框架通常处理网络通信、数据的序列化/反序列化和错误处理等。 但是其实光看上面的描述其实还是没办法让我们对RPC有一个详细的了解他依旧很抽象。 根据金字塔原理我们知道这句话的目的是为了概述RPC的功能和作用那么这段话中的每一个小句子的都是为了概述RPC来服务的。所以我们可以试图对上面的话中抽取一些关键词。 网络通信协议RPC是一种用于网络间通信的方案。程序调用RPC允许一个程序调用另一台机器上的程序或服务。类似本地对象调用RPC使远程服务调用在使用上类似于调用本地对象。抽象网络复杂性RPC抽象化了底层的网络通信细节简化了远程调用的过程。调用远程函数RPC的主要功能是允许开发者执行远程服务器上的函数或方法。处理序列化/反序列化RPC框架通常负责数据的序列化将对象转换为网络传输的格式和反序列化将接收的数据转换回对象。错误处理RPC框架通常包含错误处理机制以处理网络通信中可能发生的问题。 因此其实我们可以对上面的话举个例子然后进行一个总结描述 用白话来说RPC远程过程调用就像是一个允许你通过电话指挥别人帮你完成任务的方法而这个“别人”就是一台位于远处的电脑。想象一下你需要完成一个任务但是需要的工具或信息在别的地方你就可以通过RPC来“打电话”给那台远程电脑让它帮你完成这个任务。这个过程对你来说就像是让自己电脑上的一个程序做事一样简单你不需要知道远程电脑是如何完成任务的也不需要自己处理复杂的网络通信细节你只需要负责拨号就行了也就是说你只需要知道对方的号码然后接通电话的那一刻说出你要对方做的使其即可。 简而言之RPC让远程电脑上的程序就像是你自己电脑上的程序一样容易调用。 专业一点的说RPC是一种能帮助你轻易调用远程机器上的程序接口并且帮助你屏蔽了各种底层复杂处理的方案使得我们能专注于业务代码的开发而不是考虑底层细节。 因此为了能实现上面的目的RPC一定需要完成上面的几个点并且暴露出一个易于你调用的接口使得你能非常方便的完成“打电话”这个动作。 那么第一个问题就回答完毕了第二个问题我们经常能在网络上看见对它的讨论。 RPC和HTTP经常被拿来比较主要是因为它们都被广泛用于服务间的通信但在实现细节、性能、适用场景上有显著的不同。了解这些差异对于选择合适的通信机制来满足特定应用的需求非常重要。 这里我就直接引用知乎大佬的原话了 既然有 HTTP 请求为什么还要用 RPC 调用 所以通过文章我们了解到一个是技术方案一个是通信协议。 而RPC这个技术方案就包含了对通信协议的使用因此你可以直接使用HTTP协议作为RPC底层的传输机制但是你也可以使用更高效的协议TCP/UDP都可以。 聊完了区别我们来回答最后一个问题其实这个问题就是在问他和HTTP的优缺点了。 ● HTTP可读性好跨语言易于通过防火墙。优于RPC的地方在于其通用性和易用性尤其是在构建面向公众的Web API时。 ● RPC更专注于效率和性能适合用于内部服务之间的通信。RPC通常更快因为它可以使用比HTTP更高效的传输协议和序列化方法。 ● HTTP由于工作在应用层它包含了较多的协议头信息因此相对于RPC在数据传输效率上可能较低。 ● RPC可能不如HTTP那样直观易用且在跨语言支持和标准化方面可能不如HTTP强。 所以我们总结一下就能知道最后一问的答案这一问就是我mentor问我的她说我的当初的答案差点意思嘿嘿现在补充一下 性能和效率企业内网中的服务通常追求高效率和低延迟RPC支持的高效二进制序列化和简化的通信协议在这方面表现更好。安全和隔离内网环境相对封闭和安全服务间可以使用更为复杂的通信机制如RPC而无需担心公网中的安全问题。协议和标准HTTP作为互联网的基础协议更适合用于构建公共API和服务。它的标准化和广泛支持使得不同环境和平台之间的通信更加容易。兼容性和可访问性HTTP在公网上的普遍兼容性使其成为互联网服务的理想选择特别是在需要与浏览器等客户端交互时。 好的我们基本了解完毕什么是RPC之后我们就可以开始分析设计一个RPC框架需要用到那些知识了。 设计一个RPC需要些什么 在着手编码之前我们得先分析清楚设计一个RPC框架需要在那些方面下功夫去设计。 由于这个项目不会涉及的特别复杂只是为了简单演示一下自己开发一个RPC框架所需要设计到的知识所以我们一切从简。 我们也按照这张图片的方式进行处理最终也可以完成对RPC请求的处理。 可以发现对于一个RPC项目我们需要从如下几个方面来考虑 接口定义与服务规范客户端代理对客户端的请求进行代理序列化与反序列化网络通信服务注册与发现 了解到这些之后我们就可以开始粗略的分析一下每一个点然后详细的分析每一个点下面可能遇到的问题以及需要考虑到的一些东西。 如下是我列的一个粗略的大纲 分析一下需要做的事情 1消息协议的定义 - 版本 协议版本 1byte - 压缩/序列化等算法的使用 1byte - 消息类型 1byte - 请求ID 8byte - 消息长度 4byte - 消息内容 Object2编写编码器和解码器 - Server和Client都需要引入编解码器 - 编解码器需要对我这个特定的协议进行解析基于上面的协议 - 编解码器只是解析数据最终数据的处理应该用Handler去操作3处理序列化和反序列化 - 参考grpc、google、 - 可以考虑自己实现也可以考虑使用开源的框架 - Java原生序列化 、 Json 、Arvo 、 protobuf4编写Handler处理器------------完成协议部分------------- ------------客户端代理部分-----------5: 对客户端带有注解的服务进行代理 - JDK动态代理、CGLIB、SpringAop - 其中Spring这种方式可以考虑使用BeanFactory的方式来得到代理对象 - 思考用什么样的一种方式可以对使用了我提供的注解的类进行代理的创建 -- BeanRegistry/BeanFactory/Bean反射6编写注册中心代码/服务感知 - 项目是要整合springboot进行使用的 -- 要确保项目于springboot的无缝整合 减少用户感知 - 如何整合注册中心比如zk、nacos - 如何编写一种通用的模板使得用户无感知而只需要用到注解 -- 考虑使用AutoConfigurationConditional类型的注解进行依赖引入的判断 -- 如果引入了Nacos相关的重点依赖那么注册中心用nacos -- 也可以考虑提供枚举类型 / 通过配置文件的方式 让用户手动的去选择选用的注册中心 -- 优化用户体验考虑在spring的application类型的文件中添加配置文件注释 -- 比如考虑到Spring中提供的各种Aware/Processor的使用 --- 比如ApplicatiopnAware/BeanFactoryAware/BeanClassLoaderAware/EnvironmentAware --- 策略模式/单例模式/模板方法注册 --- 负载均衡的考虑 --- 考虑服务注册的时候注册上去的元数据信息 --- 如何从多个实例中选取一个特定实例负载均衡算法实现分析意义 1: 某些公司那边并不使用rpc通信的方式他们用的是mq通信 2: 基站即服务 3: 什么时候用http什么使用用rpc --------------------------那么接下来我们就按照上面的大纲来分析一下设计我们自己的RPC需要用到那些技术。 首先是序列化和反序列化这里可以考虑两种方法一种是使用最简单的Java原生的对象处理流也就是Java自带的序列化当然这种方法并不好性能低的同时安全性以及移植性都很差。 第二种方法就是使用JSON这是非常常见且简单的序列化方案。 其次就是使用Arvo、Protobuf这些序列化框架。 在这个项目中序列化并不是非常重要的重头戏因此我就直接选用JSON和原生Java序列化了。 当然你甚至可以自定义序列化算法。 网络通信上我们可以选择使用HTTP进行数据的传输也可以使用Netty这里很明显我们选择Netty。 其次就是框架了我们选择使用2.7.8版本的SpringBoot这个版本已经支持了非常多的特性并且可以非常快速简单的实现自动注入。 最后注册中心我们选用Nacos和Zookeeper。 当然我们的项目也支持你使用自己实现的注册中心。 嘿嘿自研注册中心正在开发中敬请期待 所以了解完毕了上面我们列出如下的技术栈 SpringBoot2.7.8 Netty4.1.52 fastjson 好的那么接下来我们正式开始准备开发。
http://www.w-s-a.com/news/403343/

相关文章:

  • 自助外贸网站建设可直接打开网站的网页
  • 江苏城嘉建设工程有限公司网站潍坊网站定制公司
  • 四川省住房和城乡建设厅新网站宜昌建设厅网站
  • 建设网站一般流程建设开发网站
  • 设计外贸英文网站国家企业信息信用公信系统
  • 主题资源网站创建时 如何突出设计的特点阿里云是做网站的吗
  • 乌市建设工程质量监督站网站外资公司注册
  • 档案馆网站机房建设做游戏网站打鱼
  • 网站建设平台 创新模式搭建好ftp服务器 如何通过网站访问
  • 苏州集团网站制作设计网页制作软件ai
  • 网站建设新手教程视频教程手帐风格wordpress主题
  • 做投标网站条件网站更改指定字段
  • mvc5 网站开发之美做印刷网站公司
  • 医疗网站建设精英微信网站用什么制作的
  • 银川网站设计联系电话地推加人2元1个
  • 龙华网站 建设深圳信科北京知名的网站建设公司
  • 怎么做qq刷赞网站搜盘 资源网
  • 微网站怎么做的好名字吗陕西省医院网站建设管理
  • 泉州seo-泉州网站建设公司温州企业自助建站系统
  • 网站建设属于什么费网站建设网络推广
  • 德州网站开发人员网站怎么才能被百度收录
  • wordpress网站怎么加小游戏乐山网站制作公司
  • 企业购 网站建设做兼职有哪些网站
  • 湖州网站做等保费用大型网站建站
  • 优创智汇高端网站建设网站设计工作流程
  • 什么网站可以学做西餐个人网站怎么做支付功能
  • 千户微建站平台做网站需要切图吗
  • 织梦cms 学校网站模板网站建设中的问题
  • 山东济南网站建设公司制作wordpress模板教程视频教程
  • 档案网站的建设怎样更新网站内容