【亚马逊云】基于 Amazon EKS 搭建开源向量数据库 Milvus

news2024/11/27 14:42:07

文章目录

    • 一、先决条件
      • 1.1 安装AWS CLI ✅
      • 1.2 安装 EKS 相关工具✅
      • 1.3 创建 Amazon S3 存储桶✅
      • 1.4 创建 Amazon MSK 实例✅
    • 二、创建EKS集群
    • 三、创建 ebs-sc StorageClass
    • 四、安装 AWS Load Balancer Controller
    • 五、部署 Milvus 数据库
      • 5.1 添加 Milvus Helm 仓库
      • 5.2 配置 S3 作为 Object Storage
      • 5.3 配置 MSK 作为 Message Storage
    • 六、优化 Milvus 配置
      • 6.1 配置 Milvus 服务可供 EKS 集群外访问
      • 6.2 安装可视化管理工具 Attu
    • 七、清理资源
    • 八、参考链接

一、先决条件

1.1 安装AWS CLI ✅

一台个人电脑或者 Amazon EC2,安装 AWS CLI,并配置相应的权限。如果您使用 Amazon Linux 2 或者 Amazon Linux 2023,AWS CLI 工具默认已经安装。

参考链接:【Amazon】安装卸载AWS CLI操作流程(Windows 、Linux系统)

1.2 安装 EKS 相关工具✅

安装 EKS 相关工具,包括 Helm,Kubectl,eksctl 等。

C:\Users\xyb>helm version
version.BuildInfo{Version:"v3.16.2", GitCommit:"13654a52f7c70a143b1dd51416d633e1071faffb", GitTreeState:"clean", GoVersion:"go1.22.7"}

C:\Users\xyb>kubectl version
Client Version: v1.30.2
Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
Unable to connect to the server: dial tcp 127.0.0.1:7548: connectex: No connection could be made because the target machine actively refused it.

C:\Users\xyb>eksctl version
0.145.0

1.3 创建 Amazon S3 存储桶✅

C:\Users\xyb>aws s3api create-bucket --bucket xybdiy-milvus-bucket --region us-east-1
{
    "Location": "/xybdiy-milvus-bucket"
}

1.4 创建 Amazon MSK 实例✅

MSK 创建注意事项:

1)当前最新稳定版本的 Milvus(v2.2.8)依赖 Kafka 的 autoCreateTopics 特性,因此在创建 MSK 时需要使用自定义配置,并将属性 auto.create.topics.enable 由默认的 false 改为 true。另外,为了提高 MSK 的消息吞吐量,建议调大 message.max.bytes 和 replica.fetch.max.bytes 的值。

auto.create.topics.enable=true
message.max.bytes=10485880
replica.fetch.max.bytes=20971760

2)Milvus 不支持 MSK 的 IAM role-based 认证,因此 MSK 创建时需要在安全配置里打开 SASL/SCRAM authentication 选项,并在 Secret Manager 里配置 username 和 password。s

img

3)MSK 的安全组要允许 EKS 集群安全组或者 IP 地址段进行访问。

image-20241022171747362

image-20241022171815887

image-20241022171852954

image-20241022172153358

image-20230825171332428

image-20230825171404973

image-20230825171500657

二、创建EKS集群

  • 创建eks_cluster.yaml配置文件
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: xyb-milvus-cluster
  region: us-east-1
  version: "1.26"


iam:
  withOIDC: true

  serviceAccounts:
  - metadata:
      name: aws-load-balancer-controller
      namespace: kube-system
    wellKnownPolicies:
      awsLoadBalancerController: true
  - metadata:
      name: milvus-s3-access-sa
      # if no namespace is set, "default" will be used;
      # the namespace will be created if it doesn't exist already
      namespace: milvus
      labels: {aws-usage: "milvus"}
    attachPolicyARNs:
    - "arn:aws:iam::aws:policy/AmazonS3FullAccess"

managedNodeGroups:
- name: ng-1-milvus
  labels: { role: milvus }
  instanceType: m6i.2xlarge
  desiredCapacity: 3
  privateNetworking: true
  iam:
    withAddonPolicies:
      autoScaler: true
  availabilityZones: ["us-east-1a", "us-east-1b", "us-east-1c"]

