第二种模式是采用多进程 。 比如 Nginx , 采用 NIO 编程模型 , Master 统一管理 Worker 进程 , 然后由 Worker 进程进行真正的请求代理 , 这也能很好地利用硬件的多个 CPU 。
第三种模式是使用多线程 , 这也是 Java 程序员接触最多的 。 比如 Netty , 采用 Reactor 编程模型 , 同样使用 NIO , 但它是基于线程的 。 Boss 线程用来接收请求 , 然后调度给相应的 Worker 线程进行真正的业务计算 。
像 Golang 这样的语言 , 有更加轻量级的协程(Coroutine) , 协程是一种比线程更加轻量级的存在 , 但目前在 Java 中还不太成熟 , 就不做过多介绍了 , 但本质上 , 它也是对于多核的应用 , 使得任务并行执行 。
变同步为异步
再一种对于计算的优化 , 就是变同步为异步 , 这通常涉及编程模型的改变 。 同步方式 , 请求会一直阻塞 , 直到有成功 , 或者失败结果的返回 。 虽然它的编程模型简单 , 但应对突发的、时间段倾斜的流量 , 问题就特别大 , 请求很容易失败 。
异步操作可以方便地支持横向扩容 , 也可以缓解瞬时压力 , 使请求变得平滑 。 同步请求 , 就像拳头打在钢板上;异步请求 , 就像拳头打在海绵上 。 你可以想象一下这个过程 , 后者肯定是富有弹性的 , 体验更加友好 。
惰性加载
最后一种 , 就是使用一些常见的设计模式来优化业务 , 提高体验 , 比如单例模式、代理模式等 。 举个例子 , 在绘制 Swing 窗口的时候 , 如果要显示比较多的图片 , 就可以先加载一个占位符 , 然后通过后台线程慢慢加载所需要的资源 , 这就可以避免窗口的僵死 。
04
结果集优化
接下来介绍一下对结果集的优化 。 举个比较直观的例子 , 我们都知道 XML 的表现形式是非常好的 , 那为什么还有 JSON 呢?除了书写要简单一些 , 一个重要的原因就是它的体积变小了 , 传输效率和解析效率变高了 , 像 Google 的 Protobuf , 体积就更小了一些 。 虽然可读性降低 , 但在一些高并发场景下(如 RPC) , 能够显著提高效率 , 这是典型的对结果集的优化 。
这是由于我们目前的 Web 服务 , 都是 C/S 模式 。 数据从服务器传输到客户端 , 需要分发多份 , 这个数据量是急剧膨胀的 , 每减少一小部分存储 , 都会有比较大的传输性能和成本提升 。
像 Nginx , 一般都会开启 GZIP 压缩 , 使得传输的内容保持紧凑 。 客户端只需要一小部分计算能力 , 就可以方便解压 。 由于这个操作是分散的 , 所以性能损失是固定的 。
了解了这个道理 , 我们就能看到对于结果集优化的一般思路 , 你要尽量保持返回数据的精简 。 一些客户端不需要的字段 , 那就在代码中 , 或者直接在 SQL 查询中 , 就把它去掉 。
对于一些对时效性要求不高 , 但对处理能力有高要求的业务 。 我们要吸取缓冲区的经验 , 尽量减少网络连接的交互 , 采用批量处理的方式 , 增加处理速度 。
结果集合很可能会有二次使用 , 你可能会把它加入缓存中 , 但依然在速度上有所欠缺 。 这个时候 , 就需要对数据集合进行处理优化 , 采用索引或者 Bitmap 位图等方式 , 加快数据访问速度 。
05
资源冲突优化
我们在平常的开发中 , 会涉及很多共享资源 。 这些共享资源 , 有的是单机的 , 比如一个 HashMap;有的是外部存储 , 比如一个数据库行;有的是单个资源 , 比如 Redis 某个 key 的Setnx;有的是多个资源的协调 , 比如事务、分布式事务等 。
现实中的性能问题 , 和锁相关的问题是非常多的 。 大多数我们会想到数据库的行锁、表锁、Java 中的各种锁等 。 在更底层 , 比如 CPU 命令级别的锁、JVM 指令级别的锁、操作系统内部锁等 , 可以说无处不在 。
- 酷睿处理器|解读i711800h和i712700h选哪个好?评测性能差距大吗?
- 电子商务|该怎样做好短视频SEO优化?短视频SEO优化有必要吗?
- AMD|RDNA3性能爆发!RX 7700系列即可灭掉万元级6900 XT显卡
- 小米|不止颠覆轻薄本性能!RedmiBook Pro 2022将搭载定制3.2K/90Hz视网膜屏
- motorola|骁龙888 Plus“白菜价”!摩托罗拉edge S30 1599起:同价位性能一骑绝尘
- 天玑9000|搭载天玑9000的oppo新旗舰性能不及预期,红米k50还值得期待吗
- 懂性能,选锐龙:开学电脑选 AMD 芯,明星爆品特惠秒杀
- TCL|杜伽K310白光限定款键盘——一个颜值及性能极佳的键盘
- steam|我的转行之路(Java开发从入门到放弃)之一:从培训班到就业
- 据此前消息|性能超越iPhone13Pro!曝荣耀Magic4系列国行版