网站架构
深夜程序猿
everything in front of you is the best arrangement
展开
-
MySQL双主一致性架构优化
一、双主保证高可用MySQL数据库集群常使用一主多从,主从同步,读写分离的方式来扩充数据库的读性能,保证读库的高可用,但此时写库仍然是单点。在一个MySQL数据库集群中可以设置两个主库,并设置双向同步,以冗余写库的方式来保证写库的高可用。二、并发引发不一致数据冗余会引发数据的一致性问题,因为数据的同步有一个时间差,并发的写入可能导致数据同步失败,引起数据丢失:如上图所述,假...转载 2019-04-24 10:48:29 · 216 阅读 · 0 评论 -
高并发解决方案:秒杀系统架构分析与实战 (二)
1 秒杀业务分析 正常电子商务流程 (1)查询商品;(2)创建订单;(3)扣减库存;(4)更新订单;(5)付款;(6)卖家发货 秒杀业务的特性 (1)低廉价格;(2)大幅推广;(3)瞬时售空;(4)一般是定时上架;(5)时间短、瞬时并发量高; 2 秒杀技术挑战假设某网站秒杀活动只推出一件商品,预计会吸引1万人参加活动,也就说最大并发请求数是10000,秒杀系统需要面...转载 2019-04-29 15:49:40 · 251 阅读 · 0 评论 -
高并发解决方案:如何设计一个秒杀系统,一致性hash解读(三)
什么是秒杀秒杀场景一般会在电商网站举行一些活动或者节假日在12306网站上抢票时遇到。对于电商网站中一些稀缺或者特价商品,电商网站一般会在约定时间点对其进行限量销售,因为这些商品的特殊性,会吸引大量用户前来抢购,并且会在约定的时间点同时在秒杀页面进行抢购。秒杀系统场景特点秒杀时大量用户会在同一时间同时进行抢购,网站瞬时访问流量激增。 秒杀一般是访问请求数量远远大于库存数量,只有少部分...转载 2019-04-29 15:52:56 · 3351 阅读 · 0 评论 -
大数据和高并发解决方案
一、网站应用背景开发一个网站的应用程序,当用户规模比较小的时候,使用简单的:一台应用服务器+一台数据库服务器+一台文件服务器,这样的话完全可以解决一部分问题,也可以通过堆硬件的方式来提高网站应用的访问性能,当然,也要考虑成本的问题。当问题的规模在经济条件下通过堆硬件的方式解决不了的时候,我们应该通过其他的思路去解决问题,互联网发展至今,已经提供了很多成熟的解决方案,但并不是都具有适用性,你...转载 2019-04-29 15:59:24 · 6606 阅读 · 0 评论 -
分布式架构:并发重复请求和幂等场景技术实现总结
概念重复请求是指一个请求因为某些原因被多次提交,场景简述如下:1)用户快速多次点击按钮2)Nginx失败重试机制3)服务框架失败重试机制4)MQ消息重复消费5)第三方支付支付成功后,因为异常原因导致的多次异步回调;幂等性是指同样的请求参数,多次请求返回的结果相同。一般是因为重复请求导致的重复操作等,但重复请求不只包含并发时的重复请求还包括并并发情况下的业务重试。基本原理实现幂...转载 2019-04-25 10:13:33 · 301 阅读 · 0 评论 -
大型网站架构系列:分布式消息队列
本次分享大纲消息队列概述 消息队列应用场景 消息中间件示例 JMS消息服务 常用消息队列 参考(推荐)资料一、消息队列概述消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。目前在生产环境,使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kaf...转载 2019-04-25 10:17:53 · 136 阅读 · 0 评论 -
大型网站架构系列:电商网站架构案例
从电商网站的需求,到单机架构,逐步演变为常用的,可供参考的分布式架构的原型。除具备功能需求外,还具备一定的高性能,高可用,可伸缩,可扩展等非功能质量需求(架构目标)。根据实际需要,进行改造,扩展,支持千万PV,是没问题的。本次分享大纲电商案例的原因 电商网站需求 网站初级架构 系统容量估算 网站架构分析 网站架构优化 架构总结 电商网站案例,一共有三篇本篇主要说明网站...转载 2019-04-25 10:22:15 · 516 阅读 · 0 评论 -
大型分布式网站架构技术总结
本文是学习大型分布式网站架构的技术总结。对架构一个高性能,高可用,可伸缩,可扩展的分布式网站进行了概要性描述,并给出一个架构参考。一部分为读书笔记,一部分是个人经验总结。对大型分布式网站架构有很好的参考价值。 本次分享大纲如下大型网站的特点 大型网站架构目标 大型网站架构模式 高性能架构 高可用架构 可伸缩架构 可扩展架构 安全架构 敏捷架构 大型架构举例一、大型...转载 2019-04-25 10:23:50 · 167 阅读 · 0 评论 -
分布式之消息队列要点
本文主要围绕如下几点进行阐述:为什么使用消息队列? 使用消息队列有什么缺点? 消息队列如何选型? 如何保证消息队列是高可用的? 如何保证消息不被重复消费? 如何保证消费的可靠性传输? 如何保证消息的顺序性?下面围绕以上七点进行阐述。需要说明一下,本文不是《消息队列从入门到精通》这种教程,因此只是提供一个复习思路,而不是去教你们怎么调用消息队列的API。建议对消息队列不了解的人,去...转载 2019-04-25 11:05:22 · 197 阅读 · 0 评论 -
一文读懂一个URL请求的过程是怎样的
前言当我们在浏览器中输入一个URL访问地址,然后浏览器返回给我们一个响应页面,这内部过程到底是怎样的呢?下面我将从以下几个方面阐述一个 WEB请求过程到底是怎样:浏览器缓存 DNS域名解析 TCP连接 HTTP请求与响应浏览器的缓存机制这里将浏览器机制放在第一步是考虑如果浏览器中有了缓存数据,浏览器再次向目标URL发送请求时,在数据不过期的情况下,会直接使用浏览器缓存的数据,...转载 2019-05-21 11:09:14 · 682 阅读 · 0 评论 -
浏览器发送http请求过程分析
请求过程整体流程:1.域名解析-->2.发起TCP的3次握手-->3.建立TCP连接后发起http请求-->4.服务器响应http请求,浏览器得到html代码-->5.浏览器解析html代码,并请求html代码中的资源(如js、css、图片等)-->6.浏览器对页面进行渲染呈现给用户.下面以Chrome浏览器访问www...转载 2019-05-21 11:14:52 · 6721 阅读 · 0 评论 -
高并发解决方案:方案汇总,集群概述,消息队列(一)
1、高并发解决方案汇总一、对于被频繁调用,更新频率较低的页面,可以采用HTML静态化技术二、图片服务器分离三、数据库集群和库表散列 mysql主从。m-m-s-s-s...(2个主,多个从。多个从使用负载均衡。主写入数据,从读取数据)四、缓存。众多的缓存框架五、负载均衡。nginx,lvs,F5六、搜索用单独的服务器,搜索框架七、使用MQ服务器2.集群...转载 2019-04-29 15:47:52 · 1138 阅读 · 0 评论 -
大型网站架构系列:缓存在分布式系统中的应用(三)
本文是《缓存在分布式系统中的应用》第三篇文章。上次主要给大家分享了,缓存在分布式系统中的应用,主要从不同的场景,介绍了CDN,反向代理,分布式缓存,本地缓存的常规架构和基本原理。因为时间关于,原计划分享《缓存常见问题》的内容,没有讲。本次主要针对缓存的常见个问题,做一个介绍。主要有以下议题:一、分享大纲分享大纲 数据一致性 缓存高可用 缓存雪崩 缓存穿透 参考资料 分享...转载 2019-04-24 11:07:26 · 170 阅读 · 0 评论 -
究竟啥才是互联网架构“高可用”
一、什么是高可用高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。假设系统一直能够提供服务,我们说系统的可用性是100%。如果系统每运行100个时间单位,会有1个时间单位无法提供服务,我们说系统的可用性是99%。很多公司的高可用目标是4个9,也就是99.99%,这就意味着,系统的年停机时间为8....转载 2019-04-24 10:46:46 · 447 阅读 · 0 评论 -
一分钟了解负载均衡的一切
负载均衡(Load Balance)是分布式系统架构设计中必须考虑的因素之一,它通常是指,将请求/数据【均匀】分摊到多个操作单元上执行,负载均衡的关键在于【均匀】。常见的负载均衡方案常见互联网分布式架构如上,分为客户端层、反向代理nginx层、站点层、服务层、数据层。可以看到,每一个下游都有多个上游调用,只需要做到,每一个上游都均匀访问每一个下游,就能实现“将请求/数据【均匀】分摊到多...转载 2019-04-24 10:45:30 · 127 阅读 · 0 评论 -
LVS原理介绍
LVS是什么?LVS,全称Linux Virtual Server,是国人章文嵩发起的一个开源项目。在社区具有很大的热度,是一个基于四层、具有强大性能的反向代理服务器。早期使用lvs需要修改内核才能使用,但是由于性能优异,现在已经被收入内核。LVS通过工作于内核的ipvs模块来实现功能,其主要工作于netfilter 的INPUT链上。而用户需要对ipvs进行操作配置则需要使用ip...转载 2019-04-24 10:34:58 · 404 阅读 · 0 评论 -
关于负载均衡的:总结与思考
目录一分钟了解负载均衡的一切 算法衡量 负载均衡算法 轮询算法(round-robin) 加权轮询算法(weight round-robin) 随机算法(random) 加权随机算法(random) 哈希法(hash) 一致性哈希 最少连接算法(least connection) 一点思考 有状态的请求 关于load balancer 其他...转载 2019-04-23 11:13:11 · 219 阅读 · 0 评论 -
什么是负载均衡
负载均衡是高可用网络基础架构的关键组件,通常用于将工作负载分布到多个服务器来提高网站、应用、数据库或其他服务的性能和可靠性。一个没有负载均衡的 web 架构类似下面这样:在这里用户是直连到 web 服务器,如果这个服务器宕机了,那么用户自然也就没办法访问了。另外,如果同时有很多用户试图访问服务器,超过了其能处理的极限,就会出现加载速度缓慢或根本无法连接的情况。而通过在后端引入一个负...转载 2019-04-23 11:08:16 · 184 阅读 · 0 评论 -
好的架构不是设计出来的,而是演进出来的
对 很多创业公司而言,随着业务的增长,网站的流量也会经历不同的阶段。从十万流量到一百万流量,再从一百万流量跨越到一千万甚至上亿的流量,网站的架构需要 经历哪些变化?我们一起听听58 同城的技术委员会执行主席沈剑在 OneAPM 技术公开课上的回答(以下演讲整理):本场演讲我主要阐述一下,58同城从小流量、中等规模流量、大流量,到更大的流量过程中,架构是怎么演进的?遇到了哪些问题?以及如何解...转载 2019-04-24 10:55:46 · 301 阅读 · 0 评论 -
负载均衡详解(1)
面对大量用户访问、高并发请求,海量数据,可以使用高性能的服务器、大型数据库,存储设备,高性能Web服务器,采用高效率的编程语言比如(Go,Scala)等,当单机容量达到极限时,我们需要考虑业务拆分和分布式部署,来解决大型网站访问量大,并发量高,海量数据的问题。从单机网站到分布式网站,很重要的区别是业务拆分和分布式部署,将应用拆分后,部署到不同的机器上,实现大规模分布式系统。分布式和业务拆分解决...转载 2019-04-24 10:59:23 · 193 阅读 · 0 评论 -
负载均衡详解(2)
本次分享大纲软件负载均衡概述 Ngnix负载均衡 Lvs负载均衡 Haproxy负载均衡 本次分享总结一、软件负载均衡概述硬件负载均衡性能优越,功能全面,但是价格昂贵,一般适合初期或者土豪级公司长期使用。因此软件负载均衡在互联网领域大量使用。常用的软件负载均衡软件有Nginx,Lvs,HaProxy等。本文参考大量文档,部分为直接拷贝,参考出处见负载均衡详解(4)。二、Ngn...转载 2019-04-24 11:00:08 · 397 阅读 · 0 评论 -
大型网站架构系列:缓存在分布式系统中的应用(一)
缓存是分布式系统中的重要组件,主要解决高并发,大数据场景下,热点数据访问的性能问题。提供高性能的数据快速访问。本文是缓存在分布式应用第一篇文章,介绍缓存的原理,缓存的分类,缓存的设计,CDN缓存(原理,架构参考和技术实践),反向代理缓存(原理,Squid架构实践和常用代理缓存之间的比较)。本文主要是自己的学习总结和网络文章摘录,供学习之用。本次分享大纲缓存概述 CDN缓存 反向代理...转载 2019-04-24 11:04:00 · 124 阅读 · 0 评论 -
大型网站架构系列:缓存在分布式系统中的应用(二)
缓存是分布式系统中的重要组件,主要解决高并发,大数据场景下,热点数据访问的性能问题。提供高性能的数据快速访问。本文是缓存在分布式应用第二篇文章,介绍分布式缓存,Memcache,Redis,本地缓存(硬盘缓存,内存缓存)以及缓存在分布式系统中的架构示例。本文主要是自己的学习总结和网络文章摘录,供学习之用。本次分享大纲缓存概述 CDN缓存 反向代理缓存 分布式缓存 本地缓存 缓...转载 2019-04-24 11:06:13 · 222 阅读 · 0 评论 -
【高并发简单解决方案】redis队列缓存 + mysql 批量入库 + php离线整合
需求背景:有个调用统计日志存储和统计需求,要求存储到mysql中;存储数据高峰能达到日均千万,瓶颈在于直接入库并发太高,可能会把mysql干垮。问题分析思考:应用网站架构的衍化过程中,应用最新的框架和工具技术固然是最优选择;但是,如果能在现有的框架的基础上提出简单可依赖的解决方案,未尝不是一种提升自我的尝试。解决: 问题一:要求日志最好入库;但是,直接入库mysql确实扛不住...转载 2019-05-13 09:40:27 · 454 阅读 · 0 评论