Vitess生态系统与工具链集成

Vitess生态系统与工具链集成

【免费下载链接】vitess Vitess 是一个用于大规模数据库管理的开源系统,基于 MySQL。 * 提供高性能、可扩展的分布式数据库管理功能,支持水平和垂直扩展,适用于大规模数据库管理场景。 * 有什么特点:高性能、可扩展、支持水平和垂直扩展、易于集成。 【免费下载链接】vitess 项目地址: https://gitcode.com/gh_mirrors/vi/vitess

Vitess作为云原生分布式数据库系统,拥有完整的生态系统和丰富的工具链集成。本文详细解析了VTAdmin现代化Web管理界面的功能架构、VTCTL命令行工具的使用指南、与Kubernetes的深度集成方案以及第三方工具与插件生态。VTAdmin采用React + TypeScript技术栈,提供集群监控、Tablet管理、Keyspace管理、工作流管理和实时可视化等功能。VTCTL作为核心命令行工具,支持表管理、分片操作、键空间管理和工作流控制等丰富命令。通过Vitess Operator实现与Kubernetes的深度集成,提供声明式API管理和自动化运维能力。第三方生态涵盖监控系统集成、多语言客户端驱动、部署工具和数据迁移工具等,形成完整的解决方案。

VTAdmin管理界面功能解析

VTAdmin作为Vitess生态系统的现代化Web管理界面,提供了直观、功能丰富的数据库集群管理体验。该界面采用React + TypeScript技术栈构建,具备响应式设计、实时数据监控和强大的可视化能力。

核心架构与设计理念

VTAdmin采用现代化的前端架构,基于React 18和Vite构建工具链,确保了优秀的开发体验和运行时性能。其设计遵循以下核心原则:

  • 模块化组件设计:每个功能模块都封装为独立的React组件
  • 类型安全:全面使用TypeScript确保代码质量
  • 响应式状态管理:基于React Query实现高效的数据获取和缓存
  • 实时监控:支持WebSocket和轮询机制实现实时数据更新

mermaid

主要功能模块详解

1. 集群概览与监控

VTAdmin提供全面的集群状态监控,通过直观的可视化组件展示关键指标:

// 集群状态数据结构示例
interface ClusterStatus {
  id: string;
  name: string;
  state: 'SERVING' | 'NOT_SERVING';
  tablets: Tablet[];
  keyspaces: Keyspace[];
  qps: number;
  latency: number;
}

实时监控功能通过以下机制实现:

  • QPS图表:实时显示查询每秒处理量
  • 延迟监控:跟踪查询响应时间
  • 资源利用率:监控CPU、内存和网络使用情况
2. Tablet管理功能

Tablet是Vitess的基本工作单元,VTAdmin提供完善的Tablet管理界面:

功能描述技术实现
Tablet列表显示所有Tablet的状态和信息DataTable组件 + 实时轮询
Tablet详情查看单个Tablet的详细配置和状态路由参数 + API调用
Tablet操作启动、停止、重启TabletHTTP POST/PUT请求
健康检查实时监控Tablet健康状态心跳检测 + 状态指示器

mermaid

3. Keyspace与Shard管理

Keyspace和Shard管理是Vitess分布式架构的核心,VTAdmin提供直观的管理界面:

// Keyspace管理API示例
export const fetchKeyspaces = async () => 
  vtfetchEntities({
    endpoint: '/api/keyspaces',
    extract: (res) => res.result.keyspaces,
    transform: (e) => pb.Keyspace.create(e)
  });

export const createKeyspace = async (params: CreateKeyspaceParams) => 
  vtfetch(`/api/keyspace/${params.clusterID}`, {
    body: JSON.stringify(params.options),
    method: 'post'
  });

主要功能包括:

  • Keyspace创建与配置:可视化创建新的Keyspace
  • Shard分布查看:图形化展示Shard分布情况
  • 数据迁移管理:支持在线数据迁移操作
4. 工作流与数据迁移

VTAdmin提供强大的工作流管理功能,支持多种数据迁移场景:

工作流类型用途复杂度
MoveTables表迁移中等
Reshard分片重分布
Materialize物化视图创建
VDiff数据一致性验证

mermaid

