💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# Cmfac.com 的开发文档 *鉴于之前版本很难实现的可扩展性,新版 Cmfac.com 决定不再实现一个万能的网站架构和一个万能的数据表。我可以换个思路。让一个程序满足任意情况太难的话,或许我可以让任意程序满足一种情况。然后通过这一种情况建立关系,组成集合。* * Composer 可以看成是一个包含任意程序的集合,可以从 Composer 中获得启示 : * 所有的拓展的名字和版本号都写在 Composer.json 中,在运行 composer install 或 update 的时候 composer 通过遍历一个 json文件就可以更新或安装所有的包 * 所有的拓展都放在一个固定的文件目录下,而且所有的包的目录结构都是大致相同的 * Composer 只用来管理依赖,而不负责依赖如何工作。 **为了实现 Cmfac.com 的可扩展性,我计划把核心写为类似 Composer 的功能和结构。核心只负责保存所有模块的名字和版本号,而不关注每个模块具体的功能实现。每个模块自己负责自己的输入和输出。** 下面是具体的实现计划: 1. 使用两个数据库,一个为程序核心数据库,负责存储所有模块的信息。另一个数据库为模块数据库,存储各个模块的数据。 2. 核心加载模块需要的模型和依赖,而模块接收输入,返回输出。在任意时刻只有接受请求的模块,核心,模块的依赖在工作。核心决定内个模块应该工作,一次请求响应结束以后,核心需要保留模块当前的状态,然后释放所有的加载项。 3. 内核具体的实现类似 Linux 的设计,分为用户和进程两部分,核心通过用户ID和请求的模块ID返回不同的模块调用结果。核心类似CPU而Apache类似系统内核,核心计算和返回的ID取决于Apache,Apache是多线程的,所以这个系统也是多线程的。 其实也没有那么难,虽然硬盘读写速度比不上内存读写速度,但是http本身就有很高的延迟,访问量没有那么大,计算量也没有那么大。