从 0 开始学架构
李运华
前阿里资深技术专家(P9)
58382 人已学习
立即订阅
登录后,你可以任选4讲全文学习
推荐试读
换一换
03 | 架构设计的目的
04 | 复杂度来源:高性能
如何高效地学习开源项目 | “华仔,放学别走!” 第3期
免费
课程目录
已完结/共 65 讲
开篇词 (1讲)
开篇词 | 照着做,你也能成为架构师!
基础架构 (13讲)
01 | 架构到底是指什么?
02 | 架构设计的历史背景
03 | 架构设计的目的
04 | 复杂度来源:高性能
05 | 复杂度来源:高可用
06 | 复杂度来源:可扩展性
07 | 复杂度来源:低成本、安全、规模
08 | 架构设计三原则
09 | 架构设计原则案例
10 | 架构设计流程:识别复杂度
11 | 架构设计流程:设计备选方案
12 | 架构设计流程:评估和选择备选方案
13 | 架构设计流程:详细方案设计
高性能架构模式 (8讲)
14 | 高性能数据库集群:读写分离
15 | 高性能数据库集群:分库分表
16 | 高性能NoSQL
17 | 高性能缓存架构
18 | 单服务器高性能模式:PPC与TPC
19 | 单服务器高性能模式:Reactor与Proactor
20 | 高性能负载均衡:分类及架构
21 | 高性能负载均衡:算法
高可用架构模式 (10讲)
22 | 想成为架构师,你必须知道CAP理论
23 | 想成为架构师,你必须掌握的CAP细节
24 | FMEA方法,排除架构可用性隐患的利器
25 | 高可用存储架构:双机架构
26 | 高可用存储架构:集群和分区
27 | 如何设计计算高可用架构?
28 | 业务高可用的保障:异地多活架构
29 | 异地多活设计4大技巧
30 | 异地多活设计4步走
31 | 如何应对接口级的故障?
可扩展架构模式 (6讲)
32 | 可扩展架构的基本思想和模式
33 | 传统的可扩展架构模式:分层架构和SOA
34 | 深入理解微服务架构:银弹 or 焦油坑?
35 | 微服务架构最佳实践 - 方法篇
36 | 微服务架构最佳实践 - 基础设施篇
37 | 微内核架构详解
架构实战 (14讲)
38 | 架构师应该如何判断技术演进的方向?
39 | 互联网技术演进的模式
40 | 互联网架构模板:“存储层”技术
41 | 互联网架构模板:“开发层”和“服务层”技术
42 | 互联网架构模板:“网络层”技术
43 | 互联网架构模板:“用户层”和“业务层”技术
44 | 互联网架构模板:“平台”技术
45 | 架构重构内功心法第一式:有的放矢
46 | 架构重构内功心法第二式:合纵连横
47 | 架构重构内功心法第三式:运筹帷幄
48 | 再谈开源项目:如何选择、使用以及二次开发?
49 | 谈谈App架构的演进
50 | 架构实战:架构设计文档模板
51 | 如何画出优秀的软件系统架构图?
特别放送 (11讲)
架构专栏特别放送 | “华仔,放学别走!”第1期
架构专栏特别放送 | “华仔,放学别走!” 第2期
如何高效地学习开源项目 | “华仔,放学别走!” 第3期
架构师成长之路 | “华仔,放学别走!” 第4期
架构师必读书单 | “华仔,放学别走!” 第5期
新书首发 | 《从零开始学架构》
致「从0开始学架构」专栏订阅用户
第二季回归 | 照着做,你也能顺利晋升!
加餐|单服务器高性能模式性能对比
加餐|扒一扒中台皇帝的外衣
加餐|业务架构实战营开营了
结束语 (1讲)
结束语 | 坚持,成就你的技术梦想
结课测试 (1讲)
结课测试|这些架构技能你都掌握了吗?
从 0 开始学架构
15
15
1.0x
00:00/00:00
登录|注册
开通超级会员可免费学习本课程,还可解锁海量内容免费学特权。

