我是一个独立开发者,已经持续多年开发维护一款自己的产品:升讯威在线客服与营销系统。从一开始的偶有用户尝试,到如今线上环境和私有化部署均有了越来越多的稳定用户,在这个过程中,我也在不断的提高着自己的技术广度和深度,我希望通过博客与更多朋友分享自己的学习过程和心得体会。
在本篇博客中,我会系统阐述我的升讯威客服系统线上使用环境(SaaS环境)是如何解决文件上传、存储、查看的问题的。
服务端主程序自带文件服务
文件上传和存储使用主要服务于客服与访客聊天过程中的文件收发。在服务端主程序中直接集成文件上传下载功能,这是最简单,最容易部署的方式。升讯威客服系统也实现了这种方式,对于业务量不是很大的客户,这几乎是最佳选择,不用额外部署独立的文件服务器,既方便,又节省成本。
但是对于业务量较大的客户来说,这种通过服务端主程序提供文件上传下载的方式,会有一个比较大的弊端,就是占用主程序服务器的带宽。这会产生两个影响:
影响服务器主程序的承载能力
升讯威客服系统本身对带宽要求很小,5 Mbps 即可承载 2000 访客同时在线。但是,如果服务器的带宽需要同时为文件上传下载服务,则一个大图上传或查看瞬间就能把带宽拉满,造成用户使用瞬时卡顿。如果是上传或下载查看视频文件,则很可能会对带宽产生较长时间的影响,这对业务量较大,特别是与业绩挂钩的重要场景来说,是不可接受的。
提高主程序服务器的带宽成本
通常云服务器附带的带宽都很贵,如果要在主程序服务器上兼顾业务数据的传输和文件上传下载,则需要购买更高的带宽,在业务量较大的情况下,这是相当大的一笔支出。
使用公有云 OSS 的优劣势
一个自然而然的方案,是使用公有云 OSS 文件存储服务。好处是接入方便,文件传输不占用主程序服务器的带宽。但是,又一个但是,这同样有两个弊端:
部分客户需要绝对私有化部署
部分客户需要绝对安全可控。常见于政府、金融、保险、医疗等行业,这部分客户不接受公有云文件存储方案。
成本没有想像的低
这是我在自己的官方在线使用环境(SaaS 环境)实际使用近一年后的体会:成本很高。以我使用的阿里云 OSS 文件存储服务为例,实际需要支出的费用包括:
- 文件存储费。随着业务量提升,费用会显著提升,这部分费用倒也可以理解。
- 流量费。有些人会忽略,但这部分费用不低,在使用量大的使用,会是相当大的一笔支出,平台会推荐你绑定 CDN 购买流量包,CDN 流量包的价格会比 OSS 流量价格稍低。
- 接口操作费。这是一个奇葩的收费点,除了文件上传下载之外,你调用其它的功能接口,会产生费用,包括你在阿里云 WEB 后台,对文件进行批量操作,例如查一下目录大小,批量删除文件,不好意思是计费的。
- CDN 加速流量费。为了节省 OSS 本身的流量费,以及据说可以加速不同地区访问速度,那么购买 CDN 流量包,但是在购买时,阿里云按不同的国家、地区、港澳台分开卖。
- CDN 回源流量费。CDN 服务回源请求内容的流量,不包括在 CDN 加速流量包里面,要另外购买。
- HTTPS 请求数费。是不是有点莫名其妙了,是的,当你给 CDN 请求绑定 HTTPS 证书之后(这是必须的,否则 HTTPS 页面无法加载 HTTP 内容),阿里云会按你请求的 次数 计费,这也需要购买套餐包。
- 内容安全审计费。为了防止用户上传不合适的内容,购买由阿里云提供的内容审计服务,用户量业务量上来之后,这也是相当一笔支出,同样的,阿里云按你要审计的内容不同,又拆成了不同的套餐包分开售卖。这一项不购买是否可以呢?这一项虽然不是必选,但你必须自己注意审核用户上传的内容,否则被阿里云审计到,会被停服。从这一点说,我感觉无轮你买不买阿里云都会执行内容审计,只是让你为这个行为来付费。
还有一个隐含的成本,会被刷流量,我就被刷了,从某一天始始出流量直线拉升,连接数天持续维持在平时的数十倍规模,但主程序服务器及其它各项数据都正常,用户量正常,业务量正常,系统运行正常。并且在被刷之后的几天,就接到了阿里云代理商的推销电话,我无意关联引申什么,事情就是这么个事情。这是我彻底放弃阿里云 OSS 的一个关键导火索。
使用海外线路的优劣势
在使用了近一年阿里云的 OSS 服务后,随着升讯威客服系统在线使用环境(SaaS环境)用户量业务量的快速增长,交给阿里云的费用越来越多,购买的各种套餐消耗的越来越快。因为 SaaS 环境并不收费,是全免费使用的,阿里云这部分成本有点让人吃不消了。我把目光转向了海外 OSS 文件存储服务。
优势自不必说,免费的存储空间额度,流量额度堪称慷慨!至于什么各种流量包,还 TM HTTPS 请求数费用,更是闻所未闻。
一切都很完美,唯一一个弊端:中国大陆的部分用户访问存在障碍。虽然我提供的在线使用环境是免费使用的,但偶发的文件上传下载失败,会让用户误认为是系统本身的 BUG,这会带来负面影响。
自建文件服务器
至此,只剩下唯一的选择:自建文件服务器,用来满足大业务量场景下的文件上传、存储、下载。
这个想法我在早些时候有过,当时权衡服务器成本(硬盘和带宽),加上 CDN 成本之后,感觉并不合算,就一直细想,没落实。但随着自己线上环境使用量的增涨,受限于阿里云 OSS 的各种费用和海外 OSS 在国内的使用障碍,我只能开始研究自建文件服务器。
我把目光落在一台阿里云促销时购买的 200元/年 云服务器上,这台服务器配置不高,但带宽却不低,再一查居然有 80 GB 的磁盘存储空间,这不正好合适在上面搭一个文件服务吗?
并且我不知怎么的当时灵光一闪,感觉自己过去被“必须上CDN”这个思维给禁锢了,为什么必须上 CDN?阿里云服务器本身访问速度是能保证的,并且由于客服系统的特殊性,我不需要像大型互联网公司一样实现非常广泛的、高并发场景的文件分发。直白点说,文件服务器是服务于升讯威客服系统中的客服和访客聊天时,上传文件、查看文件用的,不存在单个文件需要被非常多的人同时访问的情况。只要能保证上传速度、访问速度即可,其实在这种情况下上 CDN 作用也是有限的,因为大部分流量都会回源,而 CDN 缓存的内容都是聊天记录中的图片和文件,除了客服和访客本人,其它人也看不到,客服也不会高频查看。
如此说来,这200元/年的服务器,岂不就完美解决了线上使用环境的文件存储和使用难题?剩下的事就是写一个与现有接口兼容的文件服务即可。
自建文件服务器的思路
我的目标很明确,我不需要一个全能的、强大的独立文件服务器,我需要的是一个服务于升讯威客服系统的文件服务组件。在这个明确的目标之下,许多事是可以简化的,例如鉴权的流程,跨域的配置,都可以直接在文件服务器的配置文件中约定,不需要提供管理界面去配置。对我来说要实现的功能,核心就一个:
- 预签名上传。这是为了避免文件先上传主程序服务器再转存文件服务器,这样就实现不了避免占用主程序服务器带宽的目的了。预签名上传可以由服务器提供一个一次性的上传地址,用于客服端或访客端向文件服务器直传文件。
实现的方法并不复杂,业内主流的方案是按 AWS S3 的接口来实现即可。
有了这个独立的文件服务器组件,我的线上使用环境彻底解决了文件上传、存储、使用的长期难题,并且由于是与主程序服务彻底解耦的,未来即便阿里云这个 200 元/年的服务器用不了或者无法满足业务需要了,我也可以单独把这个文件服务轻松的迁移到任何服务提供商。
对于私有化部署的客户来说,也为他们提供了一个不使用公有云 OSS 服务的新方案,解决他们过去在不使用公有云 OSS 的情况下,只能用主程序服务来提供文件上传下载的弊端。
独立者的产品成果
https://kf.shengxunwei.com
可全天候 7 × 24 小时挂机运行,网络中断,拔掉网线,手机飞行模式,不掉线不丢消息,欢迎实测。
访客端:轻量直观、秒级响应的沟通入口
访客端是客户接触企业的第一窗口,我精心打磨每一处交互细节,确保用户无需任何学习成本即可发起对话。无论是嵌入式聊天窗口、悬浮按钮,还是移动端自适应支持,都实现了真正的“即点即聊”。系统支持智能欢迎语、来源识别、设备类型判断,可自动记录访客路径并呈现于客服端,帮助企业更好地理解用户意图。在性能方面,访客端采用异步加载与自动重连机制,即使网络波动也能保障消息顺畅送达,真正做到——轻量不失稳定,简单不失智能。

