高并发处理系统的理解---数据一致性

服务器配置:

集群的环境,每个主机选择apahe 还是nginx,nignx的并发性好。nginx和apche区别 以及服务器的配置,例如缓存大小等

根据实际情况,可能对于图像比较多的情况,单独配置nginx服务器,作为图像服务器。在实习中使用的是七牛家的云存储单独作为图片存储,将有关车辆的上传图片全部放在上面。

数据库设计以及优化

(1)表的设计:

存储引擎:innodb还是 myisam? innodb支持事务外键,可以在崩溃时恢复(事务中redo日志实现),myisam不支持;存放数据的方式不同:myisam将表的结构frm 数据myd索引myi存在数据库目标中;innodb只在数据库目标文件中存在表的结构;索引采用B+树,myisam索引叶结点保存的是指针,指向数据,innodb存的就是数据;myisam占用空间小,在读的业务比较多的情况下采用myisam比较好。

字段的设置: 尽量使用短的字段,提高效率,建立索引也能减少资源浪费; 整型类型,比字符类型比较快;varchar 和 char不定长(节约空间)和定长(查询快)选用;索引字段:该字段进行不同的比较多,字段值不易过长。

合理选择数据的冗余:可以根据实际情况,不满足三范式:设置冗余字段,可以减少客户的处理,满足三范式,表之间的关系比较清晰,但是因为有外键什么的,多表关联可能性能降低,加大了用户的编程难度。

索引优化

(2)分库分表

针对大表,可以根据实际情况垂直分表或者水平分表。

垂直分表:对于大表中的某些字段经常使用,可以分表;

水平分表:例如月份,将不同的月份的数据存在不同的表中。

(3)MySQL集群的环境

读写分离:主要针对读操作比较多的情况下。

目的:给大型网站缓解查询压力

原理:服务器运行amobe服务,可以判断sql是写还是读操作。收到sql语句是写,服务器将写送到master mysql处理,利用mysql proxy机制然后同步到slave mysql;

当服务器是select时,服务器会根据负载均衡挑选出一个slave mysql,将select语句送到并处理。

缓存:

可以将一些不动的页面:页面静态化/部分页面静态化;

或者将一些数据存在memcache或者Redis中,不用去查表

数据一致性处理

当多个进程同时操作同一个数据,会产生资源争抢,数据一致性的问题。

高并发情况下,涉及到写操作时,不可能直接操作数据库,大并发的连接会导致mysql请求会阻塞,比如大量的insert update 请求到,会直接导致无数的行锁和表锁,甚至最后堆积很多,从来触发too many connections 错误。

web服务器 nginx和apache连接的进程有限,cpu上下文进程切换也会增加额外的开销,所以响应一定快。

这时可以采用

高并发下的数据安全,防超发,以抢票系统为例:

(1)消息队列:

将票数资源存在redis中,将请求存入消息队列(redis下的list阻塞的,可以实现消息队列,还可以实现优先消息队列点击打开链接)中,依次处理。缺点 :这样会处理比较慢,等待时间比较长。

:对于读操作是否也进入队列,这个问题根据具体的场景,像12306应该是不在队列中或者是优先排在最前面的,因为只是读,要求块。

(2)加锁

常见的锁:        排它锁;乐观锁;悲观锁;

排他锁:在进行写时,禁止一切的读和写;

乐观锁:认为在写的时候,别人不在写,维护一个version号,等处理后对照version好,一致则对,否则回滚,操作不成功,

悲观锁:认为在写的时候,别人也在写。采用数据库提供的锁机制:在写操作的时(insert updata 等)myisam默认是锁表,innodb根据是否是主键,主键则行锁,否则表锁。读操作,innodb采用mvcc版本控制

可以采用乐观锁+回滚:

采用悲观锁:

时间: 2024-10-08 13:31:19

高并发处理系统的理解---数据一致性的相关文章

Linux统系统开发11 Socket API编程2 多进程 多线程 高并发处理

