jina实现并发扩展的调研

news2024/11/14 15:38:29

基于之前对于clip-as-service的调研,我在官方文档中看到横向扩展页面中的副本相关内容,可以解决并发问题,于是动手验证了一番

参考链接

(官方文档)link

官方文档的描述

在这里插入图片描述

首先我整了一个服务端

如果需要开启副本,就创建这样的flow后启动server程序
f = Flow(protocol=‘http’,port=12345).add(name=‘myexec1’, uses=MyExecutor, replicas=5)
如果不开启副本,就创建这样的flow之后再启动程序
f = Flow(protocol=‘http’,port=12345).add(name=‘myexec1’, uses=MyExecutor)

from jina import Flow, Executor, requests
import time

class MyExecutor(Executor):
    @requests(on='/bar')
    def foo(self, **kwargs):
        time.sleep(2)


if __name__ == '__main__':
    # f = Flow(protocol='http',port=12345).add(name='myexec1', uses=MyExecutor, replicas=5)
    f = Flow(protocol='http',port=12345).add(name='myexec1', uses=MyExecutor)

    with f:
        print(f.is_flow_ready())
        f.block()

把服务端跑起来,输出如下
在这里插入图片描述
不开启副本的拓扑图如下
在这里插入图片描述
开启副本之后的拓扑图如下
在这里插入图片描述

第一个客户端

from jina import Client, Document
import time

c = Client(protocol='http',port=12345)
time1 = time.time()
c.post(on='/bar')
c.post(on='/bar')
c.post(on='/bar')
# 此处复制调用多个c.post(on='/bar'),为了便于观看
c.post(on='/bar')
time2 = time.time()
print(time2-time1)

再来一个客户端

from jina import Client, Document
import time

c = Client(protocol='http',port=12345)
time1 = time.time()
c.post(on='/bar')
c.post(on='/bar')
time2 = time.time()
print(time2-time1)

同一个客户端调用多次是否每次调用由不同的executor执行

这个我暂时没有在官方文档上找到区分副本的方法,所以还无法验证,等我问一下工作人员再进行补充

不同客户端调用时间分析

每一个executor我设置都要睡眠2s
在不开启副本的情况下测试

调用客户端调用次数是否开启副本消耗时间
165次150s
22次6s

在开启5个副本的情况下测试

调用客户端调用次数是否开启副本消耗时间
165次133s
22次4s

由此可见,不同客户端在发送请求时,flow会把不同客户端的请求分配到不同的executor上面,如果A要调用1000次,B要调用2次,B的执行速度不会受到A客户端的影响

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/141679.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

线段相交判断

一、问题描述已知两条线段P1P2和Q1Q2,判断P1P2和Q1Q2是否相交,若相交,求出交点。两条线段的位置关系可以分为三类:[1] 有重合部分;[2] 无重合部分但有交点;[3] 无交点。注意:这里讨论的是两条线段是否相交,…

典型相关分析(附SPSS操作)

典型相关分析:研究两组变量(每个变量中都可能有多个指标)之间相关关系的一种多元统计方法。他能够揭示出两组变量之间的内在联系。选能较为综合、全面的衡量所在组的内在规律。一组变量最简单的综合形式就是该组变量的线性组合。典型相关分析…

还在用破-解版Navicat?有款纯Web化SQL开发工具,免安装还免费

经常使用SQL工具的开发者对Navicat一定都不陌生。这款软件作为一款全球化的多数据库管理工具,这些年逐步得到全国各地SQLer(SQL开发者)的关注。 与其他很多外来的软件产品一样,由于价格原因,很多SQLer感觉不太适合适应…

Maven(通用结构,集合了测试、打包、发布功能为一体)

