236 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
			
		
		
	
	
			236 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
# 🚀 稷下学宫负载均衡系统 - 快速上手指南
 | 
						||
 | 
						||
## 📋 前置条件
 | 
						||
 | 
						||
1. **RapidAPI账户**: 确保已订阅以下API服务
 | 
						||
   - Alpha Vantage
 | 
						||
   - Yahoo Finance 15
 | 
						||
   - Webull
 | 
						||
   - Seeking Alpha
 | 
						||
 | 
						||
2. **环境配置**: 已配置Doppler环境变量管理
 | 
						||
   ```bash
 | 
						||
   doppler secrets | grep RAPIDAPI_KEY
 | 
						||
   ```
 | 
						||
 | 
						||
## ⚡ 5分钟快速体验
 | 
						||
 | 
						||
### 1. 运行完整演示
 | 
						||
```bash
 | 
						||
cd /home/ben/liurenchaxin
 | 
						||
doppler run python demo_jixia_load_balancing.py
 | 
						||
```
 | 
						||
 | 
						||
### 2. 查看演示结果
 | 
						||
```bash
 | 
						||
# 查看生成的结果文件
 | 
						||
ls demo_results_*.json
 | 
						||
 | 
						||
# 查看AAPL的详细结果
 | 
						||
cat demo_results_aapl.json | jq .
 | 
						||
```
 | 
						||
 | 
						||
## 🎯 核心功能演示
 | 
						||
 | 
						||
### 单个仙人数据获取
 | 
						||
```python
 | 
						||
from src.jixia.engines.jixia_load_balancer import JixiaLoadBalancer
 | 
						||
 | 
						||
# 初始化
 | 
						||
load_balancer = JixiaLoadBalancer(rapidapi_key)
 | 
						||
 | 
						||
# 吕洞宾获取苹果股票数据
 | 
						||
result = load_balancer.get_data_for_immortal('吕洞宾', 'stock_quote', 'AAPL')
 | 
						||
print(f"价格: ${result.data['price']}, 来源: {result.api_used}")
 | 
						||
```
 | 
						||
 | 
						||
### 八仙论道完整演示
 | 
						||
```python
 | 
						||
# 进行八仙论道
 | 
						||
results = load_balancer.conduct_immortal_debate('TSLA')
 | 
						||
 | 
						||
# 查看负载分布
 | 
						||
distribution = load_balancer.get_load_distribution()
 | 
						||
for api, stats in distribution.items():
 | 
						||
    print(f"{api}: {stats['calls']}次调用 ({stats['percentage']:.1f}%)")
 | 
						||
```
 | 
						||
 | 
						||
## 📊 预期输出示例
 | 
						||
 | 
						||
```
 | 
						||
🏛️ 稷下学宫八仙论道开始 - 主题: AAPL
 | 
						||
============================================================
 | 
						||
🎭 吕洞宾 正在获取 stock_quote 数据...
 | 
						||
   ✅ 成功从 alpha_vantage 获取数据 (响应时间: 1.33s)
 | 
						||
   💰 吕洞宾: $202.38 (-2.5004%) via alpha_vantage
 | 
						||
 | 
						||
🎭 何仙姑 正在获取 stock_quote 数据...
 | 
						||
   ✅ 成功从 yahoo_finance_15 获取数据 (响应时间: 1.87s)
 | 
						||
   💰 何仙姑: $N/A (N/A) via yahoo_finance_15
 | 
						||
 | 
						||
📊 负载分布统计:
 | 
						||
   alpha_vantage: 3 次调用 (37.5%) - 健康
 | 
						||
   yahoo_finance_15: 2 次调用 (25.0%) - 健康
 | 
						||
   webull: 3 次调用 (37.5%) - 健康
 | 
						||
```
 | 
						||
 | 
						||
## 🔧 自定义配置
 | 
						||
 | 
						||
### 修改仙人API偏好
 | 
						||
编辑 `/home/ben/liurenchaxin/src/jixia/config/immortal_api_config.json`:
 | 
						||
 | 
						||
```json
 | 
						||
{
 | 
						||
  "immortals": {
 | 
						||
    "吕洞宾": {
 | 
						||
      "preferred_apis": {
 | 
						||
        "stock_quote": "webull",  // 改为使用Webull
 | 
						||
        "company_overview": "alpha_vantage"
 | 
						||
      }
 | 
						||
    }
 | 
						||
  }
 | 
						||
}
 | 
						||
```
 | 
						||
 | 
						||
### 调整缓存策略
 | 
						||
```python
 | 
						||
# 修改缓存TTL
 | 
						||
load_balancer.cache_ttl = 600  # 10分钟缓存
 | 
						||
 | 
						||
# 清空缓存
 | 
						||
load_balancer.cache.clear()
 | 
						||
```
 | 
						||
 | 
						||
## 🚨 故障排除
 | 
						||
 | 
						||
### 常见问题
 | 
						||
 | 
						||
1. **API密钥错误**
 | 
						||
   ```
 | 
						||
   ❌ 错误: 请设置RAPIDAPI_KEY环境变量
 | 
						||
   ```
 | 
						||
   **解决**: 确保Doppler配置正确
 | 
						||
   ```bash
 | 
						||
   doppler secrets set RAPIDAPI_KEY="your_key_here"
 | 
						||
   ```
 | 
						||
 | 
						||