availabilityZones: ["us-east-1a", "us-east-1b", "us-east-1c"]

addons:
- name: vpc-cni # no version is specified so it deploys the default version
  attachPolicyARNs:
    - arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy
- name: coredns
  version: latest # auto discovers the latest available
- name: kube-proxy
  version: latest
- name: aws-ebs-csi-driver
  wellKnownPolicies:      # add IAM and service account
    ebsCSIController: true
  • 运行 eksctl 命令创建 EKS 集群。
eksctl create cluster -f eks_cluster.yaml

image-20241017225635618

创建完成。

image-20230825144856725

该过程将创建如下资源:

  • 创建一个指定版本的 EKS 集群。
  • 创建一个拥有 3 个 m6i.2xlarge EC2 实例的托管节点组。
  • 创建 **IAM OIDC 身份提供商**和名为 aws-load-balancer-controller 的 ServiceAccount,后文安装 AWS Load Balancer Controller 时使用。
  • 创建一个命名空间 milvus,并在此命名空间里创建名 milvus-s3-access-sa 的 ServiceAccount。后文为 Milvus 配置 S3 做 Object Storage 时使用。
    注意,此处为了方便授予了 milvus-s3-access-sa 所有 S3 访问权限,在生产环境部署时建议遵循最小化授权原则,只授予指定用于 Milvus 的 S3 存储桶的访问权限。
  • 安装多个插件,其中 vpc-cni,coredns,kube-proxy 为 EKS 必备核心插件。aws-ebs-csi-driver 是 AWS EBS CSI 驱动程序,允许 EKS 集群管理 Amazon EBS 持久卷的生命周期。

等待集群创建完成。集群创建过程中会自动创建或者更新 kubeconfig 文件。您也可以运行如下命令手动更新,注意将 region-code 替换为创建集群的 AWS 区域,将 cluster-name 替换为您的集群名称。

aws eks update-kubeconfig --region <region-code> --name <cluster-name>
aws eks update-kubeconfig --region us-east-1 --name xyb-milvus-cluster

输出内容:

Added new context arn:aws:eks:us-east-1:580001333004:cluster/xyb-milvus-cluster to C:\Users\xyb\.kube\config
  • 集群创建完毕之后,运行如下命令就可以查看您的集群节点。
kubectl get nodes -A -o wide

输出内容:

C:\Users\xyb>kubectl get nodes -A -o wide
NAME                              STATUS   ROLES    AGE     VERSION                INTERNAL-IP       EXTERNAL-IP   OS-IMAGE         KERNEL-VERSION                  CONTAINER-RUNTIME
ip-192-168-123-251.ec2.internal   Ready    <none>   3d21h   v1.26.15-eks-f479e3c   192.168.123.251   <none>        Amazon Linux 2   5.10.226-214.879.amzn2.x86_64   containerd://1.7.22
ip-192-168-142-202.ec2.internal   Ready    <none>   3d21h   v1.26.15-eks-f479e3c   192.168.142.202   <none>        Amazon Linux 2   5.10.226-214.879.amzn2.x86_64   containerd://1.7.22
ip-192-168-160-82.ec2.internal    Ready    <none>   3d21h   v1.26.15-eks-f479e3c   192.168.160.82    <none>        Amazon Linux 2   5.10.226-214.879.amzn2.x86_64   containerd://1.7.22

image-20241022164801917

image-20241022170739427

image-20241022164916007

三、创建 ebs-sc StorageClass

创建 ebs-sc-StorageClass,配置 GP3 作为存储类型,并设置为 default StorageClass。Milvus 使用 etcd 作为 Meta Storage,需要依赖该 StorageClass 创建和管理 PVC。

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: ebs-sc
  annotations:
    storageclass.kubernetes.io/is-default-class: "true"
provisioner: ebs.csi.aws.com
volumeBindingMode: WaitForFirstConsumer
parameters:
  type: gp3
kubectl apply -f ebs-sc-StorageClass.yaml

并将原来的 gp2 StorageClass 设置为非默认:

