手把手带你搭建秒杀系统
佘志东
前京东交易平台(上海)负责人、资深架构师
12374 人已学习
新⼈⾸单¥59
登录后,你可以任选2讲全文学习
课程目录
已完结/共 18 讲
前期准备:技术选型与环境准备 (2讲)
准确无误:打造不超卖和公平的秒杀系统 (2讲)
雷令风行:性能调优更上一层楼 (3讲)
手把手带你搭建秒杀系统
15
15
1.0x
00:00/00:00
登录|注册

12|高性能优化:单机Java极致优化

你好,我是志东,欢迎和我一起从零打造秒杀系统。
今天这节课我们主要是聊一聊和 Java 相关的一些技术点的优化方向,包括 Tomcat、RPC 框架、JVM 以及 CDN 等。但在开始之前呢,我们先来说个基本知识点,那就是关于程序代码的两种运行模式,即 CPU 密集型与 IO 密集型
CPU 密集型操作,顾名思义就是需要持续依赖 CPU 资源来执行的操作,比如各种逻辑计算、解析、判断等等。在这种情况下,我们的优化方向是尽可能地利用多核 CPU 资源,并且避免让 CPU 做无效的切换,因为 CPU 已经在不停地工作了,谁来干都一样,同时切换 CPU 还浪费资源。所以这个时候,我们最好让任务线程数和 CPU 核数保持一致,从而最大限度地利用 CPU 资源。
和 CPU 密集型操作相对的,就是 IO 密集型操作了,比如磁盘 IO 或者网络 IO,这个过程操作系统会挂起任务线程,让出 CPU 资源。此时如果任务线程较少,同时 IO 时间相对较长,那可能会出现所有线程都被挂起,然后 CPU 资源都在闲着的情况,所以此时我们需要适当地增加任务线程数量,来提高吞吐量,同时将 CPU 资源利用起来。
那为什么要说这个呢?因为这是做程序优化的基本原则。通过前面课程的学习,我们知道,秒杀系统里有提供两种类型的服务,一个是 Web 服务,一个是 RPC 服务,前者一般提供 HTTP 接口,后者提供 RPC 接口。当然这两种服务我们一般都是通过 Tomcat 来启动发布,但它们两者之间还是有些不同的。Web 服务接受和处理请求走的是 Tomcat 那套线程模型,而 RPC 服务则是根据选择的 RPC 框架的不同而有所变化,所以这节课我们首先来了解一下 Tomcat 相关的知识。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了单机Java极致优化的相关技术要点,包括CPU密集型与IO密集型操作的优化方向,Tomcat的NIO线程模型工作原理及优化配置,以及RPC框架中Netty的服务端线程模型和Dubbo的相关配置。文章强调了针对不同类型操作的优化策略,以及如何通过调整Tomcat和RPC框架的配置来提高系统的吞吐量和性能。此外,还介绍了Servlet的异步和非阻塞支持,以及静态资源相关的优化。在JVM方面,文章重点讨论了垃圾回收器的选择和优化配置。总的来说,本文为读者提供了深入了解Java性能优化的基本原则和具体优化方向的重要知识。文章内容丰富,涵盖了多个方面的优化技术,对于想要深入了解Java性能优化的读者来说,是一份极具价值的资料。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《手把手带你搭建秒杀系统》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(2)

  • 最新
  • 精选
  • 清风
    可以部署两个服务,将http服务和RPC服务分开,http服务使用独立的域名对外服务,Rpc使用独立的group对外服务

    作者回复: 您的理解是正确的,如果条件允许,这样做是比较合适的。

    2021-10-26
    10
  • 胡桐祥
    JVM 内存模型那里标错了,-Xms应该是堆区的初始化内存吧,不是最小内存,
    2024-01-09归属地:广东
    1
收起评论
显示
设置
留言
2
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部