• 周杰伦新歌《说好不哭》上线,程序员哭了......【华为云分享】


    前些天,场主的朋友圈被一首歌刷屏了。

    数据有多牛逼?除了揽获各大新闻头条,新歌发售3小时,数字专辑就在QQ音乐卖了360万张。以单价3元计算,一首《说好不哭》已狂揽千万,无人匹敌。

    结果因为访问量太大,不少网友反映“QQ音乐崩了。。。”

    在大家眼里,好像只有微博服务器是“不堪一击”的。那天晚上,QQ音乐持续崩溃,杰伦以一己之力成为了干翻QQ音乐服务器的男人。

    在这首新歌里,大家还意外看到“周五合体”。还原了经典场景,也掀起了一波关于青春的回忆杀。当回忆和回忆相撞,啪,泪花四溅。

    歌迷有没有被感动哭场主不知道,但是QQ音乐的程序员估计是要哭了。不奋战个一天一夜,怎么对得起嗷嗷待哺的歌迷朋友们。

    诸如双十一淘宝瘫痪,明星恋情导致微博宕机事件,说到底还是“高并发”的问题。

    高并发带来的后果

    • 服务端:

    导致站点服务器/DB服务器资源被占满崩溃,数据的存储和更新结果和理想的设计是不一样的,比如:出现重复的数据记录,多次添加了用户积分等。

    • 用户角度:

    尼玛,这么卡,老子来参加活动的,刷新了还是这样,垃圾网站,再也不来了!

    • 程序员的经历: 在做公司产品网站的过程中,经常会有多样需求,如果没有考虑到高并发下的数据处理,就会出现各种超出正常逻辑的现象,因为这些都是面向大量用户的,而不是像做ERP管理系统只是面向员工。

    回归技术本身,面对如此大的高并发流量和屡次崩溃的系统,程序员们如何抵挡?

    提高系统并发能力方式

    在这个“云”的时代,提高分布式系统并发能力的方式,方法论上主要有两种:垂直扩展(Scale Up)与水平扩展(Scale Out)。

    1、垂直扩展提升单机处理能力。垂直扩展的方式又有两种:

    • 增强单机硬件性能,例如增加 CPU 核数如 32 核,升级更好的网卡如万兆,升级更好的硬盘如 SSD,扩充硬盘容量如 2T,扩充系统内存如 128G;

    • 提升单机架构性能,例如使用 Cache 来减少 I/O 次数,使用异步来增加单服务吞吐量,使用无锁数据结构来减少响应时间。

    2、水平扩展

    只要增加服务器数量,就能线性扩充系统性能。虚拟化技术的出现,让水平扩展变得轻松且简单。现在的云主机几乎是虚拟主机,而不是物理主机。这样的话,线性扩充也就是分分钟的事,前提是要有足够的物理主机支撑。

    高并发的三个经典问题

    1、单台服务器最大并发

    单台服务器最大并发问题,一般是指一台服务器能够支持多少 TCP 并发连接。一种理论说法是受到端口号范围限制。操作系统上端口号 1024 以下是系统保留的,从 1024-65535 是用户使用的。由于每个 TCP 连接都要占一个端口号,所以我们最多可以有 60000 多个并发连接。但实际上单机并发连接数肯定要受硬件资源(内存、网卡)、网络资源(带宽)的限制。特别是网卡处理数据的能力,它是最大并发的瓶颈。

    2、C10K 并发连接问题

    C10K 并发连接问题是指单机 1 万个并发连接问题。如何突破单机性能局限,是高性能网络编程所必须要直面的问题。这些局限和问题最早被 Dan Kegel 进行了归纳和总结,并首次成系统地分析和提出解决方案,后来这种普遍的网络现象和技术局限都被大家称为 C10K 问题。C10K问题本质上是操作系统的问题。对于 Web1.0/2.0 时代的操作系统而言, 传统的同步阻塞 I/O 模型都是一样的,处理的方式都是 requests per second,并发 10K 和 100K 的区别关键在于 CPU。创建的进程线程多了,数据拷贝频繁(缓存 I/O、内核将数据拷贝到用户进程空间、阻塞), 进程/线程上下文切换消耗大,导致操作系统崩溃,这就是C10K 问题的本质。

    3、C10M 并发连接问题

    C10M 并发连接问题指的是单机服务器实现 C10M(即单机千万并发连接)。回顾过去的 10 年里,我们面临高性能网络编程领域著名的 C10K 问题,最终也成功提出解决方案。下一个 10 年,是时候考虑 C10M 并发问题了。

    今日重点结束

    在很多程序员眼中,掌握海量高并发技能,就能走上人生巅峰。

    anyway,学得会就学。场主倒觉得与其痴迷某些技术的尖端,不如解决某些行业的业务落地

    本文已经获得授权转载

    作者:场主

    来源:养码场(ID:yangmachang0)

     

    往期文章精选

    如果让你手写个栈和队列,你还会写吗?

    挑战10个最难的Java面试题(附答案)【上】

    javascript基础修炼(13)——记一道有趣的JS脑洞练习题

    【我的物联网成长记3】如何开发物联网应用?

    【HC资料合集】2019华为全联接大会主题资料一站式汇总,免费下载!

     对你没有看错!不到 10 行代码完成抖音热门视频的爬取!

    Python面试的一些心得,与Python练习题分享

  • 相关阅读:
    jQuery-选择器
    Html-CSS-细节处理
    JS-练习题
    将博客搬至CSDN
    Linux学习(推荐学习资源)——保持更新
    借助Git实现本地与GitHub远程双向传输(同步GitHub仓库)以及一些使用错误解决
    Linux学习使用Vim
    linux学习之Ubuntu
    在docker中创建使用MySQL,并实现远程连接navicat
    Swing系列之控件一
  • 原文地址:https://www.cnblogs.com/huaweicloud/p/11861168.html
Copyright © 2020-2023  润新知