在线客服技术的解决方案
1、 轮询
这是一种比较古老而简单的解决方案,也就是定时刷新,在线客服在聊天的时候,aJax在后台定时获取数据,如果接收到发送过来的消息的话,则将消息显示在聊天框上。
这种技术的缺点就是后台刷新太频繁了,而很多刷新都是没有数据返回了,导致性能的下降。
2、 长连接
这种技术有称为“长轮询”,它是基于轮询技术的,但有所改进,客户端向服务端发起请求的时候,服务端不会直接返回,而是会阻塞请求,直到服务器读取到消息后才返回,这个时候,客户端才调用回调函数,将读取到的消息显示出来。
这里讲的在线客服系统将选用该技术来实现。
图2 基于长轮询的服务器推模型
消息
这种解决方案采用一个作为client的applet,它使用TCP/IP或者无连接的UDP、甚至多播协议来建立与消息中间键server的通讯,然后由server推送消息给client。你可以从例如SoftWired的iBus、IBM的MQSeries、BEA的WebLogic Event这些消息产品中直接挑选,或者自己使用基于socket的定制开发消息软件。
Comet技术Commet是一种使用HTTP长连接,无需浏览器安装插件的“服务器推”方案。它有两者方案:基于aJax的长轮询方式;基于iframe和htmlfile的流方式。这里,我们只关注里面的基于aJax的长轮询方式。
Pushlet是一个开源的Comet框架,其中在设计上有很多值得借鉴的地方,能够使用它来开发一个不是大规模的在线客服系统。而对于大型商用的在线客服系统,我觉得它还无法胜任。
负载均衡(分布式部署)一个正式商用的在线客服系统,不可能只在一个WEB服务器部署,这样子,性能和容量都很难扩展,所以必然是允许分布式部署的,通过负载均衡设备(或软件)来实现分布式访问。
如果采用分布式部署的话,那么就涉及到聊天的数据保存在哪里的问题。是保存在web服务器上,还是数据库呢?如果是单web服务器的话,那肯定是保存在web服务器上,其流程大概如下:
1、 用户发送消息是,系统将数据保存在web服务器(同时也保存数据库)上。
2、 客服对应的长连接获取web服务器上的数据,然后在客服的页面上显示出来。
3、 客服回复聊天信息,系统将数据保存到web服务器(同时也保存数据库)上。
4、 用户所在的长连接获取web服务器上的数据,然后在用户的页面上显示处理。
由于从web服务器上获取数据比在数据库获取数据的效率高,所以上面的逻辑是合理的,但是,基于分布式部署的环境下,他存在多个web服务器,那么发起聊天的消息应该保存在哪台服务器上呢?还是所有的服务器都保存一次呢?在分布式环境下存在一些像JBossCache等缓存同步的技术,但对应在线聊天系统,实时性的要求非常高,是否存在实时性的问题呢?
另外一个,基于安全的考虑,一般需要将用户所访问的功能放到一个web服务器集群上,客服所访问的功能放到另外一个web服务器集群上,两个web服务器集群的网络需要隔离,以防止黑客的攻击。这就又出现一个问题,如果用户发送的消息放到用户的web服务器上,那么客服如果获取到该消息呢?同理,用户的web服务器有如果获取客服web服务器对应的消息呢?
那么放到数据库来实现呢?把聊天记录都放到数据库中,用户和客服都从数据库获取聊天的信息。这样子的话,那么数据库的负荷将非常大,随着用户数的不断增加,数据库负荷越来越大,而且,在大用户下,存储都是非常频繁的,将所有人的聊天信息放到数据库上,是不明智的。还有一个安全上的考虑,一般实现用户的功能都不直接访问数据库,一般会经过一个中间的服务器作为中转,那么如果聊天信息从数据库取的话,效率则会更低。
那么,能不能像QQ那样,聊天双方直接建立连接,实时发送呢?其实,这是一种相对老点的技术,一般是采用Socket,或者UDP,实现双方的通讯。这种机制的缺点客户端可能需要采用applet插件或ActiveX插件,通讯时有比较大的性能消耗,最重要的一点,这些技术受网络的影响特别大,在一个环境下可以正常使用,在另外一个环境下,可能就无法正常使用了。所以,本文考虑的是采用aJax长轮询方式来实现的。
在这里,我建议客服的聊天数据从数据库读取,而用户的聊天数据从web服务器上读取。这是因为客服的数据相对比用户少很多,直接从数据库读取聊天数据,对数据库的性能影响较少,而用户的数量庞大,直接从数据库读取,无法满足要求。
那么,客服是将回复数据写到客服的web服务器,还是用户的web服务器呢?我的建议是写到用户的web服务器,因为用户的数据量非常庞大,用户从用户的web服务器获取数据,要比从客服的web服务器获取数据,性能要高得多。客服每次发送聊天信息的时候,往用户的web服务器写数据,虽然效率低,但由于客服的数据量小,并不影响性能。
另外,在分布式部署下,数据该记得所以的web服务器,还是某台特定的web服务器呢?我建议写到某个特定的web服务器上,这样避免客服每发送一条聊天信息,都要往所有的web服务器写数据,这会影响性能,但web服务器不断增加的时候,性能会随之下降。
那么,客服往哪台特定的web服务器写数据呢?用户又如何知道从哪台特定的web服务器上获取数据呢?这个,我们在用户登陆,负载均衡服务器给其分配到某个特定的服务器的时候,就可以将这个特定服务器的IP记录下来,客服就可以往这台机器发消息了,而用户也同样可以从该IP获取数据了。
肯定要做RAID5或者RAID1哦,这样数据才安全,不然数据掉了,损失就大了。ERP服务器实际上由中间件和数据库两部分组成,对服务器的性能要求非常高的。数据库软件对多核心支持比较完善,所以推荐多核心多线程的服务器,内存要足够大,这样可以减少读硬盘。硬盘用是15000转的最好了,这样全局查询读数据表的时候才快。
产品型号:I2TS2-6788V
产品类型:双路六核塔式服务器
处 理 器:Xeon E5-2620
内 存:8G DDR3 REG ECC
硬 盘:SAS 300G
机 构:塔式
价 格:¥13990
银牌服务
全国三年免费上门售后服务,关键部件三年以上免费质保。
建议你再增加2个硬盘,做raid5阵列,这样3个SAS 300G 15000转硬盘,可用容量有600GB,既提升了磁盘读取性能,也保障了数据安全,即使坏掉一个硬盘,数据也不会丢失。两个硬盘同时坏掉的可能性就太低啦。
给你推荐的是国产品牌正睿的服务器产品,他们的产品性价比很高,做工很专业,兼容性,质量之类的都有保障,售后也很完善,3年免费质保,3年免费上门售后服务,在业界口碑很不错。
互联网金融这一新兴行业,重视用户体验与数据安全,整体IT建设标准高,需要一个灵活完整的架构来支撑整个平台的正常运行。
互联网金融行业需要综合考虑网络的高质量、安全性、高灵活性、以及数据备份等需求,从而才能够保证业务永续不中断、业务安全不泄露、业务分配更灵活、业务转发更高效和数据存储更有保障。
1 高速高效
互联先锋MT4/5外汇交易解决方案提供服务器就近选择,保障用户访问速度高效快速,防止过高丢包率而导致客户交易的失败。
2 数据安全不泄露
防火墙部署在外网和内网之间更有效,全面的保护内部网络,如针对DDoS(分布式拒绝服务攻击)Ping of Death、ping flood等攻击可进行有效的防范,保证网络的安全。 对服务器自身环境进行安全设置,包括IIS,Nginx、Apache、Lnmp等环境的安全部署,底层系统的安全设置,IP安全策略设置,防火墙的设置,系统应用软件的安全加固,系统端口的安全审计和身份认证,系统内核rootkit木马病毒主动防御,系统注册表和危险组件的加固,系统服务的安全设置,系统日志的安全审计。系统管理员账号的权限分配和访问限制,远程登录的军规化安全防护。
3 扩展性高
基于应用的网络架构,便于以后业务系统无缝拓展。
4 业务转发高效
通过载均衡负技术将客户的请求导向到不同的数据中心的服务器群中,以便为客户提供更快的响应速度和针对某一数据中心出现灾难性事故时智能的冗灾处理。而且可以通过部署缓存服务器或者基于CDN的加速服务来实现业务快速转发。
5 数据存储有保障
通过SAN共享存储容量可以对异构环境中的多个存储系统进行共享访问。SAN针对数据高可用性进行了专门设计,可支持服务器集群,并进行冗余配置,从而消除单点故障。实现多平台连接SAN还可提供远程存储访问和数据复制的主干--他们对于容灾和磁盘到磁盘的拷贝至关重要。
6、异地数据容灾
将机密数据通过加密***通道备份到异地机房,使系统即使是灾难性毁灭也能业务不中断。
结合金融行业对交易超低延迟、数据超高安全存储的要求,互联先锋金融行业解决方案可准确把握交易时间,降低交易延迟,满足交易数据存储安全、系统安全组网需求;帮助金融客户快速实现网络部署,提升企业竞争力。更多金融行业服务器系统解决方案详情请咨询互联先锋官网。
我们知道,服务器是用来提供各类服务的专业计算机,本质上和我们常规的电脑差不多,只不过它的配置更专业一些。不少人误认为服务器买来后布署下服务器环境就行了,其实不是这样的,服务器如果不进行一些优化设置,那性能也得不到最大化发挥。
当你拿到服务器后要进行哪些优化呢?大致可以从:服务器硬件、系统设置、软件环境优化三方面着手。
服务器硬件优化方案
正常情况下服务器硬件优化是在选购服务器之前就定好,因为硬件优化起来是比较麻烦的。
服务器内存越大越好、CPU核心数越多越好;
服务器硬盘不要选择机械硬盘,固态硬盘性能最好;如果预算有限,那建议是固态+机械硬盘组合使用,系统安装在固态盘里;
关闭不必要的外设,如:光驱、蓝牙等。
服务器系统优化方案
系统直接影响服务器的性能及稳定性,首先要选择合适的系统,然后再进行系统优化。
Linux类系统性能和稳定性要优于WindowsServer;
系统一定要安装64位的,不要选择32位系统;
Linux系统内核参数的优化,如:最大打开文件数限制、内核TCP参数等;
如果使用的是云服务器,则可以关闭服务器上的默认防火墙,改用云计算平台提供的在线防火墙;
关闭不必要的系统服务,如:打印服务;
精简开机启动服务等。
软件环境优化
服务器只是硬件,最终服务的运行时环境还是靠服务器端软件来提供的,比如WEB服务器就离不开:WEB容器(Nginx、Apache、Tomcat、IIS)、数据库(MySQL、SQLServer)等支撑。下面总结一些软件环境优化方案,可以满足大多数服务器的需要。
合理使用NoSQL等缓存,可以很大程度缓解后端数据库的压力;
对于高并发场景,考虑集群分布式部署;
数据库量级很大时,就要考虑SQL优化:读写分离、慢查询优化、合理索引等;
消息系统的合理使用等。
以上就是我的观点,对于这个问题大家是怎么看待的呢?欢迎在下方评论区交流~我是科技领域创作者,十年互联网从业经验,欢迎在线咨询
0条评论