典型的大型互联网系统使用了哪些技术方案和手段,主要解决什么问题?
可预见的挑战
一般一个典型互联网会有高可用、高并发、快速响应的要求。在它的演变过程大致会尽力这么几个方面的挑战:高并发、大流量,7*24的高可用支持,海量数据的管理,用户分布广泛,网络情况复杂等问题。
通常应对高并发的解决方案
通常我们应对高并发有两种解决方案:垂直伸缩和水平伸缩。
垂直伸缩
通过升级硬件和网络吞吐能力可以实现垂直伸缩。由于不需要改变应用架 构,所以通常被认为是最简单的短期伸缩性方案。
此种方案应对业务的初期,需要尽快应对流量的陡峭式增加,抓住市场的变化。但确定很明显,垂直伸缩有物理极限,且相对带来的性能提升,硬件升级的代价高昂,且达到某个程度后,增加单位计算能力需要的更多的花费。
水平伸缩
水平伸缩是指通过增加服务器提升计算能力的一类架构方法。
水平伸缩被认为是伸缩性的圣杯,水平伸缩可以克服垂直伸缩带来的单位计算成本随计算能力增加而迅速飙升的问题。另外,水平伸缩总是可以增加更多服务器,这样,就不会像垂直伸缩那样遭遇到单台服
务jiang器的极限。
应对大流量
服务拆分,容器化
将系统按模块拆分,做到容器化部署,达到自由伸缩。
消息队列
将业务流通过消息队列来解耦,异步操作达到快速响应避免耦合、等待。
缓存
增加nosql缓存,本地缓存和cdn缓存,将高频数据和静态资源放在缓存中,支持快速响应,也避免大流量直接及传到数据库。
数据库主从复制
数据库进行主从复制,进行读写分离,将读的压力分散开。对冷数据定期备份,分离到mongdb中,提高人数据的访问效率。
文件服务器
建立分布式文件服务器,将图片、音视频单独存储。
应对高可用
nigix反向代理,保护后台服务器,不暴露真实地址。
负载均衡分散流量冲击。
异地多活。
评论