先介绍两个概念:高并发和高可用。
高并发
即在单位时间内的并发请求数非常高,因此对网站的吞吐能力和处理能力比较高。例如12306,淘宝等。
高可用
即对网站的稳定性要求比较高,比如不允许停止服务,某台机器出问题后不影响网站的正常访问等。
互联网应用中,通常面临的问题是前者——高并发。
高并发又分为cpu密集型和io密集型。前者要求网站的计算能力要高,后者要求网站的吞吐能力要高。
通过提升单台机器的性能来解决高并发的问题已不适用当前暴涨的网络访问,唯有集群是解决高并发问题的最佳方案。
ngix + tomcat 集群 + redis集群 提高网络吞吐量
单个tomcat的网络吞吐量有限,如果很多个tomcat进行集群,就可以提供一个较高的网络吞吐量。
此外,如果网站有较多的计算,也可以采用此种方案来提升网站的计算能力。
mysql 集群 提高数据库并发访问能力
用户的数据最终都是存储在数据库的,数据库的数据都是存储在磁盘上。当有较多的磁盘访问时,磁盘io就会被占满,从而造成网站体验变差。而mysql集群正解决了此问题。
hadoop 分布式计算和分布式存储
前两种方案都只适合对事务要求较高、数据库的增删改(CUD)操作频繁的场景。如果数据库对事务要求不高,负载都集中在查询上(例如百度、淘宝),则可以考虑使用hadoop来进行数据的计算和存储。
真实的环境中,面临的问题通常都是复杂的,因此经常是几种方案混合使用。以后也许会出现新的技术来解决这些问题,不过其中心思想都是不变的。
全文完。