【小白晋级大师】如何设计一个支持10万人用的ChatGPT对接系统

简介: 之前给大家写了ChatGPT对接企业微信的教程,文章结尾说了教程只能适用于小规模使用,现在来写大规模使用的教程

不停地书写,方能不失在人海茫茫。

1.前言

之前给大家写了ChatGPT对接企业微信的教程,

文章结尾说了教程只能适用于小规模使用,网上能找到的其他ChatGPT对接钉钉、飞书、自定义网页等等教程,原理都是一样的,写个中转程序,在ChatGPT和你用的交互工具之间中转一遍。是个简单的单体系统,逻辑看下图

单体架构图.png

这种单体系统设计简单,很快就能开发完成并应用。缺点就是性能瓶颈限制在单台服务器上,无法支持高并发场景,举例说明,现在有10万人要用这个系统,系统会直接崩溃。

2.分布式ChatGPT对接系统

基于此,我们需要设计一个分布式系统,整体架构看下图

架构图.png

2.1 交互层

交互层就不多说了,就是用户直接使用ChatGPT的工具,可以是企业微信、钉钉、网页等等。这些工具都有对应的官方文档,简单说就是输入和输出接口

2.2 客户端层

  • 负责接收交互层传入的文本信息,转发给服务端;
  • 同时接收服务端的响应信息,回传给交互工具;
  • 缓存对话上下文,支持连续对话

这里的构想是客户端有多个请求入口,比如每个公司都有自己的企业微信,给每个公司分配指定IP的客户端。

这样做的好处是流量入口不会单一,不需要再做一层负载均衡流量分发。链路图可参考下面:

客户端层.png

2.3注册中心

注册中心的作用:

  • 服务注册:服务端启动后,将自己的信息注册到注册中心,包括IP、端口、服务接口等。
  • 服务发现:客户端通过注册中心获取路由表,查询服务端的IP和端口,从而调用服务
  • 负载均衡:平衡流量,将客户端请求服务端的流量按特定分发策略,分配到不同的服务器上
  • 服务健康检查:维护注册中心和服务端的心跳检查,在某个实例故障时能从注册中心上移除,避免服务调用失败

简单地说,有了注册中心后,可通过给服务端水平扩容提升系统的并发能力,能支持更多人使用系统。

2.4 服务端

服务端作用:

  • 接收客户端传入的信息,包括:对话上下文、GPT key
  • 和ChatGPT API交互,接收API回传的信息文本,并回传给客户端
  • 服务降级,支持手动降级,在ChatGPT不可用时,能降级到ChatGLM、文心一言等等对话大模型,保证对话功能仍然可用。

2.5 数据存储层

主要作用:

  • 存储对话上下文数据

  • 支持数据设置过期时间,到期自动删除

  • 要求读取数据和写入数据响应时间短

3.技术选型

系统整体架构设计完后,具体用哪种语言去实现就根据自己擅长的了,这里说说我用的

  • RPC框架:Dubbo
  • 编程语言和框架:Java8、SpringBoot
  • 存储中间件:Redis
  • 注册中心:Nacos
  • 链路追踪和服务监控:Skywalking(可选)
  • 代码托管和自动化部署:阿里云-云效

4.具体实现

目前计划按上面的架构设计实现一版系统,有使用需求的可以联系我

后续还会更新架构中用到的技术点的文章,欢迎大家持续关注

相关文章
|
2月前
|
存储 安全 数据安全/隐私保护
【软件设计师备考 专题 】多媒体应用开发过程(二)
【软件设计师备考 专题 】多媒体应用开发过程
37 0
|
2月前
|
编解码 开发工具 C++
【软件设计师备考 专题 】多媒体应用开发过程(一)
【软件设计师备考 专题 】多媒体应用开发过程
34 0
|
1月前
【软件设计师—基础精讲笔记11】第十一章 标准化和软件知识产权
【软件设计师—基础精讲笔记11】第十一章 标准化和软件知识产权
19 0
|
3月前
|
算法 安全 开发工具
DevChat一网打尽所有大模型——给你全新的编程体验
DevChat一网打尽所有大模型——给你全新的编程体验
46 0
|
6月前
|
人工智能 自然语言处理 IDE
人手一个编程助手!北大代码大模型CodeShell-7B开源,魔搭社区最佳实践来了!
CodeShell是北京大学知识计算实验室联合四川天府银行AI团队研发的多语言代码大模型基座。
|
7月前
|
消息中间件 架构师 算法
好家伙!全网开源对标P5~P7程序员技术成长路线,阿里这次是真卷
今年的程序员可以说是最焦虑的一个群体了,面试找工作投简历没人理,有面试机会也面试不过,面试进去还干不长...于是,程序员们纷纷直呼:互联网寒冬又双叒叕来了,环境不好努力也没用躺平算了。
166 1
好家伙!全网开源对标P5~P7程序员技术成长路线,阿里这次是真卷
|
8月前
|
机器学习/深度学习 人工智能 算法
【如何入门编程】编程升级通关绝招
【如何入门编程】编程升级通关绝招
32 0
|
9月前
|
编解码 iOS开发
一节微课诞生的全过程(无保留分享,望收藏)
本来是想以直播的方式把制作这节微课的过程分享出来,但考虑到大家的时间不统一,制作过程太长,这节微课录音之后制作动画就足足用了两天
134 0
国外经典神作:领域驱动设计软件核心复杂性应对之道手册限时阅读
相信领域驱动设计这个对有些小伙伴来说很陌生,领域驱动设计(Domain Driven Design,DDD)自诞生以来已有十几年时间,这门本已步入老年的方法学却因为微服务的兴起而焕发了第二春。并不是微服务拯救了领域驱动设计,是因为领域驱动设计一直在坚硬的生长,然而看起来,确乎因为微服务,领域驱动设计才又焕发了青春。
国外经典神作:领域驱动设计软件核心复杂性应对之道手册限时阅读
|
存储 Serverless 程序员
实操教学|如何用Serveless3分钟做好邀请函?
实操教学|如何用Serveless3分钟做好邀请函?
200 0
实操教学|如何用Serveless3分钟做好邀请函?