ImageVerifierCode 换一换
你正在下载:

RPC分享.ppt

[预览]
格式:PPT , 页数:36 ,大小:4.40MB ,
资源ID:1406208      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/1406208.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(RPC分享.ppt)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

RPC分享.ppt

1、基础技术,RPC分享,Contents,背景,1.访问量逐年攀升服务器数不断增加,2.业务不断发展应用规模日趋庞大,3.对性能可靠性的要求越来越高,问题,对策,分布式服务架构,All in one,垂直应用架构,流动计算架构,单一应用架构,Vertical Application,Distributed Service,Elastic Computing,。,application,service,1 10,1 0 1000,1000 10000,10000+,PV(万),架构演变过程,架构图,前端负载+缓存(lvs+nginx),web,web,web,web,web server,user

2、,user,product,product,order,order,消息中间件,统一配置平台,分布式缓存,DAL(分库分表、读写分离),db,db,db,db,db,db,Db cluster,统一监控平台,使用RPC通信:同步/异步调用client负载均衡.,order web,login web,order,distributed server,Logic server Layer,Base server Layer,RPC架构,底层IO,底层IO,client,sever,Transport,Tprotocol,TProcessor,用户代码,Netty,Tprotocol,TServi

3、ceClient,用户代码,Thritf通过接口描述文件生成存根代码,用Thritf的协议和序列化实现跨语言,服务端用netty做网络通信,Thrift提供客户端不同语言通信API,系统架构图,Registry,Monitor,Consumer,Consumer,init,syn,asyn,1.registry,0.start,2.subscribe,4.invoke,3.notify,5.count,与其它系统联系,Provider:暴露服务的服务提供者(RPC Server)。Consumer:调用远程服务的服务消费者(RPC Client)。Registry:服务注册与发现的注册中心。M

4、onitor:统计服务的调用次数和调用时间的监控中心。Container:服务运行容器。,Remoting,RPC,分布式事务,处理线程池,cluster,config,自动配置,monitor,registry,已完成,待完成,模块与功能,RPC相关技术,RPC要素,IO模型:用什么样的通道将数据发送给对方(java bio/nio),数据协议:用什么数据格式进行传输,双方的约定(Thrift),线程模型:当接收到数据时,如何分发数据进行处理(netty),IO模型,IO请求划分两个阶段:1.等待数据就绪 2.从内核缓冲区拷贝到进程缓冲区 按照请求是否阻塞 分同步IO 和异步IO,客服端,网

5、络接口,远程内核,网络接口,本地内核,底层网络通信,服务器,Java bio/nio,Java bio/nio,系统调用,inTTransport,outTTransport,系统调用,inTTransport,outTTransport,inTProtocol,outTProtocol,TProcessor,业务代码,Tserver,ThreadPool,ThreadPool,ThreadPool,inTProtocol,outTProtocol,TServiceClient/TAsyncClient,通过IDL脚本生成存根代码,客户端代码,Thrift架构图,80,01,00,01,00,

6、.,.,00,00,00,00,01,.,.,00,00,00,00,.,.,.,.,.,.,00,.,.,.,.,MessageVersion(I16),MessageType(I16),MessageName(string),MessageSeqid(I32),MessageEndTag(*),StuctBeginTag(*),StuctEndTag(*),Field1-N,0B,00,01,00,00,00,07,4d,69,63,68,61,65,6c,.,.,Field1(假设字符串:Michael),FieldsStopTag(byte),FieldEndTag(*),FieldT

7、ype(byte),Fieldid(I16),Length(I32),77,105,99,104,97,101,108,消息描述,参数体,参数结构,Thrift序列化协议,Thrift基础数据序列化,Thrift序列化压缩,可变长编码与zigzag 编码:,Netty 架构图,accept,client,Fork,Server,client,client,mainThread,普通网络服务模型,Reactor模式,DownStream Handler N,UpStream Handler 1,UpStream Handler 2,UpStream Handler N-1,DownStream

8、Handler N-1,DownStream Handler 1,UpStream Handler N,DownStream Handler 1,ChannelPipeline,Other downStreamHandler,Other upStreamHandler,OutBound Data,InBound Data,Socket(read/write),Netty internal io threads(传输层实现),由channel/channelHandlerContext触发down request,sendUpStream,sendDownStream,Netty处理模型,acc

9、ept,client,client,client,write,read,Register,数据统计,连接限制,数据统计,解码处理,超时机制,Thrift分发,编码处理,超时机制,异常日志,异常日志,Other upStreamHandler,Other downStreamHandler,In/OutTransportadapter,In/OutTProtocol,In/OutTProcessor,业务实现,upStream,ChannelPipeline,downStream,Thrift,Thrift+Netty调用流程,功能介绍,.,.,上下文,80,01,00,01,00,.,.,Th

10、riftMessage,.,.,.,.,.,.,.,.,.,.,80,01,00,01,.,.,.,.,00,00,00,01,MessageVersionAndType(I32),MessageName(string)固定标示上下文字符串”$_1_PC$_1_&_8_#”,MessageSeqid(I32),上下文消息,Thrift信息,MessageEndTag(*),Map,0B,0B,00,00,00,06,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,keyType(b),valueType(b),size(I32),mapEnd(*),Size个Key-v

11、alue,Channel pool,server1,server2,server3,负载均衡,client.servers=192.168.49.63:9090:2,192.168.49.6:9090:4,192.168.49.25:9090:6,client,Request queue,信息在客户端标示,信息在服务端标示,client,server1,server1,server1,调用方式,Request queue,Channel pool,返回结果,ListenableFuture,1.同步请求,必须等待服务端返回结果,2.单向请求,只需将请求数据成功发送服务端,就立即返回。,3.异步

12、请求,可以同时先发送多个请求,异步获取返回结果.ListenableFuture.get(),4.回调请求,通过异步实现。ListenableFuture.addListener(),Heartbeat Timer,心跳检测,client,server1,server2,Request queue,Channel pool,1.发送心跳包(上下文中isHeartBeat=true),等待返回信息,2.在返回信息上下文中isHeartBeat=false,或者无返回信息,则移除相应的channel,3.将移除channel请求队列中没有发送的请求包,转移到其他存活channel。已发送的请求包会

13、在队列中等待超时处理,client.heartbeat-timeout=10s,客户端发送心跳信息,服务端发送心跳信息,超时机制,客户端:client.read-timeout=60s#must=1ms 客户端等待读数据时间client.write-timeout=60s#must=1ms 客户端等待写数据时间client.serverProcess-timeout=10s#must=1s客户端传给服务端处理超时时间服务端:server.processer-timeout=3s#若客户端没有传送处理超时时间,#服务端将用此默认处理超时时间,性能监控,Cpu与内存监控并发与线程监控运行时参数修改查看统计信息,开发易用性,1.Maven 插件com.jumei.mojoparrot-maven-plugin1.0.02.两个goal t2p:将thrift IDL文件生成java代码 p2t:将java代码生成thrift IDL文件,不要求精通Thrift IDL在java中通过标注方式编写接口通过maven插件实现java和Thrift相互转换,与Tomcat性能对比,后期功能,案例,

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1