`
快了的男孩
  • 浏览: 2329 次
  • 性别: 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 应用系统架构

    大型高并发网站的性能除了受硬件设施影响外,高性能的软件技术应用和高度优化的 系统架构的作用也格外重要。文章首先讨论外网中在全国范围使用的镜像网站,CDN 内容分 发网络等加速技术,其次着重对本地服务器内网中...

    C#版支持高并发的HTTP服务器源码

    C#版支持高并发的HTTP服务器源码,异步处理并发调用,应用于WINFORM程序中,创建自己的HTTP SERVER的首选办法。

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

    我在CERNET做过拨号接入平台的搭建,而后在Yahoo&3721从事过搜索引擎前端开发,又 在MOP处理过大型社区猫扑大杂烩的架构升级等工作,同时自己接触和开发过不少大中型网站的模块,因此在大型网站应对高负载和并发的...

    第四讲-大型互联网高并发网站业务架构设计实践.docx

    高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求。  高并发相关常用的一些指标有响应时间(Response Time),吞吐量...

    最新JAVA架构师技术内幕!从亿万级业务处理到大型互联网高并发设计课程(16.11G)

    从亿万级业务处理到大型互联网高并发设计课程(16.11G) 〖课程介绍〗: 最前沿JAVA架构师技术内幕!是一次真正意义上的JAVA架构师的提升课程。课程内容不含基础内容,全程都是高能的提升技术,前篇部分的手写mybatis,...

    计算机科学+并发编程+多线程+高性能处理

    该代码适用于各种需要高并发、多线程处理的应用场景,如大型企业级应用、电商平台、金融系统等。通过学习这款代码,您将能够更好地理解和掌握并发编程的原理,提高系统性能,优化资源利用率。 我们的目标是帮助广大...

    高性能高并发服务器架构大全

     说说大型高并发高负载网站的系统架构 28  mixi技术架构 51 mixi.jp:使用开源软件搭建的可扩展SNS网站 51 总概关键点: 51 1,Mysql 切分,采用Innodb运行 52 2,动态Cache 服务器 -- 52 美国Facebok.com...

    大数据学习路线从Linux基础到大型网站高并发处理项目实战

    为了解决大家这个困惑,小编整理了从Linux基础到大型网站高并发处理项目实战的学习路线和知识点,希望大家能够喜欢,文末还有小编整理的视频和电子书籍,也希望大家能够喜欢。 Linux大纲 1Linux的介绍,Linu的安装: ...

    常见的6种以上高并发处理有效措施

    对于大型网站来说,本资源提供的6种办法可能都会被同时使用到,具体实现过程中很多细节还需要大家慢慢熟悉和体会,有时一个很小的squid参数或者apache参数设置,对于系统性能的影响就会很大,希望大家一起讨论,达到...

    最新JAVA架构师技术内幕!从亿万级业务处理到大型互联网高并发设计课程 提升必备

    ├─11.08 开班典礼+分析mybatis框架原理并手写实现 .mp4 ├─11.11 手写mybatis.mp4 ├─11.13 手写mybatis框架+源码阅读-2.mp4 ├─11.13 手写mybatis框架+源码阅读-3.mp4 ├─11.13 手写mybatis框架+源码阅读.mp4...

    大型网站架构系列文档

    对于缓存,在高并发高处理的时候也是个大问题。在整个应用程序下,缓存是全局共享的,然而在我们进行修改的时候就,如果两个或者多个请求同时对缓存有更新的要求的情况下,应用程序会直接的死掉。这个时候,就需要一...

    龙果从无到有构建大型电商微服务架.txt

    第二阶段:进一步完善系统,深入讲解和优化系统,包括:系统性能优化,分布式事务处理,高并发,高可用,缓存,数据库优化,消息队列的数据完整性、一致性,缓存数据的一致性,大事务的性能优化等等

    人工智能代理池构建自己的大型语言模型

    每个语言模型实例都可以独立地接收和处理请求,使得代理池能够支持高并发的请求处理。 3. **负载均衡和流量调度:** 设计一个负载均衡机制,用于将传入的请求均匀地分配给不同的语言模型实例。根据每个模型实例的...

    婚介网站源码 交友网网站源码

    产品经过了二次大型的架构调整,完成了高并发数据处理能力、高频率数据查询承载能力的提升、高访问量页面缓存处理及分流的优化。 目前无论是功能上、数据优化、代码架构、模板引擎、后台人性化管理、扩展性、代码...

    手把手教你构建一个高性能、高可用的大型分布式网站

    大流量,高并发3.海量数据,服务高可用4.安全环境恶劣,易受网络攻击5.功能多,变更快,频繁发布6.从小到大,渐进发展7.以用户为中心8.免费服务,付费体验大型网站的架构目标有如下几个:高性能:提供快速的访问体验...

    大型应用系统设计 系统安全设计 微博平台防御体系介绍 共25页.pdf

    【大纲】 >高并发、高可靠性、高性能 >面临的挑战 >架构防御 >主动监控运维 >故障实时响应处理

    高性能业务架构解决方案(LVS+Keepalived)

    对于大型的,需要进行高并发的网站或者对网络不太严格的场景,可以使用Nginx;对于大型的Web服务器的时候可以使用Haproxy;对性能有严格要求的时候可以使用LVS,就单纯从负载均衡的角度来说,LVS也许会成为主流,更...

    FastDFS分布式文件系统使用手册

    FastDFS是由国人余庆所开发,其项目地址:https://github.com/happyfish100,FastDFS是一个轻量级的开源分布式文件系统,主要解决了大容量的文件存储和高并发访问的问题,文件存取时实现了负载均衡。支持存储服务器...

    高并发、高性能Web架构

    以下是一个典型的高负载web应用示例:上图展示了一个典型的,三层架构的高性能Web应用。这种成熟的架构多年以来已被广泛部署于包括Google、Yahoo、Facebook、Twitter、Wikipedia在内的诸多大型Web应用中。位于三层...

    大型网站架构系列:负载均衡详解

    纵向扩展,是从单机的角度通过增加硬件处理能力,比如CPU处理能力,内存容量,磁盘等方面,实现服务器处理能力的提升,不能满足大型分布式系统(),大流量,高并发,海量数据的问题。因此采用横向扩展的方式,通过...

Global site tag (gtag.js) - Google Analytics