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

有关网站建设的文章句子做网站项目的意义ppt介绍

有关网站建设的文章句子,做网站项目的意义ppt介绍,网站排名优化seo,为女朋友做的网站浅谈RPC的实现原理与RPC实战 什么是RPC?RPC框架基本原理gRPC框架介绍Http/2ProtoBuf gRPC实战一、创建项目二、导入依赖三、编写proto文件编写服务端编写客户端 什么是RPC? RPC(Remote Procedore Call)#xff0c;及远程过程调用#xff0c;是一种在分布式系统中用于进程间… 浅谈RPC的实现原理与RPC实战 什么是RPC?RPC框架基本原理gRPC框架介绍Http/2ProtoBuf gRPC实战一、创建项目二、导入依赖三、编写proto文件编写服务端编写客户端 什么是RPC? RPC(Remote Procedore Call)及远程过程调用是一种在分布式系统中用于进程间通信的技术。 在分布式系统中不同的进程可能运行在不同的机器上RPC技术隐藏了底层通信细节和序列化机制使得一个进程可以如同调用本地方法一般调用另一个进程的函数或方法让远程调用变的简单直观。 常见的RPC框架有gRPC、Dubbo、Thrift等。 RPC框架基本原理 rpc框架的基本原理主要包含以下几个部分 网络通信RPC框架的客户端与服务端需要通过网络通信来传输数据网络通信涉及到协议的选择、底层I/O模型的实现等问题。对于网络协议的选择可以使用HTTP也可以基于TCP自定义协议。对于底层I/O模型处于并发性能的考虑一般不会选择使用阻塞式I/O在Java生态中会使用Netty作为网络通信框架其底层使用了Java NIO来解决数据传输问题。序列化协议在网络通信的过程中所有数据都会被转化为字节进行传输因此客户端与服务端之间的数据交互离不开序列化与反序列化。序列化是将数据对象转化为二进制数据的过程反序列化则是将二进制数据转化为数据对象的过程。常见的序列化协议包括ProtoBuf、Json、Thrift、Hession等。动态代理RPC框架中客户端通过代理对象来调用远程服务屏蔽了底层的实现细节如同调用本地方法一般。动态代理可以在程序运行时动态生成代理对象并且无需修改源代码。常见的动态代理技术包括Java中的JDK动态代理和CGLIB动态代理等。服务注册于发现在分布式系统中服务提供者与服务消费者需要将自身的元数据信息注册到一个服务注册中心。服务注册与发现是一种将服务提供者和服务消费者解耦的机制使得服务提供者和服务消费者可以独立部署和扩展。常见的服务注册中心有ZooKeeper、Nacos、Eureka等。负载均衡负载均衡可以提供系统的性能与可用性服务提供者可以集群部署服务注册中心维护了多个服务提供者的服务地址RPC框架会根据负载均衡算法将请求均匀地打到不同的服务实例从而减少单个服务提供者的压力。高可用与容错在分布式系统中由于各种原因服务提供者可能会出现宕机、网络故障等问题因此需要通过一些服务治理机制如集群容错、重试、熔断降级、限流等来保证可靠性和高可用。 gRPC框架介绍 gRPC是一款基于Http/2协议传输使用Protocol Buffers进行序列化的高性能开源RPC框架支持多种开发语言以及跨语言通信。以上是gRPC的见解也是其优势所在gRPC的优势由Http/2和Protobuf继承而来。 高效的传输协议gRPC基于Http/2协议传输具有多路复用、服务端推送和流量控制等功能能够提高网络传输的效率。跨语言兼容性gRPC使用Protocol Buffers进行序列化支持多种编程语言能够提供强大的统一跨语言能力。丰富的生态环境gRPC已经成为云原生环境中的事实标准协议并得到了k8s、etcd等组件的天然支持。 Http/2 由于使用了Http/2gRPC天然享受Http/2带来的诸多优越特性 多路复用Http/2使用了多路复用技术允许在同一个Tcp连接同时发送多个请求和接收多个响应提升了并发性能、降低了响应延迟。头部数据压缩Http/2使用HPACK算法压缩头部数据Header在服务器与客户端维护头信息表通过序号索引来表示字段key并对字段value使用哈夫曼编码压缩数据减少了头部数据两进一步提升传输效率。二进制格式Http/2的头信息和数据体都是二进制数据称为帧Frame并且每个请求的数据包可以被分割为多个二进制减少了网络开销。服务器推送Http/2允许服务器主动向客户端推送资源。流量控制。。。。。。。。。。 ProtoBuf 序列化协议是RPC框架重要的组成部分客户端使用序列化协议将内存数据转换为二进制数据服务端接收到后将二进制数据再转换为内存数据。序列化协议对RPC框架在网络传输方面的性能起着至关重要的影响。 gRPC使用Protocol Buffers 进行序列化将数据结构以.proto文件进行描述通过代码生成工具protoc可以生成对应数据结构的POJO对象和相关方法。 优点码流小、性能高。ProtoBuf序列化后的码流相对于其他结构化数据存储格式例如XML、JSON等更小跟紧凑能够提高数据传输的效率。ProtoBuf采用结构化的数据存储格式能够更容易地定义和描述数据结构更易于管理和维护。缺点需要依赖于工具生成代码、增加了学习成本和开发成本。可读性也不如JSON、XML。 gRPC实战 一、创建项目 项目包含三个子模块grpc-api负责存放proto文件grpc-server模块作为服务端grpc-client模块作为客户端。 二、导入依赖 在grpc-api模块的pom.xml文件导入grpc依赖同时server与client依赖api模块。 三、编写proto文件 在grpc-api编写proto文件 syntax proto3;option java_multiple_files true; option java_package com.demo; option java_outer_classname DemoServiceProto; //请求参数 message DemoRequest{string operator 1; } //响应参数 message DemoResponse{int32 result 1;string message 2; } //方法接口 service DemoService{rpc DemoTest(DemoRequest) returns (DemoResponse){} }接下来编辑proto文件 可以使用mvn compile install -pl命令执行。 编写服务端 首先编写实现类DemoServiceGrpc.DemoServiceImplBase是编译proto文件后生成的服务接口需要继承并覆盖其中的方法。 public class DemoServiceImpl extends DemoServiceGrpc.DemoServiceImplBase{Overridepublic void demoTest(DemoRequest request,StreamObserverDemoResponse responseObserver){String operator request.getOperator();DemoResponse demoResponse DemoResponse.newBuilder().setResult(1).setMessage(你好operator).build();responseObserver.onNext(demoResponse);responseObserver.onCompleted();} }然后编写服务端启动类 public class GrpcServer{public static void main(Striing[] args) throws IOException, InterruptedException{//绑定端口ServerBuilder serverBuilder ServerBuilder.forPort(9000)//发布服务serverBuilder.addService(new DemoServiceImpl());Server server serverBuilder.build();server.start();server.awaitTermination(); } }编写客户端 public class GrpcClient{public static void main(String[] args){// 创建通信管道ManagedChannel managedChannel ManagedChannelBuilder.forAddress(localhost, 9090).usePlaintext().build();try {// 获取代理对象 StubDemoServiceGrpc.DemoServiceBlockingStub demoServiceBlockingStub DemoServiceGrpc.newBlockingStub(managedChannel);// 创建请求对象DemoRequest test DemoRequest.newBuilder().setOperator(Jason).build();// 调用 RPC 接口DemoResponse demoResponse demoServiceBlockingStub.demoTest(test);System.out.println(demoResponse.getMessage());} catch (Exception e) {throw new RuntimeException(e);} finally {managedChannel.shutdown();}} }运行后会得到你好Jason。 这样的结果大功告成~
http://www.dnsts.com.cn/news/130497.html

