Connection Backoff Interop Test Descriptions
本文档用于证实客户端能够以正确的backoffs重连服务器。测试服务器有一个端口(控制端口),运行控制服务器的rpc服务,另一个端口(重试端口)来关闭任何进入的 tcp 连接。测试有下述流:
- 服务器开始在控制端口上监听。
- 客户端调用在服务器控制端口上调用一个rpc。
- 服务器开始在重试端口上监听。
- 客户端使用backoffs连接服务器的重试端口,尝试540s,也就是大约13次重试。
- 客户端在服务器控制端口上调用停止服务器。
- 客户端检查响应,看服务器是否认为backoffs符合规范,或者对响应种的backoffs做自己的检查。
客户端和服务器使用test.proto。每个语言都需要实现自己的客户端,C++服务器在多语言间共享。
Client
客户端需要接收这些参数:
- -server_control_port = PORT
- rpc连接的服务器端口。例如,“8080”。
- -server_retry_port=PORT
- 为测试备值连接服务器的端口。例如,“8081”。
客户端必须不适用TLS连接控制端口。客户端必须使用TLS连接重试端口。客户端应当诊断服务器返回的backoff状态或者检查它自己的backoffs。
客户端的过程:
- 在服务控制端口上用一个很大的deadline或者没有deadline开始调用,等待它的完成或者检验是否成功。
- 初始化一个通向服务器重试端口的channel连接,它将使用合适的backoffs进行重连。一个方便的方法来实现此功能是调用使用540s的deadline开始。超过deadline时rpc应当失败。
- 调用在服务器控制端口上停止,并检验是否成功。
- 检验回复来确定是否服务器认为backoff通过了测试。
- 可选的,客户端能够对返回的backoff做自己的检验。
Server
一个C++服务器能被用于这个测试。其他语言不需要实现一个服务器。为了最小化网络延时,服务器应当在相同的机器上运行,或者在客户端二进制可执行文件附近的机器上运行(网络上的距离概念)。
一个服务器实现对其状态的重连服务。它也在重试端口打开一个tcp server,它仅仅关闭所有进来的tcp连接来模拟连接失败。服务器将保留所有重连时间戳的记录并在响应中返回连接backoff。服务器也检查backoffs来判断是否它们符合规范并返回是否客户端通过了测试。
当另一个客户端在测试时,如果服务器接收到一个启动调用,当另一个客户端完成操作时,它结束该调用。当一个客户端正在被测试时,如果其他的主机连接服务器的retry_port,服务器将打印出一个错误,但是可能会认为客户端测试失败。
服务器接受这些参数:
- -control_port=PORT
- 控制rpcs监听端口。例如,“8080”
- –retry_port=PORT
- tcp服务器端口。例如,“8081”
Connection Backoff Interop Test Descriptions相关推荐
- GRPC Connection Backoff Protocol
GRPC Connection Backoff Protocol 当我们向一个失败的后端进行连接时,通常不希望立即重试(为了避免请求flooding网络或者服务器) ,而是去做一些某种形式的指数bac ...
- OkHttp3的连接池及连接建立过程分析
如我们前面在 OkHttp3 HTTP请求执行流程分析 中的分析,OkHttp3通过Interceptor链来执行HTTP请求,整体的执行过程大体如下: OkHttp Flow 这些Intercept ...
- HttpClient Get请求实例
Httpclient是我们平时中用的比较多的,但是一般用的时候都是去网上百度一下,把demo直接拿过来改一下用就行了,接下来我们来看他的一些具体的用法.Apache HttpComponents™项目 ...
- mysql的用户名迁移SCHEMA_数据库实时转移之Confluent环境搭建(二)
1.前言 上一篇主要介绍了Confluent的基本概念,如果对Confluent不了解的请回看上篇文章.七分熟pizza:数据库实时转移之Confluent介绍(一)zhuanlan.zhihu.c ...
- 计算机网络英文题库(含答案) Chapter 2 Application Layer
计算机网络英文题库 Chapter 2 Application Layer 1. In the following four descriptions, which one is correct? A ...
- android基础复习笔记——5.从OkHttp的源码来看HTTP
1.OkHttp的历史: 最初是square觉得android给的那一套方案不是很好用,于是他给做了一下包装,包装以后就好用了,慢慢地,他们把httpclient给剔除了,再后来,他被Google给收 ...
- 登录mysql报错Failed to connect to backoff 或 Failed to get D-Bus connection: Operation not permitted解决方法
报错: Failed to get D-Bus connection: Operation not permitted 或 mysql -u root -p 登录mysql时报错 2020-09-16 ...
- MariaDB: ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (111 Connection refused)
MariaDB : ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (111 "Connection ref ...
- 【转】The underlying connection was closed
转自: https://support.microsoft.com/en-us/kb/915599 SUMMARY This article describes error messages that ...
最新文章
- oracle可视化工具IB,oracle小记:dba_data_files
- 吕乐:医学影像学者的医者仁心 | 智源专访
- Python——拼接字符串
- python解非线性规划问题讲析_python中线性规划中的单纯形法、scipy库与非线性规划求解问题...
- JAVA_OA(六):SpringMVC拦截器
- handler和thread之间如何传输数据_网线虽常见,学问可不少,科普一下网线的简单知识及如何选择网线...
- 强大的CSS3动画库animate.css
- docker之使用supervisor管理多个进程
- COCO 54.7mAP!DetectoRS目标检测:改进主干网,成就新高度!
- 皮克公式(格点多边形内点的个数)
- Windows系统重装教程
- c语言确定闰月的步骤,怎么判断是闰月,农历闰月是如何确定的?
- edge浏览器,无法继续下载,提示检测到病毒的问题
- idea错误:否则 JavaFX 应用程序类必须扩展javafx.application.Application
- js base64解码JWT失败:VM273:1 Uncaught DOMException: Failed to execute 'atob' on 'Window': The string to
- aws mysql 多区_AWS RDS多可用区+EC2实例跑mysql从库的测试
- xcode 工程常见问题
- linux日志查看技巧
- 基于ZigBee和STM32的智能家居控制系统的设计与实现(二)
- node.js毕业设计安卓英语学习app(程序+APP+LW)