已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基础技术 RPC分享 Contents 背景 1 访问量逐年攀升服务器数不断增加 2 业务不断发展应用规模日趋庞大 3 对性能可靠性的要求越来越高 问题 对策 分布式服务架构 Allinone 垂直应用架构 流动计算架构 单一应用架构 VerticalApplication DistributedService ElasticComputing application service 1 10 10 1000 1000 10000 10000 PV 万 架构演变过程 架构图 前端负载 缓存 lvs nginx web web web web webserver user user product product order order 消息中间件 统一配置平台 分布式缓存 DAL 分库分表 读写分离 db db db db db db Dbcluster 统一监控平台 使用RPC通信 同步 异步调用client负载均衡 orderweb loginweb order distributedserver LogicserverLayer BaseserverLayer RPC架构 底层IO 底层IO client sever Transport Tprotocol TProcessor 用户代码 Netty Tprotocol TServiceClient 用户代码 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 暴露服务的服务提供者 RPCServer Consumer 调用远程服务的服务消费者 RPCClient Registry 服务注册与发现的注册中心 Monitor 统计服务的调用次数和调用时间的监控中心 Container 服务运行容器 Remoting RPC 分布式事务 处理线程池 cluster config 自动配置 monitor registry 已完成 待完成 模块与功能 RPC相关技术 RPC要素 IO模型 用什么样的通道将数据发送给对方 javabio nio 数据协议 用什么数据格式进行传输 双方的约定 Thrift 线程模型 当接收到数据时 如何分发数据进行处理 netty IO模型 IO请求划分两个阶段 1 等待数据就绪2 从内核缓冲区拷贝到进程缓冲区按照请求是否阻塞分同步IO和异步IO 客服端 网络接口 远程内核 网络接口 本地内核 底层网络通信 服务器 Javabio nio Javabio nio 系统调用 inTTransport outTTransport 系统调用 inTTransport outTTransport inTProtocol outTProtocol TProcessor 业务代码 Tserver ThreadPool ThreadPool ThreadPool inTProtocol outTProtocol TServiceClient TAsyncClient 通过IDL脚本生成存根代码 客户端代码 Thrift架构图 80 01 00 01 00 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 FieldType 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模式 DownStreamHandlerN UpStreamHandler1 UpStreamHandler2 UpStreamHandlerN 1 DownStreamHandlerN 1 DownStreamHandler1 UpStreamHandlerN DownStreamHandler1 ChannelPipeline OtherdownStreamHandler OtherupStreamHandler OutBoundData InBoundData Socket read write Nettyinternaliothreads 传输层实现 由channel channelHandlerContext触发downrequest sendUpStream sendDownStream Netty处理模型 accept client client client write read Register 数据统计 连接限制 数据统计 解码处理 超时机制 Thrift分发 编码处理 超时机制 异常日志 异常日志 OtherupStreamHandler OtherdownStreamHandler In OutTransportadapter In OutTProtocol In OutTProcessor 业务实现 upStream ChannelPipeline downStream Thrift Thrift Netty调用流程 功能介绍 上下文 80 01 00 01 00 ThriftMessage 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 value Channelpool server1 server2 server3 负载均衡 client servers 192 168 49 63 9090 2 192 168 49 6 9090 4 192 168 49 25 9090 6 client Requestqueue 信息在客户端标示 信息在服务端标示 client server1 server1 server1 调用方式 Requestqueue Channelpool 返回结果 ListenableFuture 1 同步请求 必须等待服务端返回结果 2 单向请求 只需将请求数据成功发送服务端 就立即返回 3 异步请求 可以同时先发送多个请求 异步获取返回结果 ListenableFuture get 4 回调请求 通过异步实现 ListenableFuture addListener HeartbeatTimer 心跳检测 client server1 server2 Requestqueue Channelpool 1 发送心跳包 上下文中isHeartBeat true 等待返回信息 2 在返回信息上下文中isHeartBeat false 或者无返回信息 则移除相应的channel 3 将移除channel请求队列中没有发送的请求包 转移到其他存活channel 已发送的请求包会在队列中等待超时处理 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. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论