5. 实时监控与图表可视化

VTAdmin集成了丰富的图表组件,提供实时的性能监控:

// QPS图表组件实现
export const TabletQPSChart = ({ alias, clusterID }: Props) => {
  const { data: debugVars } = useExperimentalTabletDebugVars(
    { alias, clusterID },
    { refetchInterval: QPS_REFETCH_INTERVAL }
  );

  const tsdata = useMemo(() => 
    getQPSTimeseries(debugVars?.data), [debugVars]
  );
  
  return <D3Timeseries timeseriesMap={tsdata} />;
};

可视化功能特点:

  • D3.js集成:专业的图表渲染
  • 实时数据更新:可配置的刷新间隔
  • 交互式图表:支持缩放、悬停查看详情
  • 多维度展示:支持时间序列、柱状图、饼图等
6. 安全管理与权限控制

VTAdmin提供完善的安全管理功能:

安全特性实现方式保护范围
只读模式环境变量控制防止误操作
API认证Token认证接口访问控制
操作审计日志记录操作追溯
权限分级角色基础访问控制功能权限管理

技术实现亮点

响应式数据流管理

VTAdmin采用React Query进行数据管理,实现了高效的数据缓存和更新策略:

// 使用React Query进行数据查询
const { data: tablets, isLoading } = useTablets({
  refetchInterval: 5000, // 5秒刷新一次
  staleTime: 30000       // 30秒内使用缓存
});

// 数据转换和格式化
const formattedTablets = tablets?.map(tablet => ({
  alias: formatAlias(tablet.tablet?.alias),
  state: formatState(tablet),
  type: formatDisplayType(tablet),
  cluster: tablet.cluster?.name
}));
组件化架构

VTAdmin的组件架构遵循单一职责原则,每个组件都有明确的职责:

mermaid

错误处理与用户体验

VTAdmin实现了完善的错误处理机制:

// 统一的错误处理
export const vtfetch = async (endpoint: string, options: RequestInit = {}) => {
  try {
    const response = await fetch(url, options);
    if (!response.ok) {
      throw new HttpResponseNotOkError(endpoint, response);
    }
    return await response.json();
  } catch (error) {
    errorHandler.notify(error as Error);
    throw error;
  }
};

// 错误边界组件
const QueryErrorPlaceholder = ({ error }: { error: Error }) => (
  <div className="error-placeholder">
    <Icon.AlertFail />
    <p>加载失败: {error.message}</p>
    <button onClick={() => window.location.reload()}>重试</button>
  </div>
);

性能优化策略

VTAdmin采用了多种性能优化技术:

  1. 代码分割:基于路由的懒加载减少初始包大小
  2. 数据缓存:React Query智能缓存减少API调用
  3. 虚拟滚动:大数据列表的高效渲染
  4. 图表优化:D3.js的高性能数据可视化

扩展性与定制化

VTAdmin设计具有良好的扩展性:

  • 插件架构:支持功能模块的动态扩展
  • 主题定制:基于CSS变量的主题系统
  • 国际化:支持多语言界面
  • 自定义组件:可替换默认UI组件

通过以上功能解析,可以看出VTAdmin不仅提供了强大的Vitess集群管理能力,还在用户体验、性能优化和可扩展性方面做出了精心设计,是现代分布式数据库管理界面的优秀范例。

命令行工具VTCTL使用指南

VTCTL是Vitess生态系统中的核心命令行工具,用于管理和操作Vitess集群。作为Vitess控制平面的重要组成部分,VTCTL提供了丰富的命令集来处理表、分片、键空间、复制等关键操作。本文将深入介绍VTCTL的使用方法、常见命令和最佳实践。

VTCTL工具概述

VTCTL是Vitess的管理控制台,提供了对分布式MySQL集群的完整控制能力。它支持两种运行模式:

  1. 直接模式:通过gRPC与vtctld服务通信
  2. 本地模式:直接嵌入vtctld功能,无需独立服务
# 直接模式连接vtctld服务
vtctlclient --server localhost:15999 <command>

# 本地模式(推荐用于开发和测试)
vtctl <command>

核心命令分类

VTCTL命令按照功能可以分为以下几大类:

表管理命令

