grpc应用于微服务的分析,基于python
来源:互联网 发布:算法工程师笔试考什么 编辑:程序博客网 时间:2024/06/11 09:48
grpc应用于微服务的分析
gRPC 是一个高性能、开源和通用的 RPC 框架,面向移动和 HTTP/2 设计,目前提供 C、Java 和 Go 语言版本,分别是:grpc, grpc-java, grpc-go. 其中 C 版本支持 C, C++, Node.js, Python, Ruby, Objective-C, PHP 和 C# 支持.
gRPC 基于 HTTP/2 标准设计,带来诸如双向流、流控、头部压缩、单 TCP 连接上的多复用请求等特。这些特性使得其在移动设备上表现更好,更省电和节省空间占用。
gRPC 基于如下思想:定义一个服务, 指定其可以被远程调用的方法及其参数和返回类型
gRPC 允许你定义四类服务方法:
- 单项 RPC,即客户端发送一个请求给服务端,从服务端获取一个应答,就像一次普通的函数调用。
rpcSayHello(HelloRequest)returns (HelloResponse){}
- 服务端流式 RPC,即客户端发送一个请求给服务端,可获取一个数据流用来读取一系列消息。客户端从返回的数据流里一直读取直到没有更多消息为止。
rpcLotsOfReplies(HelloRequest)returns (streamHelloResponse){}
- 客户端流式 RPC,即客户端用提供的一个数据流写入并发送一系列消息给服务端。一旦客户端完成消息写入,就等待服务端读取这些消息并返回应答。
rpcLotsOfGreetings(streamHelloRequest)returns (HelloResponse) {}
- 双向流式 RPC,即两边都可以分别通过一个读写数据流来发送一系列消息。这两个数据流操作是相互独立的,所以客户端和服务端能按其希望的任意顺序读写,例如:服务端可以在写应答前等待所有的客户端消息,或者它可以先读一个消息再写一个消息,或者是读写相结合的其他方式。每个数据流里消息的顺序会被保持。
rpcBidiHello(streamHelloRequest)returns (streamHelloResponse){}
兼容restapi方法,如果需要兼容restapi可使用grpc-gateway,可生成swagger文件
https://github.com/grpc-ecosystem/grpc-gateway
使用介绍http://www.cnblogs.com/lienhua34/p/6285829.html
需要go语言支持
服务发现和负载平衡
以上,grpc提供了数据传递的功能,但要把他微服务化还要支持服务发现和负载平衡,grpc并未实现这一块,因此要应用的话还需考虑此部分,grpc提供了设计思想,并在不同语言的gRPC代码API中已提供了命名解析和负载均衡接口供扩展(在python中并未找到有这部分)
http://www.tuicool.com/articles/7NzYzuZ中介绍设计思想
方法一:运行在docker下,由docker来负责服务发现和负载平衡,公司目前似乎短时间无法做到
方法二:自行实现,服务发现在用etcd,zookeeper等,推荐使用etcd.
ETCD vs ZK
选取ZK作为典型代表与ETCD进行比较,而不考虑[Consul]项目作为比较对象,原因为Consul的可靠性和稳定性还需要时间来验证(项目发起方自身服务并未使用Consul, 自己都不用)。
- 一致性协议: ETCD使用[Raft]协议, ZK使用ZAB(类PAXOS协议),前者容易理解,方便工程实现;
- 运维方面:ETCD方便运维,ZK难以运维;
- 项目活跃度:ETCD社区与开发活跃,ZK已经快死了;
- API:ETCD提供HTTP+JSON, gRPC接口,跨平台跨语言,ZK需要使用其客户端;
- 访问安全方面:ETCD支持HTTPS访问,ZK在这方面缺失;
综上,grpc对go语言支持度更好,使用ptyhon,grpc只做到rpc的数据传递,其它方面大部份还要自行再架构
参考:http://www.jianshu.com/p/9805545db4ad再谈Docker-微服务的场景化应用
http://www.grpc.io/
阅读全文
2 0
- grpc应用于微服务的分析,基于python
- gRPC 的协议分析
- gRPC使用的分析
- grpc 的协议分析
- .NET Core 使用 grpc 实现微服务
- 基于Eventuate的微服务应用Money Transfer分析
- Go使用grpc+http打造高性能微服务
- 基于容器的微服务架构剖析
- 基于容器的微服务架构剖析
- 基于微服务的软件架构模式
- 基于Node.js的微服务后台
- 基于微服务的软件架构模式
- 基于微服务的软件架构模式
- 基于容器的微服务架构剖析
- 基于SpringBoot的微服务架构实践
- 基于微服务的软件架构模式
- 基于微服务的软件架构模式
- 基于微服务的软件架构模式
- 简单的通讯录去实现咯
- 2017.06.28 Gabor滤波器总结
- ORACLE优化方案 (转)(突然发现好多问题是版本问题,请看下一条)
- 欢迎使用CSDN-markdown编辑器
- Zookeeper 为什么要安装奇数节点
- grpc应用于微服务的分析,基于python
- JAVA 线程池
- S2分班考试笔试题总结
- MySQL创建高性能的索引
- boost log库学习使用三(输出日志到文件)
- poll f服务器
- Linux下网络性能评估
- eclipse中工程树形界面后方显示svn提交人(转)
- C++中的类和对象