历史性突破:使用 .net core 日处理消息量超过 1.7 万条!

业余时间用 .net core 写了一个在线客服系统。并写了一个系列的文章,写介绍这个开发过程:

.net core 和 WPF 开发升讯威在线客服系统:目录
https://blog.shengxunwei.com/Home/Post/44a31a32-d4e1-4ddd-8526-8a2bcd2e22be

开始只是写着玩玩,验证一下 .net core 到底行不行。做这个选择的时候还是比较担心的,能不能扛得住一个后台系统的数据处理压力。

在编码的过程中,查阅了大量的资料,.net core 和 c# 到底怎样才能实现高性能的后台服务。

好在功夫不负有心人,前几天查了一下客户的使用情况,当天处理的收发消息量超过了 1.7 万条!一家电子商务公司,在线咨询量远远超过了我的预计。

虽然系统完全是免费的,免费给客户使用,但是从技术上讲,达到这样一个成绩,很欣慰。

也证明了使用 .net core 做为大型系统后台的实力,是完全OK的!

历史性突破:使用 .net core 日处理消息量超过 1.7 万条!_第1张图片

===

在本文我简单介绍一下系统后台的架构,还请大家多多指正。

服务器程序和数据库

服务端程序除了提供一般数据增删改查能力之外,重要的是需要实现稳定的消息中件间,稳定的站点状态、客服状态、访客状态等上下文数据在内存中的管理,以及稳定的TCP/IP长连接维护机制。
综合考虑技术指标和开发效率,我采用了 .net core 做为服务端程序,SQL Server 做为数据库的方案。
.net core 目前已经具备了完善的技术指标,并且能够提供其它开发平台无法比拟的开发效率。得益于整个 .net 技术体系,使我靠一己之力完成整个系统成为可能。

数据库我采用了 SQL Server ,它能够借助 Entity Framework Core 与 .net core 无缝融合,提供无与伦比的开发效率。同时,在数据处理的性能上,完全能够满足各项技术指标的要求,在日常使用和运维上,也提供了 Oracle 和 MySQL 无法比拟的便利性和工作效率。

客服端程序

客服端程序我使用了 WPF 框架。相比 WinForms 程序,WPF 提供了更高的开发效率和更完备的基础框架,使得画面呈现、数据处理、模块解耦更容易。同样,基于 .net 体系的 WPF 所提供的极高的开发效率是其它开发平台无法提供的。对于需要一天十几个小时稳定运行不退出的程序而言,原生客户端程序的稳定性也是基于 Web 页面的程序所无法相比的。


在上文中,我们提到系统可以横向扩展,具备弹性扩容的能力。在初期可以以较低的配置环境运行,用户增加时,可以在不影响原有结构的基础上,无感的横向扩展。亦或因服务规模的减小而收缩。

下面我将从系统的整体结构来阐述这个问题:

历史性突破:使用 .net core 日处理消息量超过 1.7 万条!_第2张图片

从上图可以看出这是一个典型的分布式部署系统。客户网站中嵌入的 JavaScript 文件在运行是地,首先连接路由服务器,路由服务器保存了一张表,每个站点所应该使用的应用服务器地址。就好像DNS服务器一样,告诉客户网站你应该向哪里发起真正的连接请求。接着,客户网站中嵌入的 JavaScript 程序向对应的应用服务器发起连接,上报访客状态,接收服务器指令。
那么很容易理解,我们只需要扩展我们的应用服务器数量,就可以轻松的增加系统的承载能力。反之也可以进行缩减操作。

在处理客户的私有化部署需求时,我们也可以根据容易的实际需要,取消路由服务器、取消文件服务器、取消CDN内容分发网络。以一个简单的方案来应对访问量不高的中小企业需求。在这个基础上,我们还可以借助现在的云服务器,实现弹性配置,以一个较低配置的服务器开始运行,甚至将数据库和缓存服务完全部署在一台服务器上使用,在使用过程中发现确有需要,先增加单台服务器的配置,不能满足需求的,再分离数据库和缓存服务,还不能满足要求的,则增加路由服务器,增加应用服务器。

你可能感兴趣的:(历史性突破:使用 .net core 日处理消息量超过 1.7 万条!)