程序猿的三高:高并发、高性能、高可用

程序猿的三高:高并发、高性能、高可用

目录

 

一、高并发

        简介

二、高性能

        提高性能的注意事项

三、高可用


一、高并发

简介

高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求。 高并发相关常用的一些指标有响应时间(Response Time),吞吐量(Throughput),每秒查询率QPS(Query Per Second),并发用户数等。

  • 响应时间:系统对请求做出响应的时间。例如系统处理一个HTTP请求需要200ms,这个200ms就是系统的响应时间。
  • 吞吐量:单位时间内处理的请求数量。
  • QPS:每秒响应请求数。在互联网领域,这个指标和吞吐量区分的没有这么明显。
  • 并发用户数:同时承载正常使用系统功能的用户数量。例如一个即时通讯系统,同时在线量一定程度上代表了系统的并发用户数。

如何提高并发能力

  • 垂直扩展(Scale Up)
  1. 增强单机硬件性能(优先):例如:增加CPU核数如32核,升级更好的网卡如万兆,升级更好的硬盘如SSD,扩充硬盘容量如2T,扩充系统内存如128G。
  2. 提升单机架构性能:例如:使用Cache来减少IO次数,使用异步来增加单服务吞吐量,使用无锁数据结构来减少响应时间。
  3. 总结:管是提升单机硬件性能,还是提升单机架构性能,都有一个致命的不足:单机性能总是有极限的。所以互联网分布式架构设计高并发终极解决方案还是水平扩展。
  • 水平扩展(Scale Out)
  1. 只要增加服务器数量,就能线性扩充系统性能。水平扩展对系统架构设计是有要求的,难点在于:如何在架构各层进行可水平扩展的设计。

二、高性能

简介

  1. 简单的说,高性能(High Performance)就是指程序处理速度快,所占内存少,cpu占用率低。
  2. 高并发和高性能是紧密相关的,提高应用的性能,是肯定可以提高系统的并发能力的。
  3. 应用性能优化的时候,对于计算密集型和IO密集型还是有很大差别,需要分开来考虑。
  4. 增加服务器资源(CPU、内存、服务器数量),绝大部分时候是可以提高应用的并发能力和性能 (前提是应用能够支持多任务并行计算,多服务器分布式计算才行),但也是要避免其中的一些问题,才可以更好的更有效率的利用服务器资源。

提高性能的注意事项

  1. 避免因为IO阻塞让CPU闲置,导致CPU的浪费。
  2. 避免多线程间增加锁来保证同步,导致并行系统串行化。
  3. 免创建、销毁、维护太多进程、线程,导致操作系统浪费资源在调度上。
  4. 避免分布式系统中多服务器的关联,比如:依赖同一个mysql,程序逻辑中使用分布式锁,导致瓶颈在mysql,分布式又变成串行化运算。

三、高可用

简介

高可用性(High Availability)通常来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性(一直都能用)。

高可用注意事项

  • 避免单点:使用单个服务器,一旦该服务器意外宕机,将导致服务不可用
  • 使用“集群”,一台服务器挂了,还有其他后备服务器能够顶上
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/114757.html原文链接:https://javaforall.net

(0)
上一篇 2021年10月3日 下午3:00
下一篇 2021年10月3日 下午4:00


相关推荐

  • Nano Banana Pro教學攻略!免費用13種指令圖片生成技巧大公開

    Nano Banana Pro教學攻略!免費用13種指令圖片生成技巧大公開

    2026年3月13日
    2
  • pycharm修改字体大小和主题

    pycharm修改字体大小和主题目录修改导航栏字体大小修改代码字体大小修改主题修改导航栏字体大小 1 进入 settings Appearance amp Behavior Appearance 里 2 勾选 susecustomfo 修改 size 字体大小修改代码字体大小 1 进入 settings Editor Font 里 2 在 size 处修改字体大小 修

    2026年3月27日
    3
  • RSTP概念_角的概念

    RSTP概念_角的概念RSTP概念

    2022年4月22日
    49
  • 函数strtol和strtok详解[通俗易懂]

    函数strtol和strtok详解[通俗易懂]一、strtol()函数的原型为:longintstrtol(constchar*nptr,char**endptr,intbase);函数的解释说明  这个函数会将参数nptr字符串根据参数base来转换成长整型数。参数base范围从2至36,或0。参数base代表采的进制方式,如base值为10则采用10进制,若base值为16则采用16进制等。当base值为0

    2022年7月14日
    24
  • git拉取远程分支到本地

    git拉取远程分支到本地一 查看远程分支使用如下 git 命令查看所有远程分支 gitbranch r1 二 拉取远程分支并创建本地分支方法一使用如下命令 gitcheckout b 本地分支名 xorigin 远程分支名 x1 使用该方式会在本地新建分支 x 并自动切换到该本地分支 x 采用此种方法建立的本地分支会和远程分支建立映射关系 方式二使用如下命令 gitfetchorig 远程分支名 x 本地分支名 x1 使用该

    2026年3月19日
    1
  • c++ string类字符串查找

    c++ string类字符串查找1 find 函数 find 函数用于在 string 字符串中查找子字符串出现的位置 它其中的两种原型为 size tfind conststring amp str size tpos 0 const size tfind constchar s size tpos 0 const 第一个参数为待查找的子字符串 它可以是 string 字符串 也可以是 C 风格的字符串 第二个参数为开始查找的位置 下标 如果不指明 则从第 0 个字符开始查找 请看下面的

    2026年3月16日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号