表管理命令用于处理单个表或表组的操作:

# 获取表信息
vtctl GetTablet zone1-100

# 设置表为只读/读写模式
vtctl SetReadOnly zone1-100
vtctl SetReadWrite zone1-100

# 启动/停止复制
vtctl StartReplication zone1-100
vtctl StopReplication zone1-100

# 执行SQL命令
vtctl ExecuteFetchAsDba --max_rows=10000 zone1-100 "SELECT * FROM users"
分片管理命令

分片命令用于管理数据分片:

# 创建分片
vtctl CreateShard commerce/0

# 获取分片信息
vtctl GetShard commerce/0

# 删除分片
vtctl DeleteShards --force commerce/0
键空间管理命令

键空间命令用于管理逻辑数据库:

# 创建键空间
vtctl CreateKeyspace --durability-policy=semi_sync commerce

# 应用Schema
vtctl ApplySchema --sql-file schema.sql commerce

# 应用VSchema
vtctl ApplyVSchema --vschema-file vschema.json commerce
工作流管理命令

工作流命令用于处理数据迁移和resharding:

# 创建MoveTables工作流
vtctl MoveTables --workflow commerce2customer --target-keyspace customer create \
    --source-keyspace commerce --tables "customer,corder"

# 切换流量
vtctl MoveTables --workflow commerce2customer --target-keyspace customer switchtraffic \
    --tablet-types "rdonly,replica"

# 完成工作流
vtctl MoveTables --workflow commerce2customer --target-keyspace customer complete

常用命令示例

集群状态检查
# 列出所有表
vtctl ListAllTablets

# 检查键空间状态
vtctl GetKeyspace commerce

# 验证集群健康状态
vtctl Validate --ping-tablets
备份与恢复
# 创建分片备份
vtctl BackupShard commerce/0

# 列出备份
vtctl GetBackups commerce/0

# 从备份恢复
vtctl RestoreFromBackup zone1-100
复制管理
# 计划性主从切换
vtctl PlannedReparentShard commerce/0 --new-primary "zone1-101"

# 紧急主从切换
vtctl EmergencyReparentShard commerce/0 --new-primary "zone1-101"

高级用法与技巧

批量操作

VTCTL支持批量处理多个对象:

# 批量删除表
vtctl DeleteTablets --allow-primary zone1-100 zone1-101 zone1-102

# 批量刷新状态
vtctl RefreshStateByShard --cells=zone1 commerce/0
dry-run模式

许多命令支持dry-run模式,用于预览操作效果:

# 预览表类型变更
vtctl ChangeTabletType --dry-run zone1-100 replica

# 预览resharding操作
vtctl Reshard --dry-run --workflow cust2cust --target-keyspace customer create
JSON输出格式

许多命令支持JSON格式输出,便于脚本处理:

# JSON格式获取表信息
vtctl GetTablet --json zone1-100

# JSON格式执行查询
vtctl ExecuteFetchAsDba --json zone1-100 "SELECT COUNT(*) FROM users"

错误处理与调试

常见错误处理
# 处理超时错误
vtctl --action_timeout 30s <command>

# 处理连接错误
vtctl --server localhost:15999 --grpc_max_msg_size 4194304 <command>
调试模式

启用详细日志输出有助于问题排查:

# 启用详细日志
vtctl --logtostderr --v=2 <command>

# 跟踪gRPC调用
vtctl --grpc_trace <command>

性能优化建议

连接池配置
# 调整连接池大小
vtctl --grpc_conn_pool_size 10 <command>

# 启用连接复用
vtctl --grpc_keepalive_time 30s <command>
批量操作优化

对于大规模操作,使用批量处理提高效率:

# 批量处理表
for tablet in $(vtctl ListTablets | awk '{print $1}'); do
    vtctl RefreshState $tablet &
done
wait

安全最佳实践

访问控制
# 使用ACL限制访问
vtctl --acl-config /path/to/acl.json <command>

# 启用TLS加密
vtctl --grpc_cert /path/to/cert.pem --grpc_key /path/to/key.pem <command>
操作审计

记录所有管理操作以便审计:

# 记录操作日志
vtctl 2>&1 | tee -a /var/log/vitess/vtctl.log

