`
快了的男孩
  • 浏览: 2366 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

大型网站处理高并发

 
阅读更多

一、一般高并发web系统
这里的一般指的是秒杀之类的电子商务系统,比如说小米抢购、淘宝双十一、秒杀活动等等,12306订票网站与其有本质区别,下面会有说到。

系统架构图
下图是我调查众多资料总结出的系统架构图,当然这也不能作为通用的解决方案,首先像淘宝等企业公布的资料肯定不是最先进或者是性能最好的,其次具体情况还需具体分析。

核心技术点

  • 前端优化  前端优化主要包括动态内容静态化,增加前端缓存。页面静态化是指将指含有大量动态元素的动态网页,如jsp、php等,转换为html静态页 面,静态页面由于不用加载动态元素,其访问速度要比动态页面快得多,可以增加访问速度,减小数据库压力;前端页面缓存在系统前端对Web服务器上的页面进 行缓存。
  • CDN技术  CDN即内容分发网络,其 基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互 联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向 离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。
  • 负载均衡  负载均衡的基本思想是把高并发的访问平均分配到每一个服务器节点上,从而减小分布式数据库中每一个节点的压力。
  • 中间件     数据库的中间件技术是指把应用层与数据库层分离,在中间增加一个部分,避免应用直接访问数据库。因为系统可能采用读写分离的技术,因而会使用不同的数据 库,中间件可以屏蔽数据库直接的不同,提供统一的接口。中间件还负责事务的协调处理,起到数据连接管理的作用,多个客户端连接通过中间件可以共用一个数据 库连接。
  • memcached  memcached是一个高性能的分布式内存对象缓存系统,通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度,它是基于一个存储键/值对的hashmap。
  • 并发控制   数据库限流,达到数据库的最大并发数,进入行锁状态。如不进行控制,一旦其中一个连接卡住,会引发雪崩效应,从而影响整个系统
  • 排队系统   锁机制导致排队
  • 并行复制   采用并行复制的技术可以解决主备库复制延迟问题
  • 数据库拆分  分为水平拆分和垂直拆分,垂直拆分即按列拆分,把数据按应用分离,降低单个事务的数据处理量;水平拆分即按行拆分,降低节点的并发量
  • 读写分离   有些系统读操作频繁,而有些系统写操作频繁,读写分离能有效提高访问速度



二、12306网站与淘宝的不同

12306的特殊性就在于其复杂性:

  • 频繁的混合读写操作   
  • 座位实时复用   订单之间关联度较大,每卖出一张票,都需要调整整个车次所有可能区间的余票数量

调查之前,我也很简单的认为,只要不停地增加节点数量,必然 能解决抢票尖峰时刻的问题,其实不然,访问速度主要受限于两个方面,一个是CPU处理速度,另一个是磁盘I/O。而简单的增加机器并不能解决这两个瓶颈, 相反,节点越多,数据同步的代价越大。为了更好的解释其特殊性,需要引入一些基本概念。

  • 事务

淘宝、12306等电子商务系统都属于面向交易的处理系统,即OLTP。数据库中事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit),具有四个属性:原子性、一致性、隔离性、持久性,简称为ACID。

  •         原子性(Atomicity)  一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。
  •         致性(Consistency)  事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
  •         隔离性(Isolation)  一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
  •         持久性(Durability)  持续性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。

并行处理的核心就是隔离性,即不同的事务不能互相影响,一个用户订票行为不能影响其他用户,否则会出现看到票却买不到票的现象。隔离要处理三个问题:脏读、不可重复读和幻读保证隔离性就要对数据加锁,而锁会导致排队,排队必然会产生时延,面对千万级别的并发,问题就产生了。所有关键的问题还是要提高单个事务的处理速度,即CPU,以及减小磁盘I/O的时间。12306从12年就开始进行技术改革,核心采用了Vmware Gemfire 内存数据库技术,即把多个X86服务器虚拟成一个具有超大内存和处理速度的机器,把数据全部放在内存中计算,由内存与磁盘的I/O速度可以看出这种技术必然能大幅度提高性能。

 

分享到:
评论

相关推荐

    高并发高负载大型网站系统架构

    【高并发高负载大型网站系统架构】是指设计和构建能够处理大规模用户访问、高并发请求的网站系统。这种系统架构必须具备高安全性、高稳定性、高并发处理能力和高负载承受能力,以应对如淘宝等大型电商平台所面临的...

    大型高并发高负载网站的系统架构

    "大型高并发高负载网站的系统架构" 大型高并发高负载网站的系统架构是一个复杂的技术问题,需要从多方面进行考虑和解决。本文将从高性能服务器、数据库、编程语言、Web服务器等方面进行探讨,并提供一些实际的解决...

    大型网站分布式架构高并发高可用可扩展技术

    在构建大型网站的过程中,面临的核心挑战之一是如何处理高并发访问,保证系统高可用,并具备良好的可扩展性。本文将深入探讨分布式架构在此方面所扮演的关键角色,以及相关的技术实践。 一、分布式架构基础 分布式...

    java抽奖系统后台 springboot+mybatis redis队列处理高并发.rar

    在构建一个基于Java的抽奖系统后台时,采用SpringBoot、MyBatis以及Redis队列来处理高并发场景是一项常见的技术选型。以下将详细介绍这些关键组件及其在抽奖系统中的作用。 1. **SpringBoot** SpringBoot是Spring...

    大型网站应用之海量数据和高并发解决方案总结.docx

    ### 大型网站应用之海量数据和高并发解决方案 #### 一、网站应用背景 随着互联网的迅猛发展,用户数量激增,对于网站而言,如何高效处理海量数据及应对高并发访问成为了关键技术挑战之一。在初期阶段,一个简单的...

    大型网站系统构架-高并发高负载

    ### 大型网站系统构架-高并发高负载 随着互联网技术的发展,越来越多的企业和组织开始构建自己的在线平台,特别是大型网站,如门户站点等。这些网站通常面临着大量的用户访问和高并发请求的压力。为了应对这些问题...

    大型高并发的网站解决方案

    在构建大型高并发的网站时,...以上知识点都是大型高并发网站解决方案中不可或缺的部分。在实际项目中,需要根据业务需求、现有基础设施和技术团队能力,综合考虑并灵活应用这些策略,以构建稳定、高效的网站系统。

    大型网站技术架构:核心原理与案例分析 亿级流量网站架构核心技术 跟开涛学搭建高可用高并发系统

    这两本书——《大型网站技术架构:核心原理与案例分析》和《亿级流量网站架构核心技术 跟开涛学搭建高可用高并发系统》提供了宝贵的指导,帮助我们构建稳定、高效且可扩展的系统。 首先,我们要讨论的是高并发处理...

    大型高并发高负载网站的系统架构解决之道

    ### 大型高并发高负载网站的系统架构解决之道 #### 概述 在互联网的高速发展下,大型网站面临着前所未有的挑战,特别是高并发和高负载情况下的稳定性与响应速度。传统的静态网页模式已无法满足现代网站的需求,...

    java抽奖系统后台 springboot+mybatis redis队列处理高并发.zip

    在本项目中,"java抽奖系统后台 springboot+mybatis redis队列处理高并发.zip",我们可以探索几个关键的IT技术及其在构建高效抽奖系统中的应用。以下是对这些技术的详细说明: 1. **SpringBoot**: SpringBoot是...

    大型网站技术架构:核心原理与案例分析 清晰 带目录

    分布式计算是大型网站处理高并发和大数据量的关键。Hadoop和Spark等框架提供了分布式存储和计算能力,它们能够将任务分解到多台机器上并行处理,大幅提高处理速度。此外,MapReduce模型被广泛应用于批量数据处理,而...

    Java系统的高并发解决方法详解

    但是除了这几个方面,还没法根本解决大型网站面临的高负载和高并发问题。 上面提供的几个解决思路在一定程度上也意味着更大的投入,并且这样的解决思路具备瓶颈,没有很好的扩展性,下面我从低成本、高性能和高扩张...

    高并发高流量网站构架

    综上所述,构建高并发高流量网站架构涉及多层面的技术整合与优化,包括负载均衡、网络优化、缓存策略、数据库管理、应用设计以及容错机制等。这种架构的设计必须灵活且可扩展,以适应不断变化的用户需求和流量波动。...

    java高并发处理方法

    ### Java高并发处理方法 #### 一、HTML静态化 HTML静态化是一种高效的网页加载方式,它可以显著提高网站性能并减少服务器负担。对于那些需要频繁更新的网站而言,完全依赖手动实现静态化并不现实,因此引入了内容...

    网站高并发架构

    网站高并发架构是互联网行业中一个至关重要的主题,它涉及到如何设计和优化系统以处理大量同时访问的用户请求。在高并发环境下,系统需要保持稳定、高效,并具备良好的可扩展性。下面将详细介绍高并发架构的关键技术...

    高并发处理

    2. **系统稳定性**:处理高并发请求时,系统需要保持稳定运行,避免因请求过多而导致服务崩溃或响应时间过长等问题。 3. **资源利用率**:通过优化高并发处理机制,可以更有效地利用服务器资源,减少不必要的硬件...

    高并发高流量网站架构

    在处理高并发问题时,一种常见的解决方案是使用【镜像网站】,通过在全球不同地区设置多个相同内容的服务器,用户可以从最近的服务器获取内容,降低延迟,提高响应速度。另一种技术是【CDN内容分发网络】,通过...

    高并发Web网站构建和安全防护

    相较于Apache,Nginx以其轻量级和高效性成为了处理高并发场景下的首选。Nginx通过采用异步非阻塞的方式处理请求,不需要维持大量的线程或进程,这对于处理静态文件尤其有效。此外,Nginx还广泛应用于反向代理、负载...

Global site tag (gtag.js) - Google Analytics