【小白晋级大师】如何设计一个支持10万人用的ChatGPT对接系统
不停地书写,方能不失在人海茫茫。
1.前言
之前给大家写了ChatGPT对接企业微信的教程,具体可看知乎链接:https://zhuanlan.zhihu.com/p/611555021
文章结尾说了教程只能适用于小规模使用,网上能找到的其他ChatGPT对接钉钉、飞书、自定义网页等等教程,原理都是一样的,写个中转程序,在ChatGPT和你用的交互工具之间中转一遍。是个简单的单体系统,逻辑看下图
这种单体系统设计简单,很快就能开发完成并应用。缺点就是性能瓶颈限制在单台服务器上,无法支持高并发场景,举例说明,现在有10万人要用这个系统,系统会直接崩溃。
2.分布式ChatGPT对接系统
基于此,我们需要设计一个分布式系统,整体架构看下图
2.1 交互层
交互层就不多说了,就是用户直接使用ChatGPT的工具,可以是企业微信、钉钉、网页等等。这些工具都有对应的官方文档,简单说就是输入和输出接口
2.2 客户端层
* 负责接收交互层传入的文本信息,转发给服务端;
* 同时接收服务端的响应信息,回传给交互工具;
* 缓存对话上下文,支持连续对话
这里的构想是客户端有多个请求入口,比如每个公司都有自己的企业微信,给每个公司分配指定IP的客户端。
这样做的好处是流量入口不会单一,不需要再做一层负载均衡流量分发。链路图可参考下面:
2.3注册中心
注册中心的作用:
* 服务注册:服务端启动后,将自己的信息注册到注册中心,包括IP、端口、服务接口等。
* 服务发现:客户端通过注册中心获取路由表,查询服务端的IP和端口,从而调用服务
* 负载均衡:平衡流量,将客户端请求服务端的流量按特定分发策略,分配到不同的服务器上
* 服务健康检查:维护注册中心和服务端的心跳检查,在某个实例故障时能从注册中心上移除,避免服务调用失败
简单地说,有了注册中心后,可通过给服务端水平扩容提升系统的并发能力,能支持更多人使用系统。
2.4 服务端
服务端作用:
* 接收客户端传入的信息,包括:对话上下文、GPT key
* 和ChatGPT API交互,接收API回传的信息文本,并回传给客户端
* 服务降级,支持手动降级,在ChatGPT不可用时,能降级到ChatGLM、文心一言等等对话大模型,保证对话功能仍然可用。
2.5 数据存储层
主要作用:
* 存储对话上下文数据
* 支持数据设置过期时间,到期自动删除
* 要求读取数据和写入数据响应时间短
3.技术选型
系统整体架构设计完后,具体用哪种语言去实现就根据自己擅长的了,这里说说我用的
* RPC框架:Dubbo
* 编程语言和框架:Java8、SpringBoot
* 存储中间件:Redis
* 注册中心:Nacos
* 链路追踪和服务监控:Skywalking(可选)
* 代码托管和自动化部署:阿里云-云效
4.具体实现
目前计划按上面的架构设计实现一版系统,有使用需求的可以联系我
后续还会更新架构中用到的技术点的文章,欢迎大家持续关注
相关文章
- 80%Nature读者都在用ChatGPT,科研方向最多的竟是头脑风暴!
- chatgpt国内能用吗 国内怎么玩chatGPT使用方法教程
- 3小时!开发ChatGPT微信小程序
- 使用C#开发ChatGPT聊天程序
- 国产ChatGPT:技术狂潮之下,要有梦元宇宙正在改变世界
- GitHub 又一黑科技项目诞生,成功复现 ChatGPT 完整流程!
- ChatGPT化身政治说客:帮企业判断是否受政府新法案影响,甚至写信建议修改立法
- ChatGPT后台揭秘!存储资源盘活系统构建AI时代的存储底座
- go语言 Linux部署 chatgpt 微信机器人指南
- Chatgpt使用指南(如何高效合理的使用ChatGPT)
- ChatGPT/InstructGPT详解
- 搜索arXiv最相关论文一键直达,多亏了ChatGPT,几天就完成
- [ChatGPT]SpringBoot快速接入ChatGpt
- [ChatGPT]-01-chatgpt可以做什么?如何调教
- 阿里版 ChatGPT 官宣!我们用 16 个提问,火速进行了测评……
- 微软开源“傻瓜式”ChatGPT训练工具,一大波套壳产品即将来临?