`
liujiekasini0312
  • 浏览: 147746 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

高并发web系统设计

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

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

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

    【高并发Web系统设计与应用】是针对处理大量并发用户请求的Web系统进行深度探讨的主题。在当前互联网环境中,尤其对于提供公共服务如高考分数查询的系统,高并发问题显得尤为重要,因为这类服务往往会在短时间内面临...

    高并发web架构完整1

    《高并发Web架构完整1》是一份关于优化和构建高性能Web站点的综合资源,共分为五个部分。在当今互联网行业中,随着用户数量的急剧增长,Web应用必须具备处理高并发请求的能力,才能确保服务的稳定性和用户体验。本...

    基于docker容器的高并发web系统架构设计与实现.caj

    《基于docker容器的高并发web系统架构设计与实现》随着互联网迅速发展,社交、媒体以及电商等web网站用户数量 越来越大,并发流量也越来越高,这对于传统web系统架构设计提出 新的挑战。本文基于...

    大型高并发web应用系统架构分析与设计

    ### 大型高并发Web应用系统架构分析与设计 #### 引言 随着互联网技术的飞速发展,大型高并发Web应用系统已经成为许多企业和组织的关键基础设施之一。这类系统的稳定性、可扩展性和性能对于保障用户体验至关重要。...

    高并发WEB系统的涉及与优化

    李军在其硕士学位论文中,对高并发Web系统的设计与优化进行了深入研究,提出了自己的见解和解决方案。尽管本文未详细展开具体内容,但依然可以感受到其研究的广度和深度。随着Web技术的不断进步,高并发系统的优化...

    java高并发系统设计

    在Java领域,高并发系统设计是一项至关重要的技能,它涉及到如何构建能够同时处理大量请求的高效应用程序。在本文中,我们将深入探讨Java高并发系统设计的相关知识点,包括基础概念、核心技术以及最佳实践。 1. **...

    高性能高并发WEB服务器架构

    在构建高性能高并发的Web服务器架构时,我们需要关注...以上就是构建高性能高并发Web服务器架构需要考虑的一些核心知识点,这些技术与策略相互配合,共同确保了Web服务在面对大量用户请求时仍能保持稳定、快速的响应。

    C++实现高并发webserver项目

    在本项目"C++实现高并发webserver项目"中,我们将探讨如何使用C++构建一个能够处理高并发请求的Web服务器。这个服务器不仅包含了基础的HTTP服务功能,还涉及到了线程池、数据库连接池以及状态机转换等高级技术,使得...

    基于Nginx和Memcached的高并发WEB服务器设计_戴华

    8. 系统设计与实现:本文中提到的高并发WEB服务器系统在设计上进行了模块化,包含了前端模块和后端缓存数据库系统设计。前端部分设计了事件加载和数据处理流程,而后端缓存数据库系统则涵盖了访问方案设计、分布式...

    网络与多媒体课程设计--高并发响应式内容浏览型web系统设计.docx

    网络与多媒体课程设计--高并发响应式内容浏览型web系统设计 在本文中,我们将讨论网络与多媒体课程设计中的高并发响应式内容浏览型web系统设计。该系统的主要目标是设计一个能够应对高并发访问的响应式内容浏览型...

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

    因此,在设计高并发Web应用时,需要考虑到这些因素,并采取相应的优化措施。 #### 高并发下的保护措施 为了确保Web应用在高并发环境下能够正常运行,需要采取一系列的保护措施。其中包括合理设置服务进程/线程的...

    利用Java开发高性能、高并发Web应用

    在Java开发领域,构建高性能、高并发的Web应用是一项核心任务。这涉及到多个技术层面的综合运用,包括但不限于系统架构设计、线程管理、数据访问优化、缓存策略、负载均衡以及性能监控等。以下是一些关键的知识点,...

    下载高并发web架构pdf文档与视频

    本资源提供了一套关于“下载高并发web架构”的PDF文档和视频,旨在帮助开发者和系统架构师深入理解并掌握如何构建可扩展、高性能的Web系统。 首先,我们来探讨“高并发”这一概念。高并发是指系统在同一时间能处理...

    高并发web架构完整2

    《高并发Web架构完整2》是一份专注于提升Web系统处理能力的综合性学习资料,它涵盖了构建高性能Web站点的多个关键方面。本资料共分为两部分,旨在帮助读者深入理解并掌握在高并发环境下优化Web服务的技术和策略。 ...

    架构设计|亿级高并发系统设计说明书

    【亿级高并发系统设计说明书】是一篇关于构建大规模并发处理系统的指导文档,适用于毕业设计或作为学习模板。本文档的核心在于介绍如何处理高流量带来的挑战,通过一系列策略确保系统的稳定性和用户体验。以下是对...

    高并发 高负载 web应用系统架构-数据库架构策略

    标题和描述概述的是“高并发高负载Web应用系统架构中的数据库架构策略”,这涉及到了数据库在Web应用系统中如何应对大规模用户访问、处理大量数据时的性能和稳定性问题。随着Web应用规模的增长,数据库作为数据存储...

    高并发Web架构实现思路——java版

    ### 高并发Web架构实现思路——Java版 #### 一、引言 随着互联网的快速发展,Web应用系统面临着巨大的挑战,尤其是如何处理高并发、海量数据的情况。传统的Web架构已经无法满足当前的需求,这就需要我们探索新的...

Global site tag (gtag.js) - Google Analytics