由《羊了个羊》想到的高并发架构之路

这篇具有很好参考价值的文章主要介绍了由《羊了个羊》想到的高并发架构之路。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

    要说最近一段时间最火的话题是什么,那必定是《羊了个羊》,频频冲上微博热搜第一。因访问量骤增,大量玩家涌入进来,高并发流量导致游戏服务器被接连击穿。《羊了个羊》服务器几天内就出现了多次异常,无法登录游戏。

问题思考

    我想这其中多次崩溃的原因可能很多:可能是高并发流量导致服务器负载打满,引发宕机;可能是数据库查询量较大,出现性能瓶颈;也可能是高并发访问将缓存击穿;还有可能是受到ddos攻击…

    曾经我面试的时候就有面试官问道:“现在让你设计一个业务场景,客户端访问我们的业务服务端,从最初的业务规模很小,到后面业务规模业务很大,你应该如何设计并改进?”

    现在具有一定规模的业务场景必定都采用了高并发的架构。

    本文将以业务刚开始搭建到业务规模壮大为引子,详细讲一讲高并发架构是如何一步一步实现的,也很好的回答了上面的那道面试题。

高并发架构演进

1. 单机架构提供服务

业务初期,用户量很少,百来十个请求,一台服务器就可以部署应用和数据库
使用后端编程语言(python、go、php、java)开发一个应用程序,然后使用一个数据库(mysql、sqlserver)再存储业务数据。应用和数据库运行在同一台机器上面,开始对外提供服务。
由《羊了个羊》想到的高并发架构之路

2. 应用服务和数据库分离

用户开始增多,应用服务和数据库产生资源争抢,一台服务器使用起来够呛,于是将应用服务和数据库进行拆分,一台服务器专门跑应用程序,一台服务器专门跑数据库。
由《羊了个羊》想到的高并发架构之路

3. 增加缓存数据库

随着用户量进一步增多,每次访问都和数据库交互,会十分影响系统的响应速度,所以可以使用缓存技术。针对热点数据,直接从内存中取出来返回,加快响应速度。
由《羊了个羊》想到的高并发架构之路

4. 引入负载均衡

用户量还在进一步增多,单一应用服务器性能不足以支撑业务,系统开始变得卡顿。为了防止宕机导致业务不可用,这时需要增加多台应用服务器,形成集群,使用负载均衡进行负载(软件负载均衡nginx、haproxy),提高并发访问量。
由《羊了个羊》想到的高并发架构之路

5.数据库读写分离

用户数量的增长,数据量激增,数据库的读写压力就增大了。数据库开始出现瓶颈,读写变慢。但对于数据库来说,无法简单的应用集群来解决压力问题,因为数据会不一致,所以需要采用读写分离,写走主库,读走从库(事务中的读也要走主库)。
由《羊了个羊》想到的高并发架构之路

6.数据库拆表分库

业务数据量越来越大时,所有的业务都存储在单一的数据库中,即使单一的数据库已经做了读写分离,但是因为数据量庞大,依然无法满足系统性能的要求,这时就需要拆表分库。同一张表的数据拆分到多个数据库中(水平拆分),把单个数据库中的不同业务拆分到不同的数据库服务器中(垂直拆分)。
由《羊了个羊》想到的高并发架构之路

7. 使用硬件负载均衡

业务越来越火爆,用户量还在激增,最终软件负载均衡也扛不住了。那就采用硬件负载均衡(F5),将流量分发到不同的软件负载均衡上面,提高访问性能。
由《羊了个羊》想到的高并发架构之路

8. DNS轮询负载

当用户还在数几十万几百万的增长时,硬件防火墙也扛不住了。这时咱们再采用DNS轮询的方式,将访问域名解析到多个机房的IP上面,不同地区的用户访问到不同的IP上面。千万级到亿级的并发量都可以通过增加机房来解决。
由《羊了个羊》想到的高并发架构之路

9. 引入高防系统

随着业务的知名度越来越高,可能会受到外部的ddos攻击,导致正常的请求流量无法进入系统,用户访问失败。这时就需要引入高防系统,清洗异常流量。
由《羊了个羊》想到的高并发架构之路

10. 引入WAF应用防火墙

后来,业务系统经常受到SQL注入、XSS跨站、Webshell上传、CC攻击。这时需要引入WAF应用防火墙,有效识别Web业务流量的恶意特征,在对流量清洗和过滤后,将正常、安全的流量返回给服务器,从而保障系统的业务安全和数据安全。
由《羊了个羊》想到的高并发架构之路

上面讲解了高并发架构的演进之路,当然,根据实际业务情况,我们可能还需要引入Nosql数据库,时序数据库,消息队列,CDN等系统,甚至需要进行微服务的拆分,进一步强大健壮我们的业务系统。

参考文档

https://mp.weixin.qq.com/s/BABN6y2mYj2Cd-p0dlb6Ug

微信关注我,获取更多干货!
文章来源地址https://www.toymoban.com/news/detail-415842.html

