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

杭州网站建设报价公司展厅设计图片

杭州网站建设报价,公司展厅设计图片,手机app怎么开发的,网站建设公司怎样布局浅谈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.hkea.cn/news/14267314/

相关文章:

  • 永兴网站建设广州番禺网站制
  • 网站后台制作用的软件建设简易电子商务网站流程
  • 网上做网站怎么做下拉菜单绵阳东原建设工程有限公司网站
  • 大连h5网站开发房产交易中心官网
  • VS2010做网站登录页面步骤建湖做网站哪家最好
  • 友情链接网站优秀地方门户网站系统
  • 怎么在网上做网站主题页面设计
  • 山西建设执业资格注册管理中心网站自开发网站
  • 找人建个网站多少钱seo搜索引擎入门教程
  • 网站开发技术部经理素质模型免费小程序模板
  • 山西公司怎么做网站网站安排
  • 网站备份数据库网站title keywords
  • 优秀seo网站婚纱摄影行业网站建设
  • 无锡seo网站建设费用wordpress标签页固定连接以.html后缀结尾
  • 深圳wordpress网络优化大师
  • 山西做网站的公司有哪些市场调研公司存在的意义
  • 提升自己建设自己的网站还有哪些数据库网站
  • 备案网站内容怎么写深圳it培训
  • 深圳彩票网站建设wordpress 注册 填写密码
  • 宠物托运网站开发宝安网站改版
  • 我国外贸企业网站建设东莞做网站公司有哪些
  • 网站建设技术发展趋势预测手机软件下载平台哪个好
  • 重庆网站建设流程楼市最新消息2023
  • 海宁做网站北京网站建设方案托管
  • 郑州外贸网站建设商家云南网络营销公司
  • 福州网站设计大概费用优秀网站的特点
  • 网站ui设计基础wordpress添加头像
  • 企业手机网站建设策划方案营销顾问公司
  • 怎么seo网站推广免费域名注册平台永久
  • 没注册可以做网站吗企业网站制作 西安