高并发高可靠性系统思考1

CPU不是瓶颈,网络才是;

墨菲定律:任何事情都没表面看起来那么简单;会出错的总会出错;

可靠性:

集群:无状态集群;有状态集群,很难处理,尽量剥离出状态部分做集中式部署,其他做无状态部署;

mater/slave,极端情况下快速切换,恢复系统的可用性,软件层面和硬件层面;

数据:raid磁盘阵列,双写(同步,可靠性高,影响效率;异步,可靠性低);

跨机房,跨网络(电信,移动),跨交换机部署;

限流/流量切换:超过系统预估负载能力时,可选择直接将部分请求丢弃,来保证部分用户的适用,一般在硬件或http服务器层面实现。一个系统中,可能不同的部分,其访问量是不同的,对于有极大瞬发访问量的系统,应该将其独立出来,防止瞬发高并发带来的风险扩散到小流量系统上;如通过域名分离秒杀系统的商品页,和普通商品页;

异步:大流量系统调用小流量系统时,可将瞬发的大流量请求异步化,平摊到小流量系统各个时段。关键点,中间件,确保系统做出的保证一定会成功。猜测支付宝与银行系统的交互即是此种方式;

系统化/服务化:将内聚性高的功能独立出来单独服务,专业的人做专业的事;系统间通过高性能web service框架通讯,有在保证功能、性能的情况下,极大提高系统可靠性;

降级:如果系统依赖了第三方服务,需要系统能在第三方服务宕机的情况下正常工作,尽量不做到对第三方系统的强依赖;

高并发:

单机:

应用层面的数据库优化:是否做读写分离,是否做分布式;合理的表设计,尽量避免大数据量表间的关联,可通过合理的数据冗余实现;合理区分冷热数据的存储;合理规划索引,参考sql执行计划,优化sql;纯数据库层面的,应该由相关专业人员完成;

业务层面:优化业务流程,使系统能通过更少的业务流程完成请求;

并发:大部分并发是可以通过合理的规划,避免竞态;无法避免的,尽量通过atomic包同步;

异步化:如果一个请求,需要非常长的业务流程才能完成,可将这一串业务流程分为必需和可延后的两部分,将必需的处理完成后,将可延后流程交给中间件去异步执行,系统依据中间件的可靠性保证语义,预先返回业务流程正常完成;

动静分离&异步:静态内容可通过缓存,动态内容实时调用;异步加载耗时长的内容,加快请求相应速度;

流量前置:本质是通过如缓存业务结果、cdn 等手段,将本来需要n个业务流程完成的请求,由<n个的业务流程完成处理;

缓存:jvm缓存/集中式缓存,jvm缓存无网络开销,但其在集群、和功能等方面较弱。宽泛来说,缓存可看做流量前置的一种手段。关键点:高命中率,缓存失效策略(此处更多考虑系统能否容忍不一致的情况)。缓存策略,和失效策略会极大影响缓存命中率,缓存策略一般遵循局部性原理(2-8原则),根据具体的业务逻辑设计。缓存还可用作容灾手段,缓存数据,在第三方系统异常的情况,作为数据的后备来源;

集群:尽量采用无状态架构,即使必需有状态,也尽量要将状态剥离,做单独的集中式部署。

负载均衡:f5,lvs。考虑使用的算法;lvs尽量采用响应流量由处理请求的服务器直接发送的方式,避免负载均衡成为系统的瓶颈;

分布式:没实际经验,感觉其规划层面和编码层面都比较难;

后续记录在实际系统中应用;

时间: 2024-08-10 15:08:49

高并发高可靠性系统思考1的相关文章

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

发布:vashon 来自:BudiChina.com 更新:2015-05-20 摘要:一个小型的网站,比如个人网站,可以使用最简单的html静态页面就实现了.随着互联网业务的不断丰富,网站相关的技术经过这些年的发展,已经细分到很细的方方面面,尤其对于大型网站来说,所采用的技术更是涉及面非常广,从硬件到软件.编程语言.数据库.WebServer.防火墙等各个领域都有了很高的要求,已经不是原来简单的html静态网站所能比拟的. 前言 鄙人先后在CERNET做过拨号接入,在Yahoo&3721搞过搜

面向海量数据的高并发高可用分层系统架构设计

近期参与一个互联网项目,按照该项目的需求设计了分层的系统架构,主要目的是高并发高可用,能够根据用户访问量和并发情况进行伸缩. 第一个部分是由Web服务器和应用服务器构成的负载均衡区.该区域的主要目标是分散用户的访问量,平衡各服务器的压力,提高各服务器的资源利用率,因为大多数网站都是属于IO密集型,因此可以利用线程池增加并发处理能力,采用多核多内存的资源配置模式.可以采用Apache+Tomcat或Nginx+Jboss来实现,其中消息服务器通过异步处理机制可以提高系统响应速度,增加用户体验. 第

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

