大规模复杂系统如何架构(一)?
一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述。
大型互联网应用系统的面对的问题是用户需求变化快、高并发大流量,高可用、高性能、海量数据,网络复杂及安全等,面对这些问题在技术发展迭代过程中也出现了很多好的解决方案和手段,也是我们可以借鉴的。
面对用户需求变化快,应用系统开发新的功能需要渐进式发展,快速试错,迭代开发。快速收集用户使用的数据,通过数据驱动和运营分析,抓住用户真正的痛点,这样才能不断完善产品,服务好用户。
对于并发访问量大的问题,主要有两个技术方向:垂直伸缩和水平伸缩的方式。
垂直伸缩指的是服务器硬件配置升级的方式,这里主要考虑的是单台服务器的极限和成本问题。
水平伸缩的方式指增加服务器的方式提升计算能力的一种方法。
高并发访问是互联网应用系统主要考虑的问题,因为在高并发请求的情况下必然会出现性能(如何保证高性能?)、是否可用(如何保证高可用)的问题。面对这样的问题,通用的解决方法总结如下:
1、集群
指在多台不同的服务器中部署相同应用或服务模块,构成一个集群,通过负载均衡设备对外提供服务。使用应用服务器集群可以改善系统并发处理的能力,如利用应用服务器tomcat集群上层通过nginx负载提供服务可以把高并发请求平均到集群中个服务器来均衡。还有数据库一主多备、redis集群等
2、分布式
是指在多台不同的服务器中部署不同的服务模块,通过远程调用协同工作,对外提供服务。
应用:拆分出不同服务的微服务架构,通过微服务的方式可以把复杂的系统按照服务进行独立部署,分而治之的思想。
3、缓存
缓存是系统快速响应中的一种关键技术,例如cpu多级缓存、Linux操作系统文件缓存等。目前在应用架构中用的缓存分为客户端缓存(页面缓存、浏览器缓存)、网络中的缓存(web代理缓存)、服务端缓存(Query Cache、EHcache、Redis/MongoDB/Memcached)
4、异步
异步是指调用方不需要等待方法逻辑执行完返回就可以执行其他的逻辑,在被调用方法执行完毕后再通过回调、事件通知等方式将结果反馈给调用方。
常用的解决方法是线程池、消息队列的方式。
5、总结
因为有高并发才会有高可用和高性能的问题,如上分析可解决 但是实际中会引入其他复杂的问题,需要在实践中去解决。
高可用:集群
高性能:分布式、缓存、异步
版权声明: 本文为 InfoQ 作者【阿飞】的原创文章。
原文链接:【http://xie.infoq.cn/article/74057ce8bbdadfd53e9a79b0e】。文章转载请联系作者。
评论