Jina 轻松学 —— 部署和运行

 Jina是一个高性能的云原生分布式框架,可以利用它快速开发基于深度学习的神经搜索系统

7049149d85d1ba0e46a993080e931866.png

本期教程将带来关于Jina部署和运行的介绍,让你快速、高效地运行Jina框架!

Jina远程部署——JinaD 


Jina Daemon (简称为JinaD)可实现分布式部署、管理Jina Flow的功能 

  • JinaD是通过REST式接口对Jina框架进行远程部署和调用的后台程序

  • 用户使用JinaD在远程主机上对Flow和Executor进行创建、更新和删除

  • JinaD通过为每个Jina实例定义一个Workspace来实现部署隔离,因此可在一台主机上同时运行多个Flow

Follow下面的步骤

使用JinaD将Jina Flow运行起来吧🏃‍♀️

 服务端 


JinaD的Docker镜像文件已发布在Docker Hub中,可部署在本地或云端,等待客户端发来的请求:

docker run --add-host host.docker.internal:host-gateway \
           -v /var/run/docker.sock:/var/run/docker.sock \
           -v /tmp/jinad:/tmp/jinad \
           -p 8000:8000 \
           --name jinad \
           -d jinaai/jina:master-daemon

💡 Docker运行小提示:

  • 端口号可以通过输入docker run命令时的  -p参数更改。

  • JinaD应该始终作为docker容器部署。简单地终端运行jinad命令启动服务是无效的。

  客户端 


Step1:Jina客户端的建立

from daemon.clients import JinaDClient
client = JinaDClient(host=HOST, port=PORT)

Step2: Workspace的建立

「Workspace是JinaD中所有Jina实例的基础入口」

  • Workspace为每个容器化的Jina实例创建基本镜像文件

  • Workspace负责管理Jina实例的所有子容器的通讯网络

  • Workspace中储存了用于管理Jina实例或由Jina实例创建的所有文件

建立了客户端后,就可以向服务端发送建立workspace的请求:

from daemon.clients import JinaDClient
client = JinaDClient(host=HOST, port=PORT)
workspace_id = client.workspaces.create(paths=['path_to_awesome_project'])

 💡 Workspace运行小提示:

  • path_to_awesome_project文件夹中应该放入yaml, py_modules,  requirements.txt, .jinad等文件

  • workspace_id是新建workspace的标识

Step3:REST式的Flows建立

使用 client.flows.create ,将在workspace_id定义的workspace中创建一个新的容器,并在容器内启动一个Flow

from daemon.clients import JinaDClient
client = JinaDClient(host=HOST, port=PORT)
client.flows.create(workspace_id=workspace_id, filename='my_awesome_flow.yml')
# jflow-a71cc28f-a5db-4cc0-bb9e-bb7797172cc9

 Jina服务运行 


在这部分,我们将向你展示如何在运行Jina Flow时单独创建服务端和客户端

「单独创建服务端和客户端的应用场景」

  • 服务端和客户端运行在不同的机器上

  • 服务端和客户端有不同的生命周期

  • 一个服务端同时被多个客户端访问

  • 一个客户端想要访问多个服务端

  • 客户端可以是浏览器/curl/postman等非代码形式

Flow和Client之间的通信可以通过grpc、websocket、http三种协议。在Jina中通过在创建Flow时写入protocol=的参数设置(默认

通过grpc)

d4eabac6fcab068856fd0363e6f58f32.png

服务端

from jina import Flow

f = Flow(protocol='http', port_expose=12345)
with f:
    f.block()

客户端

from jina import Client

c = Client(protocol='http', port_expose=12345)
c.post('/', ...)

💡 Flow运行小提示:

  • protocol也可以选择grpc、websocket哦(这两种协议在处理大量数据时有更好的表现)

点击下方 “阅读原文”,获得更详细的Jina 相关教程


👇 往期精彩

0c4d663fc9c2a434807efc1e27844671.png

Jina 轻松学 —— 三个基本元素

6d5289b857462d0a03b8cce0d76387b3.png

Jina·拥抱社区!即刻申请,丰富周边送上门

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值