$ kubectl patch storageclass gp2 -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'
storageclass.storage.k8s.io/gp2 patched
C:\Users\xyb>kubectl get storageclass
NAME             PROVISIONER      RECLAIMPOLICY   VOLUMEBINDINGMODE  ALLOWVOLUMEEXPANSION   AGE
ebs-sc (default)   ebs.csi.aws.com         Delete     WaitForFirstConsumer   false   3d21h
gp2                kubernetes.io/aws-ebs   Delete WaitForFirstConsumer       false   3d22h

四、安装 AWS Load Balancer Controller

安装 AWS Load Balancer Controller,后文中 Milvus Service 和 Attu Ingress 需要用到该 Controller,我们在此提前进行安装。

  • 安装helm
$ curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 > get_helm.sh
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 11521  100 11521    0     0  64727      0 --:--:-- --:--:-- --:--:-- 65090

$ chmod 700 get_helm.sh

$ ./get_helm.sh
[WARNING] Could not find git. It is required for plugin installation.
Downloading https://get.helm.sh/helm-v3.12.3-linux-amd64.tar.gz
Verifying checksum... Done.
Preparing to install helm into /usr/local/bin
helm installed into /usr/local/bin/helm
[ec2-user@ip-172-31-35-151 ~]$ helm version
version.BuildInfo{Version:"v3.12.3", GitCommit:"3a31588ad33fe3b89af5a2a54ee1d25bfe6eaa5e", GitTreeState:"clean", GoVersion:"go1.20.7"}
  • 添加 eks-charts 仓库并更新。
helm repo add eks https://aws.github.io/eks-charts
helm repo update
C:\Users\xyb>helm repo update
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "eks" chart repository
...Successfully got an update from the "crane" chart repository
...Successfully got an update from the "prometheus-community" chart repository
...Successfully got an update from the "grafana" chart repository
Update Complete. ⎈Happy Helming!

安装 AWS Load Balancer Controller。请将 cluster-name 替换为您的集群名称。此处名为 aws-load-balancer-controller 的 ServiceAccount 已经在创建 EKS 集群时创建。

helm install aws-load-balancer-controller eks/aws-load-balancer-controller \
  -n kube-system \
  --set clusterName=xyb-milvus-cluster \
  --set serviceAccount.create=false \
  --set serviceAccount.name=aws-load-balancer-controller 
C:\Users\xyb>helm install aws-load-balancer-controller eks/aws-load-balancer-controller -n kube-system --set clusterName=xyb-milvus-cluster --set serviceAccount.create=false --set serviceAccount.name=aws-load-balancer-controller
NAME: aws-load-balancer-controller
LAST DEPLOYED: Fri Oct 18 19:20:36 2024
NAMESPACE: kube-system
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
AWS Load Balancer controller installed!

检查 Controller 是否安装成功。

kubectl get deployment -n kube-system aws-load-balancer-controller

输出示例如下。

NAME                           READY   UP-TO-DATE   AVAILABLE   AGE
aws-load-balancer-controller   2/2     2            2           3d21h

五、部署 Milvus 数据库

Milvus 支持 Operator 和 Helm 等多种部署方式,相比较而言,通过 Operator 进行部署和管理要更为简单,但 Helm 方式要更加直接和灵活,因此本文采用 Helm 的部署方式。 在使用 Helm 部署 Milvus 时,可以通过配置文件 values.yaml 进行自定义配置,点击 values.yaml 可以查看所有配置选项。 Milvus 默认创建 in-cluster 的 minio 和 pulsar 分别作为 Object Storage 和 Message Storage。为了更适合在生产环境使用,我们通过配置文件使用 S3 和 MSK 作为替代。

5.1 添加 Milvus Helm 仓库

首先,添加 Milvus Helm 仓库并更新。

helm repo add milvus https://milvus-io.github.io/milvus-helm/
helm repo update
helm repo list
$ helm repo add milvus https://milvus-io.github.io/milvus-helm/
"milvus" has been added to your repositories

$ helm repo update
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "crane" chart repository
...Successfully got an update from the "milvus" chart repository
...Successfully got an update from the "eks" chart repository
...Successfully got an update from the "prometheus-community" chart repository
...Successfully got an update from the "grafana" chart repository
Update Complete. ⎈Happy Helming!⎈