Maven基础: 作用: 1.提供一套标准化的项目结构(用于例如idea导入到eclipse或其他软件中,项目结构不会紊乱) 2.提供一套标准化构建流程(编译、测试、打包、发布...)(右键Maven-run…

VS中的cmake

新建cmake项目要保证VS安装了SDK,这里是VS2019版本打开创建新项目——查找cmake——设置路径和项目名称新建项目下有三个文件:(1)与项目同名的cpp文件(2)与项目同名的h文件(3)cmake的…

Linux文件/文件夹权限详解

在Linux中,一个文件/文件夹的权限, 从文件/文件夹的归属来看,可以分为三类,一是文件/文件夹所有者权限、二是所有者所在的用户组权限、三是公共(不限)权限。 从文件本身的操作来看,也可以分为…

SpringBoot+VUE前后端分离项目学习笔记 - 【15 SpringBoot和Vue实现注册和异常处理】

前端代码 Header.vue 获取登录用户的昵称在Header进行显示&#xff0c;加入个人信息的路由 <template><div style"line-height: 60px; display: flex"><div style"flex: 1;"><span :class"collapseBtnClass" style"…

vue 父子组件通讯时执行的生命周期的顺序

Vue的生命周期 Vue的生命周期分为三个阶段&#xff1a;初始化阶段&#xff0c;更新数据阶段&#xff0c;销毁实例阶段 1&#xff0c;初始化阶段&#xff1a; beforeCreate()实例创建前&#xff1a;数据和模板均未获取到created()实例创建后&#xff1a;最早可以访问到data数…

sqlmap之绕过安全狗

sql注入不会绕过WAF&#xff1f;关注我&#xff0c;让我带你由简入难实战各个WAF&#xff0c;今天先来看看web安全渗透必会的安全狗WAF&#xff0c;你会绕吗&#xff1f;看我带你将它拿下 目录 一&#xff1a;环境配置 1.sqli-labs的sql注入靶场环境 2.安全狗waf软件 3.检测…

nrm使用详解

目录1. 什么是 nrm2. 安装 nrm3. 使用 nrm3.1 查看所有源列表3.2 切换源3.3 添加源3.4 删除源3.5 查看所有源的响应速率1. 什么是 nrm npm 的源管理器&#xff0c;切换下载安装 项目依赖 时的源地址。默认包含 npm yarn tencent cnpm taobao npmMirror&#xff0c;支持添加、删…

docker安装kafka

1.下载镜像 docker pull wurstmeister/kafka docker pull zookeeper:latest 2.启动镜像 1&#xff09;启动zookeeper docker run -d -p2181:2181 -v /etc/localtime:/etc/localtime --name zookeeper zookeeper:latest2)启动kafka docker run -d -p9092:9092 \-e KAFKA_ZO…

Twitter开发者账号申请

Twitter开发者账号申请 前期准备 Twitter绑定手机号 申请开发者账号要求绑定手机号&#xff0c;建议境外手机号&#xff0c;国内手机号容易出现收不到验证码的问题。一个可以正常使用的Twitter账号 被封的不可以。 开始注册 注册开发者管理平台账号 登录Twitter开发者管理…

STM32——ADC模数转换器

文章目录一、ADC模数转化器ADC简介逐次逼近型ADCADC框图二、ADC基本结构三、触发转换控制四、输入通道五、规则组的四种转换模式单次转换&#xff0c;非扫描模式连续转换&#xff0c;非扫描模式单次转换&#xff0c;扫描模式连续转换&#xff0c;扫描模式六、数据对齐七、转换时…

Linux系统下的rpm管理

文章目录Linux系统下的rpm管理1.介绍2.rpm包的简单查询指令3.rpm包的其它查询指今4.卸载rpm包5.安装rpm包Linux系统下的rpm管理 1.介绍 rpm用于互联网下载包的打包及安装工具&#xff0c;它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件。RPM是RedHat Package Manage…

【设计篇】35 # 如何让可视化设计更加清晰?

说明 【跟月影学可视化】学习笔记。 分清信息主次&#xff0c;建立视觉层次 用醒目的颜色突出显示数据&#xff0c;把被淡化的其他视觉元素当作背景。 比如&#xff1a;平均温度与露点的散点例子 <!DOCTYPE html> <html lang"en"><head><m…

linux上安装python3.7.4

1.wget下载python3安装包 wget https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tgz2.wget下载的压缩包默认在~目录下 3.进入~目录&#xff0c;直接解压压缩包 tar -xzvf Python-3.7.2.tgz4.进入python解压后的目录&#xff0c;为python配置环境&#xff0c;指定pytho…

CMMI-培训管理

培训管理&#xff08;Training Management, TM&#xff09;是指根据机构&#xff08;或项目&#xff09;的需求来制定培训计划&#xff0c;并监督该计划的实施&#xff0c;确保培训取得预期效果。培训管理过程域是SPP模型的重要组成部分。本规范阐述了培训管理过程域的两个主要…

头歌:UDP Ping程序实现 接收并转发消息

头歌平台&#xff1a;头歌实践教学平台 (educoder.net)任务描述本关任务&#xff1a;在 Ping 服务端程序框架中&#xff0c;完成接收数据&#xff0c;并回传给相应客户端。如何接收数据包套接字数据在 UDP 通信中使用sendto()函数发送 UDP 数据。将数据发送到套接字&#xff0c…

Parallel Processing in Python - Python 中的并行处理

并行处理可以增加程序完成的任务数量&#xff0c;从而减少整体处理时间。这些有助于处理大规模问题。 参考链接&#xff1a;Parallel Processing in Python - GeeksforGeeks 1 并行处理介绍 对于并行性&#xff0c;重要的是将问题划分为不依赖于其他子单元 (或较少依赖) 的子…

【Vue中使用Echarts】大屏可视化项目整体布局(pink老师vue 版)

文章目录一、效果展示二、基本的布局三、背景四、代码布局中遇到的一些问题一、效果展示 先看一下展示的效果&#xff0c;无论是尺寸多宽的屏幕&#xff0c;都会将内容显示完整&#xff0c;做到了正正的响应式。唯一不足的是图表中的样例&#xff0c;会随着图表的缩放而变换位…