摘要 在上一篇文章中,我们聊了聊gRPC是怎么管理一条从Client到Server的连接的。 我们聊到了gRPC拥有Resolver,用来解析地址;拥有Balancer,用来做负载均衡。 在这一篇文章中,我们将从代码的角度来分析gRPC是怎么设计Resolver和Balancer的,并会 ...
写在前面 在这个系列的文章中,我们将会从源码的层面学习和理解gRPC。 整个系列的文章的计划大概是这样的:我们会先从客户端开始,沿着调用路径逐步分析到服务端,以模块为粒度进行学习,考虑这个模块是为了解决什么问题,然后思考gRPC应该怎么去解决这个问题。在分析完这部分的架构设计后,我们会在接下来的一篇文章中研究具体的代码实现。 因此,这个系列的文章不会像之前的源码分析那样贴一大段的代码,然后加上注 ...
2021-01-24 17:05 1 535 推荐指数:
摘要 在上一篇文章中,我们聊了聊gRPC是怎么管理一条从Client到Server的连接的。 我们聊到了gRPC拥有Resolver,用来解析地址;拥有Balancer,用来做负载均衡。 在这一篇文章中,我们将从代码的角度来分析gRPC是怎么设计Resolver和Balancer的,并会 ...
当我们连接到一个失败的后端时,通常希望不要立即重试(以避免泛滥的网络或服务器的请求),而是做某种形式的指数backoff。 我们有几个参数: INITIAL_BACKOFF (第一次失败重试前后需等待多久) MULTIPLIER (在失败的重试后乘以的倍数) JITTER (随机 ...
摘要 在这篇文章中,主要是跟你介绍一下gRPC这个东西。 然后,我会创建一个简单的练习项目,作为gRPC的Hello World项目。 在这个项目中,只有很简单的一个RPC函数,用于说明gRPC的工作方式。 此外,我也会跟你分享一下我初次接触gRPC所遇到的一些坑,主要是在protocol ...
准备依赖 测试HelloWorld 打开server $env:GOPATH\src\github.com\grpc\grpc-go\examples\helloworld\greeter_server go run main.go 打开client $env:GOPATH\src ...
HttpClient连接管理 主机间建立网络连接是个非常复杂跟耗时的过程(例如TCP三次握手bla bla),在HTTP请求中,如果可以复用一个连接来执行多次请求,可以很大地提高吞吐量。 HttpClient中,连接就是一种可以复用的资源。它提供了一系列连接管理的API,帮助我们处理连接管理 ...
时间等。 比较重要的时间概念代码如下: boneCP对连接的管理 MySQL对连接有最大空闲时 ...
TCP的运输连接管理 TCP是面向连接的协议,有三个阶段:连接建立、数据传送 和 连接释放。运输连接的管理就是使运输连接的简历和释放都能正常地进行。 在TCP连接建立过程中要解决一下三个问题: 1、 要使每一方都能够确知对方的存在: 所以需要三次握手。 2、 要允许双方协商一些参数 ...
熟悉我的小伙伴都知道,我之前肝了本《HTTP 核心总结》的 PDF,这本 PDF 是取自我 HTTP 系列文章的汇总,然而我写的 HTTP 相关内容都是一年前了,我回头看了一下这本 PDF,虽然内容不 ...