$ helm repo list
NAME                    URL
prometheus-community    https://prometheus-community.github.io/helm-charts
grafana                 https://grafana.github.io/helm-charts
crane                   https://gocrane.github.io/helm-charts
eks                     https://aws.github.io/eks-charts
milvus                  https://milvus-io.github.io/milvus-helm/

5.2 配置 S3 作为 Object Storage

image-20241022170844037

配置 S3 作为 Object Storage。配置 serviceAccount 是为了授予 Milvus 访问 S3 的权限(此处为 milvus-s3-access-sa,在创建 EKS 集群时已经创建)。注意将替换为创建集群的 AWS 区域。将替换为 S3 存储桶的名字,替换为 S3 存储桶的前缀(可以为空)。

  • milvus_cluster.yaml
###################################
# Service account
# - this service account are used by External S3 access
###################################
serviceAccount:
  create: false
  name: milvus-s3-access-sa

###################################
# Close in-cluster minio
###################################
minio:
  enabled: false

###################################
# External S3
# - these configs are only used when `externalS3.enabled` is true
###################################
externalS3:
  enabled: true
  host: "s3.us-east-1.amazonaws.com"
  port: "443"
  useSSL: true
  bucketName: "xybdiy-milvus-bucket"
  rootPath: ""
  useIAM: true
  cloudProvider: "aws"
  iamEndpoint: ""

###################################
# Close in-cluster pulsar
################################### 
pulsar:
  enabled: false

###################################
# External kafka
# - these configs are only used when `externalKafka.enabled` is true
###################################
externalKafka:
  enabled: true
  brokerList: "b-3.xybmskcluster.loo6pa.c5.kafka.us-east-1.amazonaws.com:9096,b-2.xybmskcluster.loo6pa.c5.kafka.us-east-1.amazonaws.com:9096,b-1.xybmskcluster.loo6pa.c5.kafka.us-east-1.amazonaws.com:9096"
  securityProtocol: SASL_SSL
  sasl:
    mechanisms: SCRAM-SHA-512
    username: "xyb"
    password: "xyb-secret"

5.3 配置 MSK 作为 Message Storage

注意将替换为 MSK 的 SASL/SCRAM 认证类型对应的 endpoint 地址,和替换为 MSK 的账号和密码。注意:MSK 的安全组要配置允许 EKS 集群安全组或者 IP 地址段进行访问。

image-20241022171614427

image-20241022171852954

将 2-3 步的配置合并并保存为 milvus_cluster.yaml 文件,并使用 Helm 命令创建 Milvus(部署在 milvus 命名空间)。注意,您可以将 demo 替换为自定义名称。

helm install xyb milvus/milvus -n milvus -f milvus_cluster.yaml

运行如下命令检查 pods 的状态。

kubectl get pods -n milvus
$ helm install xyb milvus/milvus -n milvus -f milvus_cluster.yaml
NAME: xyb
LAST DEPLOYED: Sat Aug 26 02:38:51 2023
NAMESPACE: milvus
STATUS: deployed
REVISION: 1
TEST SUITE: None

running 状态表明创建成功。

C:\Users\xyb>kubectl get pods -n milvus
NAME                                        READY   STATUS    RESTARTS   AGE
xybdiy-etcd-0                               1/1     Running   0          2d2h
xybdiy-etcd-1                               1/1     Running   0          2d2h
xybdiy-etcd-2                               1/1     Running   0          2d2h
xybdiy-milvus-attu-6f9b87d587-rsswc         1/1     Running   0          2d2h
xybdiy-milvus-datacoord-5fb796c6b9-557qk    1/1     Running   0          2d2h
xybdiy-milvus-datanode-7c5cd77cd7-jp2bb     1/1     Running   0          2d2h
xybdiy-milvus-indexcoord-55bc557c95-kwbkz   1/1     Running   0          2d2h
xybdiy-milvus-indexnode-6cd5d59666-5bphz    1/1     Running   0          2d2h
xybdiy-milvus-proxy-6745bb9c4f-jq584        1/1     Running   0          2d2h
xybdiy-milvus-querycoord-68b6bf796d-fsw5j   1/1     Running   0          2d2h
xybdiy-milvus-querynode-df7c4cd8-5h46h      1/1     Running   0          2d2h
xybdiy-milvus-rootcoord-69fd744f4c-6vkn2    1/1     Running   0          2d2h