# 使用系统日志
vtctl --log_backtrace_at=:1 --log_dir=/var/log/vitess <command>

集成与自动化

脚本集成

VTCTL可以轻松集成到自动化脚本中:

#!/bin/bash
# 自动化部署脚本
set -e

# 创建键空间
vtctl CreateKeyspace --durability-policy=semi_sync myapp

# 应用Schema
vtctl ApplySchema --sql-file /path/to/schema.sql myapp

# 创建分片
vtctl CreateShard myapp/0

# 初始化表
for i in {100..102}; do
    vtctl InitTablet --parent zone1-$i replica
done
监控集成

将VTCTL与监控系统集成:

# 检查集群健康状态
if vtctl Validate --ping-tablets; then
    echo "Cluster is healthy"
else
    echo "Cluster issues detected"
    exit 1
fi

VTCTL作为Vitess生态系统的核心管理工具,提供了强大而灵活的管理能力。通过熟练掌握这些命令和技巧,您可以高效地管理大规模的Vitess集群,确保数据库系统的稳定性和性能。

与Kubernetes的深度集成

Vitess作为云原生数据库系统,与Kubernetes的深度集成是其核心优势之一。通过专门的Vitess Operator,用户可以在Kubernetes环境中轻松部署、管理和扩展Vitess集群,实现真正的云原生数据库管理体验。

Operator架构设计

Vitess Operator基于Kubernetes的Custom Resource Definitions(CRD)构建,提供了完整的声明式API来管理Vitess集群的各个组件。Operator的核心架构采用控制器模式,通过监听自定义资源的变化来自动化集群管理操作。

mermaid

核心自定义资源定义

Vitess Operator定义了一系列CRD来管理集群的不同方面:

资源类型作用描述关键配置字段
VitessCluster主集群资源,定义整个Vitess集群cells, images, backup
VitessKeyspace管理keyspace和分片配置partitionings, shards
VitessShard管理单个分片的tablet实例tabletPools, database
VitessCell定义数据中心或可用区配置gateway, zone

部署配置示例

以下是一个典型的Vitess集群部署配置示例,展示了如何在Kubernetes中定义完整的Vitess环境:

apiVersion: planetscale.com/v2
kind: VitessCluster
metadata:
  name: example-cluster
  namespace: vitess
spec:
  images:
    vtctld: vitess/lite:latest
    vtgate: vitess/lite:latest
    vttablet: vitess/lite:latest
    vtbackup: vitess/lite:latest
    mysqld:
      mysql56: vitess/lite:mysql56
      mysql57: vitess/lite:mysql57
      mysql80: vitess/lite:mysql80
  
  backup:
    engine:
      name: xtrabackup
    locations:
    - name: s3-backup
      bucket:
        name: vitess-backups
        region: us-west-2
  
  cells:
  - name: zone1
    gateway:
      replicas: 3
      resources:
        requests:
          cpu: 100m
          memory: 128Mi
  
  keyspaces:
  - name: commerce
    partitionings:
    - equal:
        parts: 2
        shardTemplate:
          database:
            initDBSQL: |-
              CREATE DATABASE IF NOT EXISTS commerce;
          tabletPools:
          - cell: zone1
            type: replica
            replicas: 2
            resources:
              requests:
                cpu: 200m
                memory: 512Mi

自动化运维能力

Vitess Operator提供了强大的自动化运维能力,包括:

自动故障恢复

  • Tablet实例健康检查与自动重启
  • 主从切换自动化
  • 备份与恢复自动化

弹性伸缩 mermaid

配置管理

  • 动态配置更新(无需重启服务)
  • 版本升级与回滚
  • 安全证书自动轮换

监控与可观测性

Vitess Operator与Kubernetes监控生态系统深度集成:

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: vitess-monitor
  labels:
    app: vitess
spec:
  selector:
    matchLabels:
      app: vitess
  endpoints:
  - port: metrics
    interval: 30s
    path: /metrics
  - port: debug
    interval: 30s
    path: /debug/vars

网络与服务发现

在Kubernetes环境中,Vitess利用原生服务发现机制:

mermaid

安全集成