[本文谢绝转载原文来自http://990487026.blog.51cto.com] <纲要> Linux统系统开发11 Socket API编程2 多进程 多线程 高并发处理 UDP服务器 客户端最小模型,处理字符转大写 TCP 多进程并发服务器模型,为每个客户端开启一个进程: TCP 多线程服务器模型,使用wrap函数封装 作业: ---------------------------------------------------- UDP服务器 客户端最小模型,处理字符转大写 [em

大数据高并发系统架构实战方案

大数据高并发系统架构实战方案(LVS负载均衡.Nginx.共享存储.海量数据.队列缓存 ) 随着互联网的发展,高并发.大数据量的网站要求越来越高.而这些高要求都是基础的技术和细节组合而成的.本课程就从实际案例出发给大家原景重现高并发架构常用技术点及详细演练.通过该课程的学习,普通的技术人员就可以快速搭建起千万级的高并发大数据网站平台,课程涉及内容包括:LVS实现负载均衡.Nginx高级配置实战.共享存储实现动态内容静态化加速实战.缓存平台安装配置使用.mysql主从复制安装配置实战等.课程二十.

淘宝双11促销背后高并发处理之淘宝网采用什么技术架构来实现网站高负载

转自:http://china-chill.blog.163.com/blog/static/2049210522012101782432304/ 时间过得很快,来淘宝已经两个月了,在这两个月的时间里,自己也感受颇深.下面就结合淘宝目前的一些底层技术框架以及自己的一些感触来说说如何构建一个可 伸缩,高性能,高可用性的分布式互联网应用. 一 应用无状态(淘宝session框架) 俗 话说,一个系 统的伸缩性的好坏取决于应用的状态如何管理.为什么这么说呢?咱们试想一下,假如我们在session中保存

高性能高并发系统的稳定性保障

小码哥 于 1 月前 发表在 七嘴八舌 作者:肖飞,于2011年8月份加入京东,曾亲身参与到京东的应用性能监控.统一日志.流式计算.内存缓存.四层防攻击等一些基础技术平台的研发和搭建工作,经历了京东的技术系统从简单粗放向复杂精细化的演变过程.目前主要工作为多中心交易项目中的数据复制中间件JingoBUS的研发.平时也会开发一些公共的平台和工具,关注分布式系统的实现.程序设计.性能优化.开发语言等. 本文是2015年肖飞在内部分享的<高性能高并发系统的稳定性保障>PPT内容. 性能.并发.稳定性

java web开发 高并发处理

java web开发 高并发处理 java 高并发 java处理高并发高负载类网站中数据库的设计方法(java教程,java处理大量数据,java高负载数据) 一:高并发高负载类网站关注点之数据库 没错,首先是数据库,这是大多数应用所面临的首个SPOF.尤其是Web2.0的应用,数据库的响应是首先要解决的. 一般来说MySQL是最常用的,可能最初是一个mysql主机,当数据增加到100万以上,那么,MySQL的效能急剧下降.常用的优化措施是M-S(主-从)方式进行同步复制,将查询和操作和分别在不

在一个高并发系统中 如果突然出现一个应用或者说一个服务突然变得很慢,应该怎么排查?

声明:该总结为网友朋友总结,本人是归纳成文,方便各网友学习交流. 这个是考线上排查问题能力,没有标准答案,作为开发,假设这种情景出现你怎么诊断问题? 首先:想知道,在实际情况下,怎么知道[一个应用或者说一个服务突然变得很慢]?调用访问的时候会发现的,对于业务流程比较熟悉很重要,先能够初步圈出,可能出现问题的地方,服务监控是必须的,做业务必须要知道自己服务的状态. 1.首先就是想看日志,后来想想看日志确实不太可行,并发量太大的情况下,查日志会很慢,(看日志,pstack strace gdb).

高可用系统在点评的实践与经验--讲座思考

SDCC 2016架构峰会纪要(三) 关键词:深度.干货.大牛.火爆.一线.图书 题目 主讲人 主讲人个人简介 支付宝红包稳定性实践与思考 王 俊 蚂蚁金服支付清算平台架构师 宅米网技术架构变迁与实践 李智慧 宅米CTO 携程下一代无线App架构设计 陈浩然 携程旅行网无线开发总监 新型架构实践与应用 孙子荀 腾讯手Q公众号后台负责人 从概率和用户感知出发实现高可用架构 史海峰 当当网架构部总监 高可用系统在点评的实践与经验 陈一方 大众点评交易平台技术团队负责人 微服务架构设计与实践 黄 勇

被神化的海量数据处理和高并发处理

http://blog.csdn.net/hawksoft/article/details/7192207 实任何简单的问题,只要规模大了都会成为一个问题,就如中国人口多,很多小问题都会变成大问题一样.但处理这种海量数据的方法无非就是分治和”人海”战术.使用人海战术的前提是问题的划分能够支持这种人海战术,其手段无非是切割(纵向,横向)和负载均衡.纵向分隔主要是按业务(功能)来分,也就是所谓面向服务架构,横向分隔方式比较多,主要依赖于所处理的对象属性,比如时间属性或者特定业务数据属性划分(比如铁路

谈谈高并发系统的限流

开涛大神在博客中说过:在开发高并发系统时有三把利器用来保护系统:缓存.降级和限流.本文结合作者的一些经验介绍限流的相关概念.算法和常规的实现方式. 缓存 缓存比较好理解,在大型高并发系统中,如果没有缓存数据库将分分钟被爆,系统也会瞬间瘫痪.使用缓存不单单能够提升系统访问速度.提高并发访问量,也是保护数据库.保护系统的有效方式.大型网站一般主要是"读",缓存的使用很容易被想到.在大型"写"系统中,缓存也常常扮演者非常重要的角色.比如累积一些数据批量写入,内存里面的缓存