相关文章:

  • 建设综合购物网站网页小游戏4933
  • 网站建设平台怎么样做爰的视频网站
  • 农村电商网站建设wordpress打赏分享
  • 老网站怎么做seo优化什么大型网站用python做的
  • 网站版式设计说明中国网站建设销市场规模
  • 会网站建设好吗网络营销对企业的优势
  • 河南建设河南勘察设计协会网站小程序功能
  • 做网站需要的大图米拓建站最新进展
  • 自己做的网站怎么连接计算机辽宁省住房和城乡建设网站
  • 秀人网络科技有限公司怎么seo网站推广
  • 电信做网站吗wordpress默认邮件在哪里设置
  • 公司网站建设制作商沂南网站优化推广
  • 怎么用h5网站做动效三亚房地产网站制作
  • 企业如何实现高端网站建设html个人简历完整代码
  • dw做网站怎么替换字体典当网站
  • 网站要怎么做才能获得市场份额dw做网站怎么排版
  • 邢台企业做网站推广绍兴网站制作公司
  • 做网站如何可以实现窗口切换功能收费资源下载wordpress主题
  • 建网站怎么挣钱的wordpress cptui
  • windows 2008 搭建网站英文网站
  • 制作复杂的企业网站首页百度电脑版网址
  • 国外网站鞋子做的好的网站如何给自己公司做网站
  • 网站加载速率企业申报系统
  • 这是我做的网站吗腾讯外贸电商平台
  • 地旺建设官方网站哪些网站可以做帮助文档
  • 如何进行网站制作一个人做网站 优帮云
  • 如何说明学校网站建设情况国际新闻最快最及时的新闻软件
  • 国外有哪些网站做推广的比较好企业集团网站网站建设方案
  • 网页制作软件分为两类wordpress 4.7优化
  • 司法网站建设运营情况php源码搭建网站流程