客服端软件:为高效率沟通而生
客服端是客服人员的作战平台,我构建了一个专注、高效、响应迅速的桌面级体验。系统采用多标签会话设计,让客服可同时处理多组对话;访客轨迹、历史会话、地理位置、设备信息、来源渠道等关键信息一目了然,协助客服快速做出判断。内置快捷回复、常用文件、表情支持和智能推荐功能,大幅降低重复劳动成本。同时,系统还支持智能分配、会话转接、转人工、自定义状态等多种机制,保障团队协作流畅,让客服不仅能应对高峰,更能稳定交付满意度。

Web 管理后台:
Web 管理后台是企业对客服系统的“驾驶舱”,从接入配置、坐席管理,到数据统计、权限控制,一切尽在掌握。你可以灵活设置接待策略、工作时间、转接规则,支持按部门/标签/渠道精细分配访客,满足复杂业务场景。系统还内置访问监控、聊天记录检索、客服绩效统计、错失会话提醒等运营级功能,助力管理者洞察服务瓶颈,持续优化资源配置。支持私有化部署、分权限管理、日志记录与数据导出,为追求安全性与高可控性的企业,提供真正“掌握在自己手里的客服系统”。

希望能够打造: 开放、共享。努力打造一款优秀的社区开源产品。
钟意的话请给个赞支持一下吧,谢谢~