获取 Milvus 访问终端节点。

kubectl get svc -n milvus
C:\Users\xyb>kubectl get svc -n milvus
NAME                       TYPE           CLUSTER-IP       EXTERNAL-IP                                                   PORT(S)                          AGE
xybdiy-etcd                ClusterIP      10.100.184.133   <none>                                                        2379/TCP,2380/TCP                2d3h
xybdiy-etcd-headless       ClusterIP      None             <none>                                                        2379/TCP,2380/TCP                2d3h
xybdiy-milvus              LoadBalancer   10.100.95.102    milvus-service-b239e43411544264.elb.us-east-1.amazonaws.com   19530:31778/TCP,9091:30223/TCP   2d3h
xybdiy-milvus-attu         ClusterIP      10.100.224.189   <none>                                                        3000/TCP                         2d2h
xybdiy-milvus-datacoord    ClusterIP      10.100.203.27    <none>                                                        13333/TCP,9091/TCP               2d3h
xybdiy-milvus-datanode     ClusterIP      None             <none>                                                        9091/TCP                         2d3h
xybdiy-milvus-indexcoord   ClusterIP      10.100.49.235    <none>                                                        31000/TCP,9091/TCP               2d3h
xybdiy-milvus-indexnode    ClusterIP      None             <none>                                                        9091/TCP                         2d3h
xybdiy-milvus-querycoord   ClusterIP      10.100.34.57     <none>                                                        19531/TCP,9091/TCP               2d3h
xybdiy-milvus-querynode    ClusterIP      None             <none>                                                        9091/TCP                         2d3h
xybdiy-milvus-rootcoord    ClusterIP      10.100.33.171    <none>                                                        53100/TCP,9091/TCP               2d3h

image-20241022172757013

六、优化 Milvus 配置

至此,我们已经成功地部署了 Milvus 集群,但很多 Milvus 的默认配置无发满足生产环境自定义需求,本部分主要围绕如下三个方面进行配置优化。

  1. Milvus 默认部署 ClusterIP 类型的 service,这种 service 只能在 EKS 内部访问,将 Milvus service 更改为 Loadbalancer 类型,使集群外也可以进行访问。

  2. 安装 Attu,通过可视化界面管理 Milvus 数据库。

  3. 优化各个组件的配置,使其满足于您的负载情况。

前两项配置需要用到 AWS Load Balancer Controller,请确认在第三章中完成安装。

6.1 配置 Milvus 服务可供 EKS 集群外访问

Helm 支持在创建之后使用 helm upgrade 命令进行配置更新,我们采用这种方式对 Milvus 进行配置。 使用如下代码创建 milvus_service.yaml 配置文件,该配置文件指定使用 Load Balancer Controller 创建 LoadBalancer 类型的 service,以方便在集群外进行访问。LoadBalancer 类型的 Service 使用 Amazon NLB 作为负载均衡器。根据安全最佳实践,此处 aws-load-balancer-scheme 默认配置为 internal 模式,即只允许内网访问 Milvus。如果您确实需要通过 Internet 访问 Milvus,需要将 internal 更改为 internet-facing。点击**查看** NLB 配置说明。

## Expose the Milvus service to be accessed from outside the cluster (LoadBalancer service).
## or access it from within the cluster (ClusterIP service). Set the service type and the port to serve it.
##
service:
  type: LoadBalancer
  port: 19530
  annotations: 
    service.beta.kubernetes.io/aws-load-balancer-type: external #AWS Load Balancer Controller fulfills services that has this annotation 
    service.beta.kubernetes.io/aws-load-balancer-name : milvus-service #User defined name given to AWS Network Load Balancer
    service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing # internal or internet-facing, later allowing for public access via internet
    service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: ip #The Pod IPs should be used as the target IPs (rather than the node IPs)

