初始化
This commit is contained in:
74
config/data_collection_tasks.php
Normal file
74
config/data_collection_tasks.php
Normal file
@@ -0,0 +1,74 @@
|
||||
<?php
|
||||
/**
|
||||
* 数据采集任务配置
|
||||
*
|
||||
* 说明:
|
||||
* - 此配置文件仅保留数据库同步任务等系统级任务
|
||||
* - 其他数据采集任务通过数据库 data_collection_tasks 表进行管理和配置
|
||||
* - 数据库中的任务支持启动、暂停、删除等操作,由前端界面进行管理
|
||||
* - 每个任务配置:数据源引用、业务处理类、调度规则、分片配置
|
||||
* - 数据处理逻辑在业务代码中实现
|
||||
*/
|
||||
return [
|
||||
// 全局配置
|
||||
'global' => [
|
||||
// 分布式锁配置
|
||||
'distributed_lock' => [
|
||||
'driver' => 'redis',
|
||||
'ttl' => 300,
|
||||
'retry_times' => 3,
|
||||
'retry_delay' => 1000,
|
||||
],
|
||||
// 错误处理配置
|
||||
'error_handling' => [
|
||||
'max_retries' => 3,
|
||||
'retry_delay' => 5,
|
||||
'circuit_breaker' => [
|
||||
'enabled' => true,
|
||||
'failure_threshold' => 10,
|
||||
'recovery_timeout' => 60,
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
// 采集任务列表(配置文件中的任务)
|
||||
'tasks' => [
|
||||
// 数据库同步任务(实时同步源数据库到目标数据库)
|
||||
// 注意:这是一个系统级任务,通过配置文件管理,不从数据库加载
|
||||
'database_sync' => [
|
||||
'name' => '数据库实时同步',
|
||||
'enabled' => false,
|
||||
|
||||
// 源数据库(从 data_sources.php 引用)
|
||||
'source_data_source' => 'kr_mongodb',
|
||||
|
||||
// 目标数据库(从 data_sources.php 引用)
|
||||
'target_data_source' => 'sync_mongodb',
|
||||
|
||||
// 业务处理类
|
||||
'handler_class' => \app\service\DataCollection\Handler\DatabaseSyncHandler::class,
|
||||
|
||||
// 调度配置(数据库同步是持续运行的,不需要定时调度)
|
||||
'schedule' => [
|
||||
'cron' => null, // 不需要 Cron,启动后持续运行
|
||||
'enabled' => false, // 禁用定时调度,启动后持续运行
|
||||
],
|
||||
|
||||
// 分片配置(每个 Worker 可以监听不同的数据库)
|
||||
'sharding' => [
|
||||
'strategy' => 'by_database', // 按数据库分片
|
||||
'shard_count' => 1,
|
||||
],
|
||||
|
||||
// 同步状态存储配置
|
||||
'sync_state' => [
|
||||
'storage' => 'file', // 使用文件存储进度(DatabaseSyncService 使用文件)
|
||||
'key_prefix' => 'database_sync:',
|
||||
],
|
||||
|
||||
// 注意:业务逻辑相关配置(数据库列表、排除规则、性能配置等)
|
||||
// 已移到 DatabaseSyncHandler 类中,使用默认值或从独立配置读取
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
63
config/data_sources.php
Normal file
63
config/data_sources.php
Normal file
@@ -0,0 +1,63 @@
|
||||
<?php
|
||||
/**
|
||||
* 数据源连接配置
|
||||
*
|
||||
* 说明:
|
||||
* - 所有数据库连接的配置集合
|
||||
* - 只包含连接信息,不包含业务逻辑
|
||||
* - 可以被其他配置引用(如任务采集配置)
|
||||
*/
|
||||
return [
|
||||
// 卡若的数据库(爬虫抓取的业务数据库)
|
||||
'kr_mongodb' => [
|
||||
'type' => 'mongodb',
|
||||
'host' => getenv('KR_MONGODB_HOST'),
|
||||
'port' => (int)getenv('KR_MONGODB_PORT'),
|
||||
'database' => getenv('KR_MONGODB_DATABASE'),
|
||||
'username' => getenv('KR_MONGODB_USER'),
|
||||
'password' => getenv('KR_MONGODB_PASSWORD'),
|
||||
'auth_source' => getenv('KR_MONGODB_AUTH_SOURCE'),
|
||||
'options' => [
|
||||
'ssl' => false,
|
||||
'connectTimeoutMS' => 3000,
|
||||
'socketTimeoutMS' => 5000,
|
||||
'authMechanism' => 'SCRAM-SHA-256',
|
||||
],
|
||||
],
|
||||
|
||||
// 标签数据库(主机标签数据库)
|
||||
'tag_mongodb' => [
|
||||
'type' => 'mongodb',
|
||||
'host' => getenv('TAG_MONGODB_HOST') ?: '192.168.1.106',
|
||||
'port' => (int)(getenv('TAG_MONGODB_PORT') ?: 27017),
|
||||
'database' => getenv('TAG_MONGODB_DATABASE') ?: 'ckb',
|
||||
'username' => getenv('TAG_MONGODB_USER') ?: 'ckb',
|
||||
'password' => getenv('TAG_MONGODB_PASSWORD') ?: '123456',
|
||||
'auth_source' => getenv('TAG_MONGODB_AUTH') ?: 'ckb',
|
||||
'options' => [
|
||||
'ssl' => false,
|
||||
'connectTimeoutMS' => 3000,
|
||||
'socketTimeoutMS' => 5000,
|
||||
'authMechanism' => 'SCRAM-SHA-256',
|
||||
],
|
||||
],
|
||||
|
||||
// 同步目标数据库(主机同步KR数据库)
|
||||
'sync_mongodb' => [
|
||||
'type' => 'mongodb',
|
||||
'host' => getenv('SYNC_MONGODB_HOST'),
|
||||
'port' => (int)getenv('SYNC_MONGODB_PORT'),
|
||||
'database' => getenv('SYNC_MONGODB_DATABASE') ?: 'KR',
|
||||
'username' => getenv('SYNC_MONGODB_USER'),
|
||||
'password' => getenv('SYNC_MONGODB_PASS'),
|
||||
'auth_source' => getenv('SYNC_MONGODB_AUTH'),
|
||||
'options' => [
|
||||
'ssl' => false,
|
||||
'connectTimeoutMS' => 3000,
|
||||
'socketTimeoutMS' => 5000,
|
||||
'authMechanism' => 'SCRAM-SHA-256',
|
||||
],
|
||||
],
|
||||
|
||||
|
||||
];
|
||||
60
config/encryption.php
Normal file
60
config/encryption.php
Normal file
@@ -0,0 +1,60 @@
|
||||
<?php
|
||||
/**
|
||||
* 加密配置
|
||||
*
|
||||
* 用于身份证等敏感数据的加密和哈希
|
||||
*/
|
||||
|
||||
return [
|
||||
// AES 加密配置
|
||||
'aes' => [
|
||||
// 加密密钥(32字节,256位)
|
||||
// 注意:生产环境应使用环境变量或密钥管理服务,不要硬编码
|
||||
// 使用 getenv() 获取环境变量,如果不存在则使用默认值
|
||||
// 默认密钥:至少32字符(实际使用时会被 SHA256 哈希处理)
|
||||
'key' => getenv('ENCRYPTION_AES_KEY') ?: 'your-32-byte-secret-key-here-12345678',
|
||||
|
||||
// 加密方法
|
||||
'cipher' => 'AES-256-CBC',
|
||||
|
||||
// IV 长度(字节)
|
||||
'iv_length' => 16,
|
||||
],
|
||||
|
||||
// 哈希配置
|
||||
'hash' => [
|
||||
// 哈希算法(用于身份证哈希)
|
||||
'algorithm' => 'sha256',
|
||||
|
||||
// 是否使用盐值(可选,增强安全性)
|
||||
'use_salt' => true,
|
||||
|
||||
// 盐值(如果启用)
|
||||
// 使用 getenv() 获取环境变量,如果不存在则使用默认值
|
||||
'salt' => getenv('ENCRYPTION_HASH_SALT') ?: 'your-hash-salt-here',
|
||||
],
|
||||
|
||||
// 脱敏配置
|
||||
'masking' => [
|
||||
// 身份证脱敏规则:保留前6位和后4位,中间用*替代
|
||||
'id_card' => [
|
||||
'prefix_length' => 6,
|
||||
'suffix_length' => 4,
|
||||
'mask_char' => '*',
|
||||
],
|
||||
|
||||
// 手机号脱敏规则:保留前3位和后4位,中间用*替代
|
||||
'phone' => [
|
||||
'prefix_length' => 3,
|
||||
'suffix_length' => 4,
|
||||
'mask_char' => '*',
|
||||
],
|
||||
|
||||
// 邮箱脱敏规则:保留@前的前2位和@后的域名
|
||||
'email' => [
|
||||
'prefix_length' => 2,
|
||||
'mask_char' => '*',
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
81
config/queue.php
Normal file
81
config/queue.php
Normal file
@@ -0,0 +1,81 @@
|
||||
<?php
|
||||
/**
|
||||
* RabbitMQ 消息队列配置
|
||||
*
|
||||
* 用于标签系统的异步消息处理
|
||||
*/
|
||||
|
||||
return [
|
||||
'default' => 'rabbitmq',
|
||||
|
||||
'connections' => [
|
||||
'rabbitmq' => [
|
||||
'driver' => 'rabbitmq',
|
||||
'host' => getenv('RABBITMQ_HOST') ?: '127.0.0.1',
|
||||
'port' => (int)(getenv('RABBITMQ_PORT') ?: 5672),
|
||||
'user' => getenv('RABBITMQ_USER') ?: 'guest',
|
||||
'password' => getenv('RABBITMQ_PASSWORD') ?: 'guest',
|
||||
'vhost' => getenv('RABBITMQ_VHOST') ?: '/',
|
||||
'timeout' => 10, // 连接超时时间(秒)
|
||||
|
||||
// 队列配置
|
||||
'queues' => [
|
||||
// 数据同步队列:外部数据源轮询后推送的数据
|
||||
'data_sync' => [
|
||||
'name' => 'data_sync_queue',
|
||||
'durable' => true, // 队列持久化
|
||||
'auto_delete' => false,
|
||||
'arguments' => [],
|
||||
],
|
||||
// 标签计算队列:消费记录写入后触发标签计算
|
||||
'tag_calculation' => [
|
||||
'name' => 'tag_calculation_queue',
|
||||
'durable' => true, // 队列持久化
|
||||
'auto_delete' => false,
|
||||
'arguments' => [],
|
||||
],
|
||||
],
|
||||
|
||||
// 交换机配置
|
||||
'exchanges' => [
|
||||
'data_sync' => [
|
||||
'name' => 'data_sync_exchange',
|
||||
'type' => 'direct',
|
||||
'durable' => true,
|
||||
'auto_delete' => false,
|
||||
],
|
||||
'tag_calculation' => [
|
||||
'name' => 'tag_calculation_exchange',
|
||||
'type' => 'direct',
|
||||
'durable' => true,
|
||||
'auto_delete' => false,
|
||||
],
|
||||
],
|
||||
|
||||
// 路由键配置
|
||||
'routing_keys' => [
|
||||
'data_sync' => 'data.sync',
|
||||
'tag_calculation' => 'tag.calculation',
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
// 消息配置
|
||||
'message' => [
|
||||
'delivery_mode' => 2, // 消息持久化(2 = 持久化)
|
||||
'content_type' => 'application/json',
|
||||
],
|
||||
|
||||
// 消费者配置
|
||||
'consumer' => [
|
||||
'data_sync' => [
|
||||
'prefetch_count' => 10, // 每次处理10条消息(批量处理)
|
||||
'no_ack' => false, // 需要确认消息
|
||||
],
|
||||
'tag_calculation' => [
|
||||
'prefetch_count' => 1, // 每次只处理一条消息
|
||||
'no_ack' => false, // 需要确认消息
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
Reference in New Issue
Block a user