ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

grpc 和 etcd

2022-07-29 16:02:55  阅读:180  来源: 互联网

标签:Http grpc gRPC 线程 etcd 客户端


gRPC选择 Http2.0 作为基础开源协议,是考虑到 Http 协议在互联网应用的广泛性。同时因为 Http2.0 支持的 Streaming 和 Duplexing 可以将请求和响应消息进行分片交叉传送,可以大幅提升传输效率,GRPC 特色的 Stream 消息正是使用了 Http2.0 的 Streaming 特性。

 

gRpc架构图:

 

 

grpc原理

  1. gRPC消息由netty /http/2 协议负责接入,通过grpc 注册的Http2Framelister将解码后的Http header和Http body 发送到gRPC的NettyServerHandler ,实现netty http/2的消息接入

  2. gRPC 的线程模型遵循 Netty 的线程分工原则,即:协议层消息的接收和编解码由 Netty 的 I/O(NioEventLoop) 线程负责;后续应用层的处理由应用线程负责,防止由于应用处理耗时而阻塞 Netty 的 I/O 线程 (因为分工原则,grpc 之间会做频繁的线程切换,如果在一次grpc调用过程中,做了多次I/O线程到应用线程之间的切换,会导致性能的下降 所以一些私有协议不太友好)

 

grpc模型

异步非阻塞的线程模型

服务端线程模型主要包括

  1. 服务端的写入,客户端的接入线程(HTTP/2 Acceptor)
  2. 网络I/O的读写线程
  3. 服务接口调用线程

客户端线程模型主要包含

  1. 客户端的链接 (HTTP/2 Connector)
  2. 网络I/O读写线程
  3. 接口调用线程
  4. 响应回调通知线程

 

Etcd是一种强一致性的分布式键值存储系统,它提供了一种可靠的方法来存储需要被分布式系统或机器集群访问的数据。它可以在网络分区期间优雅地处理leader选举,并且可以容忍机器故障,即使是leader节点。

 

etcd具备的功能

2.1 提供http api接口

使用标准的HTTP工具(如curl)读取和写入

2.2 键值队存储

将数据存储在分层组织的目录中,就像在标准文件系统中一样。

2.3 监控变化

观察特定键或目录的变化,并对值的变化作出反应。

还有常见的一些功能,比如SSL客户端认证证书, 基准测试为每个实例1000次写操作/秒密钥过期的可选ttlRaft协议等。

3. etcd被k8s使用

etcd是k8s集群管理状态的标配,它存储集群内所有与状态相关数据,比如服务发现与注册,共享配置等,它通过Raft一致性算法以保证强一致性。

分布式系统中的数据分为控制数据和应用数据,etcd处理的数据类型为控制数据,对于很少量的应用数据也可以进行处理。

目前etcd已经被CNCF(Cloud Native Computing Foundtion)收录。

标签:Http,grpc,gRPC,线程,etcd,客户端
来源: https://www.cnblogs.com/pass-ion/p/16532534.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有