2. **API调用失败**
 | 
						||
   ```
 | 
						||
   ⚠️ alpha_vantage 不可用,尝试备用API...
 | 
						||
   ```
 | 
						||
   **解决**: 系统会自动故障转移,无需干预
 | 
						||
 | 
						||
3. **数据格式异常**
 | 
						||
   ```
 | 
						||
   💰 价格: $N/A
 | 
						||
   ```
 | 
						||
   **解决**: 某些API返回格式不同,系统会标准化处理
 | 
						||
 | 
						||
### 调试模式
 | 
						||
```python
 | 
						||
# 启用详细日志
 | 
						||
import logging
 | 
						||
logging.basicConfig(level=logging.DEBUG)
 | 
						||
 | 
						||
# 查看API健康状态
 | 
						||
for api, status in load_balancer.health_checker.health_status.items():
 | 
						||
    print(f"{api}: {'健康' if status['healthy'] else '异常'}")
 | 
						||
```
 | 
						||
 | 
						||
## 📈 性能优化建议
 | 
						||
 | 
						||
### 1. 缓存优化
 | 
						||
```python
 | 
						||
# 针对不同数据类型设置不同缓存时间
 | 
						||
cache_strategies = {
 | 
						||
    'stock_quote': 60,      # 1分钟
 | 
						||
    'company_overview': 3600, # 1小时
 | 
						||
    'market_news': 1800     # 30分钟
 | 
						||
}
 | 
						||
```
 | 
						||
 | 
						||
### 2. 并发控制
 | 
						||
```python
 | 
						||
# 控制并发请求数量
 | 
						||
import time
 | 
						||
for immortal in immortals:
 | 
						||
    result = load_balancer.get_data_for_immortal(immortal, 'stock_quote', symbol)
 | 
						||
    time.sleep(0.2)  # 避免过快请求
 | 
						||
```
 | 
						||
 | 
						||
### 3. 批量处理
 | 
						||
```python
 | 
						||
# 批量获取多个股票数据
 | 
						||
symbols = ['AAPL', 'TSLA', 'MSFT', 'GOOGL']
 | 
						||
results = {}
 | 
						||
for symbol in symbols:
 | 
						||
    results[symbol] = load_balancer.conduct_immortal_debate(symbol)
 | 
						||
```
 | 
						||
 | 
						||
## 🎯 最佳实践
 | 
						||
 | 
						||
### 1. 监控API使用情况
 | 
						||
```python
 | 
						||
# 定期检查负载分布
 | 
						||
distribution = load_balancer.get_load_distribution()
 | 
						||
print(f"总调用次数: {sum(stats['calls'] for stats in distribution.values())}")
 | 
						||
```
 | 
						||
 | 
						||
### 2. 合理使用缓存
 | 
						||
```python
 | 
						||
# 对于实时性要求不高的数据,优先使用缓存
 | 
						||
result = load_balancer.get_data_for_immortal('韩湘子', 'company_overview', 'AAPL')
 | 
						||
if result.cached:
 | 
						||
    print("使用缓存数据,节省API调用")
 | 
						||
```
 | 
						||
 | 
						||
### 3. 错误处理
 | 
						||
```python
 | 
						||
result = load_balancer.get_data_for_immortal('吕洞宾', 'stock_quote', 'AAPL')
 | 
						||
if not result.success:
 | 
						||
    print(f"获取数据失败: {result.error}")
 | 
						||
    # 实施降级策略
 | 
						||
else:
 | 
						||
    # 正常处理数据
 | 
						||
    process_stock_data(result.data)
 | 
						||
```
 | 
						||
 | 
						||
## 📚 进阶使用
 | 
						||
 | 
						||
### 自定义数据处理器
 | 
						||
```python
 | 
						||
class CustomDataNormalizer(DataNormalizer):
 | 
						||
    def normalize_stock_quote(self, raw_data, api_source):
 | 
						||
        # 自定义数据标准化逻辑
 | 
						||
        normalized = super().normalize_stock_quote(raw_data, api_source)
 | 
						||
        # 添加自定义字段
 | 
						||
        normalized['custom_score'] = self.calculate_score(normalized)
 | 
						||
        return normalized
 | 
						||
 | 
						||
# 使用自定义处理器
 | 
						||
load_balancer.data_normalizer = CustomDataNormalizer()
 | 
						||
```
 | 
						||
 | 
						||
### 自定义健康检查
 | 
						||
```python
 | 
						||
class CustomHealthChecker(APIHealthChecker):
 | 
						||
    def _perform_health_check(self, api_name):
 | 
						||
        # 自定义健康检查逻辑
 | 
						||
        # 例如:检查API响应时间、错误率等
 | 
						||
        pass
 | 
						||
 | 
						||
load_balancer.health_checker = CustomHealthChecker()
 | 
						||
```
 | 
						||
 | 
						||
## 🎉 完成!
 | 
						||
 | 
						||
现在您已经掌握了稷下学宫负载均衡系统的基本使用方法。
 | 
						||
 | 
						||
### 下一步
 | 
						||
- 📖 阅读完整文档: `README_jixia_load_balancing.md`
 | 
						||
- 🔧 查看配置文件: `src/jixia/config/immortal_api_config.json`
 | 
						||
- 💻 研究核心代码: `src/jixia/engines/jixia_load_balancer.py`
 | 
						||
- 🚀 开始构建您的投资分析系统!
 | 
						||
 | 
						||
---
 | 
						||
*🏛️ 稷下学宫 - 智慧投资,从负载均衡开始* |