到了这里,关于由《羊了个羊》想到的高并发架构之路的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小游戏开发之坦克大战(比羊了个羊还好玩系列)

    现在很多公司开始使用游戏化的方式去做产品,让产品呈现给用户时更好玩,以达到增加用户粘性,提升DAU的效果。 同时随着硬件与底层系统的发展,用户的终端对动画的表现能力也越来越强,很多APP以引导用户互动的方式开发业务,所以开发互动类业务将成为前端工程师的

    2024年02月09日
    浏览(50)
  • 实现用java做一个简易版《羊了个羊》小游戏(附源代码)

    该项目是跟着这个b站视频一步一步写出来的,初学java有些地方我看不是很明白,但是讲解很仔细,大家可以看原视频,我没有添加背景音乐和背景图片,做出来的效果也勉勉强强。 代码已经上传到github上了,大家可以去github上直接下载代码,附上链接:点击进入github源码链接

    2024年02月04日
    浏览(92)
  • 效果最接近《羊了个羊》(卡牌堆叠游戏)的开源代码 微信小程序开源了

    效果最接近《羊了个羊》(卡牌堆叠游戏)的开源代码,有数据库和关卡。 我写的程序是指 卡牌堆叠游戏 ,效果与羊了个羊一致。本教程有已有两个版本。 本来是想着Fork多一点的时候再开源的,没有想到一个Fork都没有。 现在是 微信小程序 版本。 我就不在这里吐槽微信小

    2024年02月09日
    浏览(56)
  • 【前端客栈】基于HTML、CSS、JavaScript的羊了个羊静态仿写页面小游戏

    🏜哈喽,大家好,我是小浪。前段时间羊了个羊火遍了大江南北,大家是否都通过第二关了呢?哈哈,没关系,既然通不过,那咋们不如自己来做一个这样的羊了个羊的仿写页面,学会了赶紧拿去在同学面前展示展示;OK,接下来,我们开始仿写这种游戏规则模式,写一个我

    2024年02月04日
    浏览(59)
  • 《羊了个羊》服务器2天崩3次?去中心化云会成为下一代网络基础设施吗?

    中秋送走了玉兔,要说过后哪种动物最火,一定非羊莫属,而且这只羊是用钱买不到、只能通过消消乐才能得到的羊。 近日,一款号称通关率不到0.1%的硬核消除类闯关小游戏《羊了个羊》突然爆红,几度登上微博话题热搜,甚至在9月14日登顶微博热搜榜。 如果你发现微信好

    2024年02月02日
    浏览(39)
  • LabVIEW编程基础之生产者消费者结构 -- Simon小游戏(以羊了个羊为背景)

           LabVIEW在工业控制及仪器测量领域中用的会比较多,那么就经常会涉及到数据采集、分析和处理的问题,为了提高效率,往往会在数据采集的同时就进行数据分析和处理,这时就需要用多线程来处理,多线程的概念如果有不了解的,可以参考这位博主的讲解多线程(

    2024年02月09日
    浏览(44)
  • 大战谷歌!微软Bing引入ChatGPT;羊了个羊高·薪招纳技术人才;Debian彻底移除Python2;GitHub今日热榜 | ShowMeAI资讯日报

    👀 日报合辑 | 🎡 AI应用与工具大全 | 🔔 公众号资料下载 | 🍩 @韩信子 微软计划2023年3月底之前推出 Bing 搜索引擎的新版本, 使用 ChatGPT 为一些搜索查询提供答案,不再仅仅显示链接列表 。微软希望,这项更新将帮助它超越搜索领域的竞争对手 Google。 2019年7月,OpenAI 获得

    2024年02月02日
    浏览(44)
  • 软件架构之前后端分离架构&服务器端高并发演进之路

    首先,当一个项目刚起步的时候,不能预知后续的访问量和并发能达到多少,在初步开发的架构选型中,采用前后端分离的架构。关于前后端分离架构,其优势如下: 前后端分离是一种软件系统架构模式,它将应用程序的前端和后端分离开发和部署。在这种架构中,前端和后

    2024年02月10日
    浏览(57)
  • 基于Flask的高并发部署方案

    在AI部署方案中,Flask是最常用的方案!本文列举几种最常用基于Flask的部署方案。 Flask 是一个轻量级的 Python Web 框架,它非常适合构建小型到中型的应用程序。下面是对 Flask 的详细解释和简单示例: Flask 的特点: 轻量级 :相比于 Django,Flask 更轻量级,更适合小型项目或微

    2024年01月16日
    浏览(70)
  • 项目---基于TCP的高并发聊天系统

    目录 服务端  服务端视角下的流程图 一、数据库管理模块 1.1 数据库表的创建 1.2 .对于数据库的操作 1.2.1首先得连接数据库 1.2.2执行数据库语句  1.2.3 返回数据库中存放的所有用户的信息  1.2.4返回数据库中存放的所有用户的好友信息  二、用户管理模块 2.1、UserInfo类:描述

    2023年04月13日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包