Fountain工具库技术文档
1. 项目介绍
Fountain是一个用于服务器应用开发的综合工具库,基于仓颉语言开发,具有以下核心特性:
- 零配置文件设计
- 支持环境变量和命令行参数配置
- 遵循"约定优于配置"原则
- 深度利用仓颉语言特性
- 采用动态链接库架构,由fboot负责加载和运行
2. 安装指南
2.1 基础安装
开发环境安装
# 使用cjpm直接运行依赖fountain的项目即可自动加载
cjpm run your_project
生产环境安装
# 设置动态链接库路径
export FOUNTAIN_HOME=/path/to/fountain_dynamic_libs
# 添加动态链接库到系统路径
export LD_LIBRARY_PATH=$FOUNTAIN_HOME:$LD_LIBRARY_PATH
# 或者使用fboot自动配置
cp fboot/fboot $FOUNTAIN_HOME/
cd $FOUNTAIN_HOME && ./fboot export
2.2 版本管理
Fountain采用以下版本分支策略:
canary/:对应仓颉每月开发版sts/:对应仓颉稳定测试版lts/:长期支持版(功能完备后)
3. 使用说明
3.1 fboot工具
# 将fboot加入PATH环境变量
export PATH=$PATH:/path/to/fboot
# 常用命令
fboot start [PATH] --dylibPattern=<正则表达式> # 启动并配置环境
fboot run [PATH] --dylibPattern=<正则表达式> # 运行项目
fboot shutdown <PID> # 停止进程
fboot restart <PID> # 重启进程
3.2 核心功能使用示例
日志系统
import fountain.log.LoggerFactory
let topLog = LoggerFactory.getLogger('top')
public class Foo {
private static let LOGGER = LoggerFactory.getLogger<Foo>()
public func foo(){
LOGGER.info('hello')
LOGGER.error('error occurred', Exception('test'))
LOGGER.info('hello {}', 'world')
}
}
JWT使用
let jwt = JWT().hmacSHA1(keyOfBytes)
let sign = jwt.keyId('keyId')
.expire(Duration.minute)
.addPayload('name', 'Bob')
.encoder()
.sign()
堆缓存
let cache = HeapCache<V> where V <: Object (
maxSize = 1000,
maxLife = Duration.hour(1)
)
cache.set('user:123', userObject)
let user = cache.get('user:123')
4. API文档
4.1 核心模块API
4.1.1 集合扩展
LinkedHashMap:保持插入顺序的HashMapPriorityQueue:优先级队列实现ConcurrentHashSet:线程安全的HashSet
4.1.2 并发控制
- 限流策略:
SlidingWindow:滑动时间窗口TokenBucket:令牌桶算法LeakyBucket:漏桶算法
4.1.3 加密与安全
DiffieHellman:密钥交换协议murmur_hash:高性能哈希算法crc16:校验和算法
4.2 Web MVC框架
控制器示例
@Controller
class UserController {
@Get("/users/{id}")
func getUser(id: String): User {
// 实现获取用户逻辑
}
@Post("/users")
func createUser(@Body user: User): Response {
// 实现创建用户逻辑
}
}
5. 高级配置
5.1 日志系统配置
# 控制台日志配置
export fountain_logger_appender_console=ConsoleLogger
export fountain_logger_appender_ConsoleLogger_level=INFO
# 文件日志配置
export fountain_logger_appender_file=FileLogger
export fountain_logger_appender_FileLogger_path=/var/log/app.log
export fountain_logger_appender_FileLogger_rotateSize=1G
# TCP日志配置
export fountain_logger_appender_tcp=RemoteLogger
export fountain_logger_appender_RemoteLogger_host=192.168.1.100:514
5.2 ORM配置
@Entity
class User {
@Id
let id: String
@Column
let name: String
@Column(name="created_at")
let createTime: DateTime
}
6. 最佳实践
- 性能优化:对于高频访问数据使用
HeapCache - 安全实践:敏感配置通过环境变量注入
- 错误处理:使用项目提供的标准异常体系
- 日志规范:合理配置日志级别和输出目标
7. 故障排除
- 动态库加载失败:检查
LD_LIBRARY_PATH和FOUNTAIN_HOME设置 - 版本冲突:确保Fountain版本与仓颉版本匹配
- 日志不输出:验证日志环境变量配置是否正确
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