然后使用 Helm 更新配置文件。

helm upgrade xyb milvus/milvus -n milvus --reuse-values -f milvus_service.yaml

运行如下命令:

kubectl get svc -n milvus

可以看到 xybdiy-milvus 服务已经更改为 LoadBalancer 类型,底层使用 NLB 作为服务均衡器,其中 EXTERNAL-IP 一栏即为集群外访问地址。

C:\Users\xyb>kubectl get svc -n milvus
NAME                       TYPE           CLUSTER-IP       EXTERNAL-IP                                                   PORT(S)                          AGE
xybdiy-etcd                ClusterIP      10.100.184.133   <none>                                                        2379/TCP,2380/TCP                2d3h
xybdiy-etcd-headless       ClusterIP      None             <none>                                                        2379/TCP,2380/TCP                2d3h
xybdiy-milvus              LoadBalancer   10.100.95.102    milvus-service-b239e43411544264.elb.us-east-1.amazonaws.com   19530:31778/TCP,9091:30223/TCP   2d3h
xybdiy-milvus-attu         ClusterIP      10.100.224.189   <none>                                                        3000/TCP                         2d2h
xybdiy-milvus-datacoord    ClusterIP      10.100.203.27    <none>                                                        13333/TCP,9091/TCP               2d3h
xybdiy-milvus-datanode     ClusterIP      None             <none>                                                        9091/TCP                         2d3h
xybdiy-milvus-indexcoord   ClusterIP      10.100.49.235    <none>                                                        31000/TCP,9091/TCP               2d3h
xybdiy-milvus-indexnode    ClusterIP      None             <none>                                                        9091/TCP                         2d3h
xybdiy-milvus-querycoord   ClusterIP      10.100.34.57     <none>                                                        19531/TCP,9091/TCP               2d3h
xybdiy-milvus-querynode    ClusterIP      None             <none>                                                        9091/TCP                         2d3h
xybdiy-milvus-rootcoord    ClusterIP      10.100.33.171    <none>                                                        53100/TCP,9091/TCP               2d3h

6.2 安装可视化管理工具 Attu

Attu 是 Milvus 的高效开源管理工具。它具有直观的图形用户界面(GUI),使您可以轻松地与数据库进行交互。 只需点击几下,您就可以可视化集群状态、管理元数据、执行数据查询等等。

本部分我们使用 Helm 安装并配置 Attu。

首先,使用如下代码创建 milvus_attu.yaml 配置文件。在配置文件里开启 Attu 选项,配置使用 AWS ALB 作为 Ingress,并设置为 internet-facing 类型可通过 Internet 亦可访问 Attu。点击**查看** ALB 配置说明。

attu:
  enabled: true
  name: attu
  ingress:
    enabled: true
    annotations: 
      kubernetes.io/ingress.class: alb # Annotation: set ALB ingress type
      alb.ingress.kubernetes.io/scheme: internet-facing #Places the load balancer on public subnets
      alb.ingress.kubernetes.io/target-type: ip #The Pod IPs should be used as the target IPs (rather than the node IPs)
      alb.ingress.kubernetes.io/group.name: attu # Groups multiple Ingress resources
    hosts:
      - 

然后使用 Helm 更新配置文件。

helm upgrade xyb milvus/milvus -n milvus --reuse-values -f milvus_attu.yaml

再次运行如下命令:

kubectl get ingress -n milvus

可以看到名为 xyb-milvus-attu 的 Ingress,其中 ADDRESS 一栏即为访问地址。

C:\Users\xyb>kubectl get ingress -n milvus
NAME                 CLASS    HOSTS   ADDRESS                                                      PORTS   AGE
xybdiy-milvus-attu   <none>   *       k8s-attu-f6a1785390-1056545378.us-east-1.elb.amazonaws.com   80      2d2h

image-20241022173439559

image-20241022173458109

七、清理资源

C:\Users\xyb>helm uninstall xybdiy -n milvus
release "xybdiy" uninstalled
C:\Users\xyb>eksctl delete cluster --name  xyb-milvus-cluster --region us-east-1
2

image-20241022180215079

八、参考链接

【1】 https://zilliz.com/what-is-milvus

