其他
Jina 轻松学 —— 部署和运行
「Jina Daemon (简称为JinaD)可实现分布式部署、管理Jina Flow的功能」
JinaD是通过REST式接口对Jina框架进行远程部署和调用的后台程序 用户使用JinaD在远程主机上对Flow和Executor进行创建、更新和删除 JinaD通过为每个Jina实例定义一个Workspace来实现部署隔离,因此可在一台主机上同时运行多个Flow
JinaD的Docker镜像文件已发布在Docker Hub中,可部署在本地或云端,等待客户端发来的请求:
-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 run命令时的 -p参数更改。
JinaD应该始终作为docker容器部署。简单地终端运行jinad命令启动服务是无效的。
client = JinaDClient(host=HOST, port=PORT)
「Workspace是JinaD中所有Jina实例的基础入口」
Workspace为每个容器化的Jina实例创建基本镜像文件
Workspace负责管理Jina实例的所有子容器的通讯网络
Workspace中储存了用于管理Jina实例或由Jina实例创建的所有文件
建立了客户端后,就可以向服务端发送建立workspace的请求:
client = JinaDClient(host=HOST, port=PORT)
workspace_id = client.workspaces.create(paths=['path_to_awesome_project'])
path_to_awesome_project文件夹中应该放入yaml, py_modules, requirements.txt, .jinad等文件 workspace_id是新建workspace的标识
使用 client.flows.create ,将在workspace_id定义的workspace中创建一个新的容器,并在容器内启动一个Flow
client = JinaDClient(host=HOST, port=PORT)
client.flows.create(workspace_id=workspace_id, filename='my_awesome_flow.yml')
# jflow-a71cc28f-a5db-4cc0-bb9e-bb7797172cc9
「单独创建服务端和客户端的应用场景」
服务端和客户端运行在不同的机器上 服务端和客户端有不同的生命周期 一个服务端同时被多个客户端访问 一个客户端想要访问多个服务端 客户端可以是浏览器/curl/postman等非代码形式
Flow和Client之间的通信可以通过grpc、websocket、http三种协议。在Jina中通过在创建Flow时写入protocol=的参数设置(默认
通过grpc)
服务端
f = Flow(protocol='http', port_expose=12345)
with f:
f.block()
客户端
c = Client(protocol='http', port_expose=12345)
c.post('/', ...)
protocol也可以选择grpc、websocket哦(这两种协议在处理大量数据时有更好的表现)
Jina 轻松学 —— 三个基本元素
Jina·拥抱社区!即刻申请,丰富周边送上门