业余时间用 .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 的!
===
在本文我简略介绍一下零碎后盾的架构,还请大家多多斧正。
服务器程序和数据库
服务端程序除了提供个别数据增删改查能力之外,重要的是须要实现稳固的音讯中件间,稳固的站点状态、客服状态、访客状态等上下文数据在内存中的治理,以及稳固的 TCP/IP 长连贯保护机制。
综合思考技术指标和开发效率,我采纳了 .net core 做为服务端程序,SQL Server 做为数据库的计划。
.net core 目前曾经具备了欠缺的技术指标,并且可能提供其它开发平台无法比拟的开发效率。得益于整个 .net 技术体系,使我靠一己之力实现整个零碎成为可能。
数据库我采纳了 SQL Server,它可能借助 Entity Framework Core 与 .net core 无缝交融,提供无可比拟的开发效率。同时,在数据处理的性能上,齐全可能满足各项技术指标的要求,在日常应用和运维上,也提供了 Oracle 和 MySQL 无法比拟的便利性和工作效率。
客服端程序
客服端程序我应用了 WPF 框架。相比 WinForms 程序,WPF 提供了更高的开发效率和更齐备的根底框架,使得画面出现、数据处理、模块解耦更容易。同样,基于 .net 体系的 WPF 所提供的极高的开发效率是其它开发平台无奈提供的。对于须要一天十几个小时稳固运行不退出的程序而言,原生客户端程序的稳定性也是基于 Web 页面的程序所无奈相比的。
在上文中,咱们提到零碎能够横向扩大,具备弹性扩容的能力。在初期能够以较低的配置环境运行,用户减少时,能够在不影响原有构造的根底上,无感的横向扩大。亦或因服务规模的减小而膨胀。
上面我将从零碎的整体构造来论述这个问题:
从上图能够看出这是一个典型的分布式部署零碎。客户网站中嵌入的 JavaScript 文件在运行是地,首先连贯路由服务器,路由服务器保留了一张表,每个站点所应该应用的应用服务器地址。就如同 DNS 服务器一样,通知客户网站你应该向哪里发动真正的连贯申请。接着,客户网站中嵌入的 JavaScript 程序向对应的应用服务器发动连贯,上报访客状态,接管服务器指令。
那么很容易了解,咱们只须要扩大咱们的应用服务器数量,就能够轻松的减少零碎的承载能力。反之也能够进行缩减操作。
在解决客户的私有化部署需要时,咱们也能够依据容易的理论须要,勾销路由服务器、勾销文件服务器、勾销 CDN 内容散发网络。以一个简略的计划来应答访问量不高的中小企业需要。在这个根底上,咱们还能够借助当初的云服务器,实现弹性配置,以一个较低配置的服务器开始运行,甚至将数据库和缓存服务齐全部署在一台服务器上应用,在应用过程中发现确有须要,先减少单台服务器的配置,不能满足需要的,再拆散数据库和缓存服务,还不能满足要求的,则减少路由服务器,减少应用服务器。