【2】在 EKS 上部署 Milvus 集群 | Milvus 文档

【3】https://aws.amazon.com/cn/blogs/china/build-open-source-vector-database-milvus-based-on-amazon-eks/

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

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

相关文章

Vue2、Element中实现Enter模拟Tab,实现切换下一个框的效果

目录 &#x1f4c3;前序 &#x1f449;开发历程 &#x1f4bb;实际代码 &#x1f4fd;实现效果图 前序 在几乎所有的浏览器中&#xff0c;都具备通过 Tab 键来切换焦点的功能。然而&#xff0c;有些用户提出了强烈要求&#xff0c;希望能够增加通过 Enter 键…

进程间通信(二)消息队列、共享内存、信号量

文章目录 进程间通信System V IPC概述System V IPC 对象的访问消息队列示例--使用消息队列实现进程间的通信 共享内存示例--使用共享内存实现父子进程间的通信&#xff08;进程同步&#xff09;示例--使用进程实现之前的ATM案例&#xff08;进程互斥&#xff09; 信号量示例--利…

上传Gitee仓库流程图

推荐一个流程图工具 登录 | ProcessOnProcessOn是一个在线协作绘图平台&#xff0c;为用户提供强大、易用的作图工具&#xff01;支持在线创作流程图、思维导图、组织结构图、网络拓扑图、BPMN、UML图、UI界面原型设计、iOS界面原型设计等。同时依托于互联网实现了人与人之间的…

大厂常问iOS面试题–Runloop篇

大厂常问iOS面试题–Runloop篇 一.RunLoop概念 RunLoop顾名思义就是可以一直循环(loop)运行(run)的机制。这种机制通常称为“消息循环机制” NSRunLoop和CFRunLoopRef就是实现“消息循环机制”的对象。其实NSRunLoop本质是由CFRunLoopRef封装的&#xff0c;提供了面向对象的AP…

6个RAG进阶优化方案,对应14篇论文案例解析

本文对近几月我了解到的RAG优化策略进行总结, 每个优化策略都有相应的研究论文作为支撑。在01先总结优化方向, 02细化说明相应论文 在介绍RAG优化策略之前, 先说说知识库数据处理: 增强数据粒度&#xff1a;旨在提升文本标准化、一致性、事实准确性和丰富的上下文&#xff0c…

Acrel-1000变电站综合自动化系统及微机在化工企业中的应用方案

文&#xff1a;安科瑞郑桐 摘要&#xff1a;大型化工企业供配电具有的集约型特点&#xff0c;化工企业内35kV变电站和10kV变电所数量大、分布广&#xff0c;对于老的大多大型及中型化工企业而言&#xff0c;其变电站或变电所内高压电气设备为旧式继电保护装置&#xff0c;可靠…

详解Java的类文件结构(.class文件的结构)

this_class 指向常量池中索引为 2 的 CONSTANT_Class_info。super_class 指向常量池中索引为 3 的 CONSTANT_Class_info。由于没有接口&#xff0c;所以 interfaces 的信息为空。 对应 class 文件中的位置如下图所示。 06、字段表 一个类中定义的字段会被存储在字段表&#x…

zotero文献管理学习

1 zotero软件简介 zotero是一款开源的文献管理软件。如果你听说或使用过EndNote&#xff0c;那么可能会对“文献管理”有一定的概念。可以简单地这样理解&#xff1a;zotero一定程度上可以作为EndNote的平替。 EndNote需要注册付费&#xff0c;对于无专业科研机构隶属关系的企…

MATLAB运动目标检测系统

应用背景 运动目标的定位跟踪&#xff0c;检测识别&#xff0c;运动分析在图像压缩、运动分析、交通检测&#xff0c;智能监控等方面有主要的应用。 首先&#xff0c;在图像压缩中&#xff0c;运动目标检测技术可以在背景区域中将前景区域提取分割出来&#xff0c;只传递部分…

植物端粒到端粒(T2T)基因组研究进展与展望