Vitess Operator支持完整的安全特性:

  • TLS证书管理:通过Cert-Manager自动管理证书
  • 网络策略:细粒度的网络访问控制
  • RBAC配置:基于角色的访问控制
  • Secret管理:安全的凭证存储和轮换

备份与恢复策略

Operator提供了声明式的备份配置:

backup:
  schedule: "0 2 * * *"
  storage:
    s3:
      bucket: "vitess-backups"
      region: "us-west-2"
  retentionPeriod: 30d
  encryptionKey: "kms-key-arn"

这种深度集成使得Vitess在Kubernetes环境中能够充分发挥其云原生优势,为用户提供稳定、可扩展且易于管理的分布式数据库解决方案。

第三方工具与插件生态

Vitess作为一个成熟的开源分布式数据库系统,拥有丰富而强大的第三方工具与插件生态系统。这个生态系统涵盖了监控、可视化、客户端驱动、部署工具等多个方面,为开发者提供了完整的解决方案。

监控与可观测性集成

Vitess原生支持与主流监控系统的深度集成,通过内置的指标导出器和追踪功能,可以无缝对接Prometheus、Grafana、Jaeger等工具。

Prometheus指标导出

Vitess通过servenv包提供了完整的Prometheus指标收集和导出功能。系统会自动收集以下关键指标:

// CPU使用率监控
func getCpuUsage() float64 {
    value, err := getCgroupCpu()
    if err == nil {
        return value
    }
    value, err = getHostCpuUsage()
    if err == nil {
        return value
    }
    return -1
}

// 内存使用监控
func getMemoryUsage() float64 {
    value, err := getCgroupMemory()
    if err == nil {
        return value
    }
    value, err = getHostMemoryUsage()
    if err == nil {
        return value
    }
    return -1
}
监控指标分类

Vitess导出的监控指标主要分为以下几类:

指标类别具体指标描述
系统资源cpu_usage, memory_usage容器和主机资源使用情况
数据库性能query_count, query_latencySQL查询统计和延迟
连接池conn_pool_size, conn_wait_time连接池状态和等待时间
复制状态replication_lag, binlog_position主从复制状态监控

客户端驱动支持

Vitess提供了多语言客户端驱动,确保应用程序可以轻松连接到Vitess集群。

Go语言驱动

go/vt/vitessdriver包提供了原生的Go SQL驱动:

import (
    "database/sql"
    _ "vitess.io/vitess/go/vt/vitessdriver"
)

func main() {
    // 连接字符串配置
    connStr := `{
        "address": "vtgate-host:15991",
        "target": "commerce@replica",
        "timeout": 30000000000
    }`
    
    db, err := sql.Open("vitess", connStr)
    if err != nil {
        panic(err)
    }
    defer db.Close()
    
    // 执行查询
    rows, err := db.Query("SELECT * FROM products")
    // ...
}
Java JDBC驱动

Vitess提供了完整的Java JDBC驱动支持,Maven配置如下:

<dependency>
    <groupId>io.vitess</groupId>
    <artifactId>vitess-jdbc</artifactId>
    <version>23.0.0</version>
</dependency>