大型站点的系统架构须要考虑非常多问题.大型站点有高并发高负载的特点,在面对大量用户訪问.高并发请求方面.主要的解决方式集中在这样几个环节:使用高性能的server.高性能的数据库.高效率的编程语言.还有高性能的Web容器.本文从低成本.高性能和高扩张性的角度来探讨了一些大型站点系统架构须要考虑的问题. AD:WOT2014:用户标签系统与用户数据化运营培训专场 一个小型的站点.比方个人站点,能够使用最简单的html静态页面就实现了.配合一些图片达到美化效果,全部的页面均存放在一个文件夹下,这种站

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

高并发高负载的大型网站系统架构(转) 一个小型的网站,比如个人网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构.性能的要求都很简单,随着互联网业务的不断丰富,网站相关的技术经过这些年的发展,已经细分到很细的方方面面,尤其对于大型网站来说,所采用的技术更是涉及面非常广,从硬件到软件.编程语言.数据库.WebServer.防火墙等各个领域都有了很高的要求,已经不是原来简单的html静态网站所能比拟的. 大型网站,比如门户网站

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

大型网站的系统架构需要考虑很多问题.大型网站有高并发高负载的特点,在面对大量用户访问.高并发请求方面,基本的解决方案集中在这样几个环节:使用高性能的服务器.高性能的数据库.高效率的编程语言.还有高性能的Web容器.本文从低成本.高性能和高扩张性的角度来探讨了一些大型网站系统架构需要考虑的问题. AD:WOT2014:用户标签系统与用户数据化运营培训专场 一个小型的网站,比如个人网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统

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

一个小型的网站,比如个人网站,可以使用最简单的html静态页面就能实现了,配合一些图片达到美化的效果,所有的页面均放在一个目录下,这样的网 站对系统架构.性能的要求都很简单,随着互联网业务的不断丰富,网站相关的技术经过这些年的发展,已经细分到很细的方方面面,尤其对于大型网站来说,所采 用的技术更是涉及面非常广,从硬件到软件.编程语言.数据库.webServer.防火墙等各个领域都有了很高的要求,已经不是原来的简单的html静态 网站的所能比拟的. 大型网站,比如门户网站.在面对大量用户访问.高并

高并发实时弹幕系统 并发数一定是可以进行控制的 每个需要异步处理开启的 Goroutine(Go 协程)都必须预先创建好固定的个数,如果不提前进行控制,那么 Goroutine 就随时存在爆发的可能。

小结: 1.内存优化1.一个消息一定只有一块内存使用 Job 聚合消息,Comet 指针引用. 2.一个用户的内存尽量放到栈上内存创建在对应的用户 Goroutine(Go 程)中. 3.内存由自己控制主要是针对 Comet 模块所做的优化,可以查看模块中各个分配内存的地方,使用内存池. 2.模块优化1.消息分发一定是并行的并且互不干扰要保证到每一个 Comet 的通讯通道必须是相互独立的,保证消息分发必须是完全并列的,并且彼此之间互不干扰. 2.并发数一定是可以进行控制的每个需要异步处理开启的

构建高并发高可用的电商平台架构实践

从各个角度总结了电商平台中的架构实践,由于时间仓促,定了个初稿,待补充完善,欢迎大家一起交流. 转载请声明出处:http://blog.csdn.net/yangbutao/article/details/12242441 作者:杨步涛 关注分布式架构.大数据.搜索.开源技术 QQ:306591368 技术Blog:http://blog.csdn.net/yangbutao 一. 设计理念 1.      空间换时间 1)      多级缓存,静态化 客户端页面缓存(http header中包

构建高并发高可用的电商平台架构实践(上)

构建高并发高可用的电商平台架构实践(上) 一. 设计理念 1.      空间换时间 1)      多级缓存,静态化 客户端页面缓存(http header中包含Expires/Cache of Control,last modified(304,server不返回body,客户端可以继续用cache,减少流量),ETag) 反向代理缓存 应用端的缓存(memcache) 内存数据库 Buffer.cache机制(数据库,中间件等) 2)      索引 哈希.B树.倒排.bitmap 哈希索

构建高并发高可用的电商平台架构实践(下)

构建高并发高可用的电商平台架构实践(下) 6. 数据存储 数据库存储大体分为以下几类,有关系型(事务型)的数据库,以oracle.mysql为代表,有keyvalue数据库,以redis和memcached db为代表,有文档型数据库如mongodb,有列式分布式数据库以HBase,cassandra,dynamo为代表,还有其他的图形数据库.对象数据 库.xml数据库等.每种类型的数据库应用的业务领域是不一样的,下面从内存型.关系型.分布式三个维度针对相关的产品做性能可用性等方面的考量分析.