加餐|单服务器高性能模式性能对比

你好,我是华仔。
我们架构课的第 18 讲第 19 讲主题是单服务器高性能模式,我们讲了 PPC 与 TPC、Reactor 与 Proactor,从理论上跟你详细讲述了不同模式的实现方式和优缺点,但是并没有给出详细的测试数据对比,原因在于我自己没有整套的测试环境,也不能用公司的服务器做压力测试,因此留下了一个小小的遗憾。
幸运的是,最近我在学习的时候,无意中在网络上找到一份非常详尽的关于 Linux 服务器网络模型的详细系列文章。作者通过连载的方式,将 iterative、forking(对应专栏的 PPC 模式)、preforked(对应专栏的 prefork 模式)、threaded(对应专栏的 TPC 模式)、prethreaded(对应专栏的 prethread 模式)、poll、epoll(对应专栏的 Reactor 模式)共 7 种模式的实现原理、实现代码、性能对比都详尽地进行了阐述,完美地弥补了专栏内容没有实际数据对比的遗憾。
因此我把核心的测试数据对比摘录出来,然后基于数据来进一步阐释,也就有了这一讲的加餐。我想第一时间分享给你,相信今天的内容可以帮助我们加深对课程里讲过的理论的理解。
下面是作者对 7 种模式的性能测试对比结果表格,作者在文章中并没有详细地介绍测试环境,只是简单提到了测试服务器是租来的云服务器,CPU 只有 1 核(没有说明具体的 CPU 型号),对于内存、带宽、磁盘等信息并没有介绍,我们假设这些硬件相关性能都足够。从理论上来说,网络模型的核心性能部件就是 CPU,因此如下数据是具备参考意义的。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/1000字
划线
笔记
复制
03 | 架构设计的目的
04 | 复杂度来源:高性能
如何高效地学习开源项目 | “华仔,放学别走!” 第3期
免费
架构师必读书单 | “华仔,放学别走!” 第5期
加餐|扒一扒中台皇帝的外衣
51 | 如何画出优秀的软件系统架构图?
开通超级会员免费畅看本课程
开通会员
该文章仅可免费阅读部分内容,如需阅读完整文章,请开通超级会员或单独购买本课程。
登录 后留言

精选留言(5)

  • 两只狮子
    华哥,请教一下concurrence列下面的数据是指的绝对并发数还是指的每秒的请求量呢?

    作者回复: 并发连接数,每个连接压满,然后计算得到每秒请求数

    2021-02-20
    4
  • YHK
    prethread 好强啊。比 poll和select都强,那epoll没出来之前,怎么还有人用多路复用

    作者回复: prethread解决不了c10k问题,其实c10k问题出现前,多路复用用的不多

    2021-05-26
    1
  • Geek_c25f25
    从表格中发现另外一个数据,不管并发连接数是多少个,从epoll的数据看,都是2000+一点,也就是这个系统的QPS只能达到2000+。

    作者回复: 对的,单核2000已经不错了 :)

    2021-12-01
  • Geek_c25f25
    神文,都说reactor模式好,但是到底怎么个好还是要有测试数据支撑。老师的分析能力好强大啊,特别是redis,c10k这两个分析真的太精彩了,其他地方看不到这两个情况的分析。

    作者回复: 如果有多核服务器测试,效果会更明显 :)

    2021-12-01
  • leesper
    我用Go写过一个网络库,得益于Go语言的强大,我对每个网络连接开了三个goroutine,一个负责读,一个负责写,一个负责配合工作者线程执行业务逻辑,但我一直想写一个基于epoll的网络库出来,https://github.com/leesper/tao

    作者回复: 自己练手java可以直接参考Doug lee 的Java NIO编程的PPT,里面给个样例。

    Go语言这样设计我感觉没有发挥Go的优势,三个goroutine之间的消息传递可能比较耗费性能,我觉得直接用一个goroutine处理一个连接比较好,意见供参考

    2021-01-13
收起评论
5
返回
顶部