鼠鼠跳槽了&#xff0c;因为现在公司发(bu)展(zhang)受(gong)限(zi)&#xff0c;只能跳一次&#xff0c;从大兴到昌平了。从二代ivd行业去三代T2T和泛基因组了。在这里我们分享一篇文章。 摘要&#xff1a;高质量的参考基因组是基因组学研究的基础。目前&#xff0c;大多数的参…

笨蛋学习FreeMarker

笨蛋学习FreeMarker FreeMarker参考网址创建实例引入Maven创建工具类创建实例并进行输出 FreeMarker数据类型布尔型&#xff1a;日期型&#xff1a;数值型&#xff1a;字符型&#xff1a;需要处理字符串为null的情况&#xff0c;否则会报错字符串为空不会报错cap_firstuncap_fi…

【银河麒麟高级服务器操作系统实例】金融行业TCP连接数猛增场景的系统优化

了解更多银河麒麟操作系统全新产品&#xff0c;请点击访问 麒麟软件产品专区&#xff1a;https://product.kylinos.cn 开发者专区&#xff1a;https://developer.kylinos.cn 文档中心&#xff1a;https://documentkylinos.cn 服务器环境以及配置 物理机/虚拟机/云/容器 物理…

12 django管理系统 - 注册与登录 - 登录

为了演示方便&#xff0c;我就直接使用models里的Admin来演示&#xff0c;不再创建用户模型了。 ok&#xff0c;先做基础配置 首先是在base.html中&#xff0c;新增登录和注册的入口 <ul class"nav navbar-nav navbar-right"><li><a href"/ac…

使用 VSCode 通过 Remote-SSH 连接远程服务器详细教程

使用 VSCode 通过 Remote-SSH 连接远程服务器详细教程 在日常开发中&#xff0c;许多开发者需要远程连接服务器进行代码编辑和调试。Visual Studio Code&#xff08;VSCode&#xff09;提供了一个非常强大的扩展——Remote-SSH&#xff0c;它允许我们通过 SSH 协议直接连接远程…

一图读懂“低空经济”

&#x1f482; 个人主页: 同学来啦&#x1f91f; 版权: 本文由【同学来啦】原创、在CSDN首发、需要转载请联系博主 &#x1f4ac; 如果文章对你有帮助&#xff0c;欢迎关注、点赞、收藏和订阅专栏哦 文章目录 ✈️ 一、低空经济简介&#x1f534; 1、基本含义&#x1f7e0; 2、…

【免费领取】基于javaweb实现的的日志管理系统

主营内容&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 项目描述 本工作日志管理系统是一个面向中小企业的简单的工作管理系统&#xff0c;它主要实现公…

【Python】Pandas基础操作手册(上)

哈喽&#xff0c;哈喽&#xff0c;大家好~ 我是你们的老朋友&#xff1a;保护小周ღ 今天给大家带来的是【Python】Pandas基础操作手册&#xff08;上&#xff09;本次主要讲解, python pandas 模块的一些基本概念, 以及了解 Dataframe 对象的创建, 赋值, 保存. 一起来看看叭…

【SpringBoot】17 多文件上传(Thymeleaf + MySQL)

Git仓库 https://gitee.com/Lin_DH/system 文件上传 可参考上一篇【SpringBoot】16 文件上传&#xff08;Thymeleaf MySQL&#xff09; https://blog.csdn.net/weixin_44088274/article/details/143004298 介绍 文件上传是指将本地的图片、视频、音频等文件上传到服务器&…

php生成PDF文件(FPDF)

FPDF即“Free PDF”&#xff0c;FPDF类库提供了基本的PDF创建功能&#xff0c;其源代码和使用权是免费的。 PDF格式文档优势 通用&#xff1a;PDF文档在UNIX和Windows系统均可正常使用。 安全&#xff1a;PDF文档可设置为只读模式&#xff0c;并且可以添加密码等保护措施。 美…

【PDF文件】默认被某种软件打开,如何进行修改?

当有时下载某种软件后&#xff0c;电脑中的PDF文件就默认由该种软件打开&#xff0c;每次需要右键选择打开方式才能选择需要的其他软件打开。如下图所示。 修改方法&#xff1a; &#xff08;1&#xff09;点击电脑的“设置”&#xff0c;选择应用 &#xff08;2&#xff09;…