Java连接示例:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class VitessExample {
    public static void main(String[] args) {
        String url = "jdbc:vitess://vtgate-host:15991/commerce";
        
        try (Connection conn = DriverManager.getConnection(url);
             Statement stmt = conn.createStatement();
             ResultSet rs = stmt.executeQuery("SELECT * FROM products")) {
            
            while (rs.next()) {
                System.out.println(rs.getString("product_name"));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

部署与运维工具集成

Kubernetes Operator

Vitess提供了官方的Kubernetes Operator,简化在K8s环境中的部署和管理:

apiVersion: planetscale.com/v2
kind: VitessCluster
metadata:
  name: example-cluster
spec:
  images:
    vtgate: vitess/vtgate:latest
    vttablet: vitess/vttablet:latest
  cells:
  - name: zone1
    gateway:
      replicas: 3
  keyspaces:
  - name: commerce
    partitionings:
    - equal:
        parts: 4
        shardTemplate:
          database:
            mysqlVersion: "8.0"
Terraform Provider

社区开发的Terraform Provider支持基础设施即代码部署:

resource "vitess_cluster" "main" {
  name = "production-cluster"
  
  cell {
    name = "us-west1"
    zone = "us-west1-a"
  }
  
  keyspace {
    name = "user_data"
    shard_count = 8
  }
}

数据迁移与ETL工具

Airbyte连接器

Airbyte提供了Vitess连接器,支持数据同步和ETL操作:

source:
  type: vitess
  config:
    host: vtgate-host
    port: 15991
    keyspace: commerce
    username: vitess_user
    password: ${SECRET_PASSWORD}
Debezium CDC集成

通过Debezium实现变更数据捕获:

connector.class=io.debezium.connector.vitess.VitessConnector
tasks.max=1
database.hostname=vtgate-host
database.port=15991
database.keyspace=commerce
table.include.list=products,orders

可视化与管理工具

Vitess Admin UI

原生的Web管理界面提供集群状态可视化:

mermaid

Grafana仪表盘

预配置的Grafana仪表盘模板:

仪表盘名称监控重点数据源
Vitess集群概览整体健康状态Prometheus
查询性能分析SQL执行统计Prometheus
复制延迟监控主从同步状态Prometheus
资源使用情况CPU/内存/磁盘Node Exporter

安全与认证插件

MTLS认证支持

Vitess支持基于mTLS的相互认证:

// mTLS配置示例
config := &tls.Config{
    Certificates: []tls.Certificate{cert},
    ClientCAs:    certPool,
    ClientAuth:   tls.RequireAndVerifyClientCert,
}
OAuth2集成

支持OAuth2认证流程:

mermaid

开发与测试工具

本地开发环境

Docker Compose配置快速搭建本地环境:

version: '3'
services:
  vtgate:
    image: vitess/vtgate:latest
    ports:
      - "15991:15991"
    depends_on:
      - etcd
  vttablet:
    image: vitess/vttablet:latest
    environment:
      - TOPOLOGY_FLAGS=--topo_implementation etcd2
单元测试框架

丰富的测试工具和模拟框架:

// 测试示例
func TestVitessDriver(t *testing.T) {
    service := CreateFakeServer()
    // 启动gRPC测试服务器
    listener, err := net.Listen("tcp", "127.0.0.1:0")
    require.NoError(t, err)
    
    server := grpc.NewServer()
    grpcvtgateservice.RegisterForTest(server, service)
    go server.Serve(listener)
    
    // 测试连接
    db, err := sql.Open("vitess", 
        fmt.Sprintf(`{"address": "%s", "target": "@replica"}`, listener.Addr().String()))
    require.NoError(t, err)
    defer db.Close()
    
    // 执行测试查询
    rows, err := db.Query("SELECT 1")
    require.NoError(t, err)
    defer rows.Close()
}

生态系统扩展机制

Vitess通过插件架构支持功能扩展:

  1. 存储后端插件:支持ETCD、ZooKeeper、Consul等多种拓扑存储
  2. 认证插件:可插拔的认证机制
  3. 监控导出插件:自定义指标导出器
  4. 客户端驱动插件:多语言驱动支持

这种丰富的第三方工具生态系统使得Vitess能够适应各种复杂的生产环境需求,从开发测试到大规模部署,都提供了完整的工具链支持。

总结

Vitess生态系统通过VTAdmin、VTCTL、Kubernetes Operator和丰富的第三方工具链,提供了全方位的分布式数据库管理能力。VTAdmin作为现代化Web界面,提供了直观的可视化管理和实时监控;VTCTL命令行工具则提供了精细化的控制能力;与Kubernetes的深度集成实现了真正的云原生部署体验;而丰富的第三方工具生态则确保了与现有技术栈的无缝集成。这些工具共同构成了Vitess强大的生态系统,使其能够满足从开发测试到大规模生产环境的各类需求,为分布式数据库管理提供了完整的解决方案。

【免费下载链接】vitess Vitess 是一个用于大规模数据库管理的开源系统,基于 MySQL。 * 提供高性能、可扩展的分布式数据库管理功能,支持水平和垂直扩展,适用于大规模数据库管理场景。 * 有什么特点:高性能、可扩展、支持水平和垂直扩展、易于集成。 【免费下载链接】vitess 项目地址: https://gitcode.com/gh_mirrors/vi/vitess

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值