前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >grpc-learn

grpc-learn

作者头像
radaren
发布2018-08-28 14:54:22
7450
发布2018-08-28 14:54:22
举报

RPC:

  1. 提供统一的服务调用方式
  2. 类似调用本地函数
  3. 编译期参数类型检查
  4. 屏蔽协议编码和网络通信
  5. 面向服务化编程

基本框架:

  • Thrift(facebook)/Avro(hadoop)/Finagle(twitter)/grpc(google)
  • Dubbo(ali)/Motan(sina)/rpcx(golang!)
  • Sofa/Poppy/MTRpc/PhxRpc/Pebble

RPC服务发现:

  • Client-Side App:Stub(生成客户端接口)->Client Callmethod->Channel(Address Resolver, Load Balancer)->transport
  • Server-Side App:Service Implementation(扩展生成定义)->Service CallMethod->ServerCallHandler(req Scheduler) //调度策略,过载保护,优雅重启-> transport(tbus, socket)

网络通信:

方案

信息封装

传输模型

应用

远程调用

函数,变量

函数+参数-》返回

RMI

数据包

二进制

Send、Recv

udp

消息队列

对象

Put、Get

ActiveMQ

流过滤

单元长度很小的数据结构

读取处理

视频

资源拉取

header+body

资源id

www

RPC框架服装屏蔽底层传输方式(TCP/UDP),序列化方式(XML/Json/二进制)和通信细节,调用者可以像调用本地接口一样调用远程服务。核心是要解决在分布式系统间,如何执行另外一个地址空间上的函数。

目的:

  • 服务端尽可能多的处理并发请求
  • 同时竟可能短的处理完毕

I/O模型:

  1. Blocking I/O:C10k问题
  2. Non-blocking I/O
  3. I/O multiplexing(有分配代理)
  4. Asynchronous I/O(回调)

gRPC支持C,java,Go语言:

  1. 语言中立,支持多种语言
  2. 基于IDL文件定义服务,通过proto3工具生成指定语言的数据结构,服务器端口以及客户端Stub
  3. HTTP/2设计,支持双向流,消息头压缩,单TCP的多路浮云,服务端推送–》省电和流量
  4. 序列化支持PB和JSON

创建流程:

  1. NettyServer创建,实现基于HTTP/2协议请求消息的接入
  2. 绑定IDL定义的服务接口实现类:proto工具生成代码在服务器上注册
  3. gRPC服务实例创建
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • RPC:
  • 基本框架:
  • RPC服务发现:
  • 网络通信:
相关产品与服务
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档