现在电商的发展非常火爆,几乎人人都和电商有过亲密接触。但是说到电商网站或者软件使用的一些技术和架构,估计
清楚的人就不多了。比如双11淘宝抢购,这个并发量可以说是世界之最了,那这后面需要什么样的牛逼技术来支持呢。这些
电商网站中采用的技术和架构是否可以在我们做企业应用时借鉴呢?当然可以啊,最近我们就针对目前我们公司内部运维多
年的系统遇到的一些问题讨论,并探讨如果采用电商网站使用的一些技术是否可以避免和减少目前系统的一些问题。
主要针对目前系统的高可用,高可靠,低耦合等等问题来讨论。
首先要谈的是高可用和高可靠,这个对于应用系统很重要,尤其是针对用户群很大很广的系统,比如一个系统可能好几个
事业部都在同时使用,而且每个事业部的功能可能或多或少有些差异,如何在设计时考虑开发,测试,运维,部署的一些可能
出现系统中断的问题,比如,我只是想升级A事业部的一个功能,没有想到升级时发生Bug,结果这个Bug影响到了整个系统,所
有事业部一起玩完,大家都不能正常工作了,或者是由于其中有一台服务器宕机,整个系统就崩溃了。还有就是遇到高并发的情
况时,系统反应很慢甚至出现了假死的情况。
光高可靠和高可用的问题铺开来讲涉及到的点和面就很广。比如为了提高系统的安全性和健壮性,数据库服务器和应用服务器
就要考虑冗余设计,实现双机热备份能够在故障出现时,最短时间内完成切换,保证系统的正常运行。可以考虑使用Redis缓存服务
器来提高系统的性能,使用读写分离技术来减轻数据库的访问压力,提升系统的用户体验。同时可以在数据库的设计上来使用分库,
分表,分区存储来进一步的提高可扩展性和访问性能【如果所有数据都在一个库中那么访问时IO压力肯定很大,如果考虑将数据库
合理的分成多个库并分别部署在不同服务器上或者将数据库分区存储在不同服务器上,这样压力肯定就会减少】。
为了后续系统的可扩展性,需要考虑随着时间变化,业务发生变化,数据量不断增加,系统业务越来越复杂,怎么样保证系统
还能够如同上线初一样运行流畅呢?像现在淘宝,京东等等大型电商网站采取的一些技术手段我们也是可以借鉴的。当然了,我们
也要考虑系统和业务发展的实际情况,比较要做到像淘宝和京东这样高大上的话,是需要大把银子投入的。如果你只是一个小系统,
用户不过50人,数据量10年加起来也不过500万记录,那就没必要整这么高大上的技术了。
所以我们做这些方案设计的同时还得考虑我们系统和业务及自身力量的实际情况再作出综合的决断。