乔新亮的 CTO 成长复盘
乔新亮
彩食鲜副总裁兼 CTO、前苏宁科技集团副总裁、TGO 鲲鹏会荣誉导师
24236 人已学习
新⼈⾸单¥59
登录后,你可以任选2讲全文学习
课程目录
已完结/共 29 讲
开篇词 (1讲)
结束语 (1讲)
编辑手记 (1讲)
乔新亮的 CTO 成长复盘
15
15
1.0x
00:00/00:00
登录|注册

21 | 高性能设计,一切都围绕着契约精神

隔离技巧
对系统资源的争抢问题
提升弹性扩容的速度
储备额外的计算资源
流量控制
任何复杂问题都可以被拆解为简单问题
识别最关键的服务,进行设计、测试
守住契约
抽象业务问题为技术问题
提升系统各组件处理能力
使架构具备扩容能力
为架构做好“保护系统”
保证并发用户数量小于等于 250 万时,任何在线用户的 TP 90 = 2s
保证设计流量内的用户 TP 90 = 2s
目标清晰
系统容量
系统吞吐量
系统响应时间
清晰描述性能目标
契约精神是高性能架构设计的“拦路虎”
高性能设计围绕契约精神
结语
实现高性能架构的关键技术点
有上限的“契约”才能交付
性能目标定义
与契约精神密切相关
高性能设计

该思维导图由 AI 生成,仅供参考

你好,我是乔新亮。这一讲,我们来聊聊如何实现架构的高性能设计。
前面我们讲过,产品思维有两个核心关键词:“契约精神”和“洞察人性”。其实高性能设计,也和契约精神是密切相关的。我将其总结为:高性能设计,一切围绕着契约精神。
你可能会想,高性能设计不就是可以支撑大流量、高并发的架构设计吗?和契约精神又有什么关系?
其实关系很大。所谓的高性能,实际上,是与业务强相关的。比如,对于一台网络游戏服务器来说,可以支撑 400 名玩家同时在线,就算高性能;对于一台流媒体服务器来说,可以支撑 10,000 用户同时在线观看,就算高性能。
当然,数据可能不准确,但逻辑大体如此。在实际的业务场景中,还会有许多其他技术指标被引入。比如游戏需要关注连接稳定性、视频需要关注延时,等等。
明确了性能和业务的关系,下面我们就来聊聊,如何进行高性能设计,也借此加深对契约精神的认知和理解。

契约精神是高性能架构设计的“拦路虎”

首先,我们要清楚,高性能设计可以大体拆解为两大步骤:
清晰描述、定义性能目标;
设计并实现这个目标。
而高性能架构的设计目标,是通过三类指标来具体定义的,分别是:
系统响应时间,一般指服务 / 交易处理的时间,也包括网络响应时间;
系统吞吐量,一般指系统的每秒交易量,通常需要结合并发量共同描述;
系统容量,通常代表系统的可用资源数量,包括硬盘容量、网络带宽等。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文以“契约精神”为核心,探讨了高性能设计的关键要点。首先,高性能设计需要清晰定义性能目标,包括系统响应时间、系统吞吐量和系统容量。契约必须明确、具体,才能有效保证高性能设计的实现。有上限的契约才能有效交付,强调了对目标的明确定义和交付给用户的重要性。文章还提出了有上限的契约才能有效交付的观点,强调了对目标的明确定义和交付给用户的重要性。在高性能设计中,对于每个组件/服务都要确定目标,进行设计,然后进行评审和测试,确保满足性能需求。文章还强调了对系统资源的争抢问题的重视,以及隔离和提升架构的可扩展性的重要性。最后,文章提到了全链路生产压测的重要性,以及将业务问题抽象为技术问题的思路。整体而言,本文通过深入讨论契约精神,为读者提供了关于高性能设计的重要思考和指导。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《乔新亮的 CTO 成长复盘》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(13)

  • 最新
  • 精选
  • 如水
    技术行业发展到今天,基本不存在太多的技术挑战了。这句话我不赞同,我还没看到中国有好用的操作系统,这个技术没挑战吗?

    作者回复: 你好,如水 谢谢分享、讨论。我们一起讨论: 1 中国操作系统的问题是失去的窗口期,造一个好用的操作系统其实并不难,但难得是周边的生态。所以这个问题目前还真不是技术问题。 2 延申出来看,其实比如登月,人工智能,自动驾驶等等,还是有技术挑战的 3 从第二点来看,可以区分为把这个技术作为一个产品,还是使用产品;比如我们是使用云计算产品,还是研发云计算产品,做一个好的云计算产品还有很大的挑战,但是使用一个云计算产品,没有什么挑战了 4 我们的上下文,中国大部分公司还是commerce公司,就是商业公司,其实更多的是使用技术,从这点上来说,基本没有挑战,很多的所谓技术挑战只是在重复造轮子。 5 如果觉得自己技术牛,最好的证明就是创业去开一家公司,把自己的技术做成产品卖出去;否则就是在使用技术,那么能不能用好才是衡量的标准 6 但是,放在不同的公司,有可能因为人员能力问题,这些可能还是技术挑战,这是有可能的。我这里说的是趋势,有上下文,就如同做技术的,一定要有context。 谢谢分享,无私的分享你的观点,一起讨论,共同进步,感谢。

    2020-12-14
    4
    49
  • 李克光
    "任何复杂问题都可以被拆解为简单问题,只要拆解得足够细致。一定要牢记这一点,这种思维能力是技术人的安身立命之本。" --乔老师很好诠释了《 道德经》中 “天下难事,必作于易;天下大事,必作于细。是以圣人终不为大,故能成其大" 。 非常感谢乔老师的技术传道,让我贯通了很多思路,收获良多。

    作者回复: 你好,李克光 谢谢分享,这种领悟和分享特别好,还帮助了别人。

    2020-12-11
    2
    11
  • E
    乔老师看似在讲架构设计,实际上是在讲技术治理,契约精神是治理过程中的指导思想,乔老师也说到契约不可能无上限,因此本质上依然是在给大家布道“Trade-Off”思想。

    作者回复: 你好,E 人生永远是在不确定性中寻找确定性,不断的做决策。

    2020-12-11
    7
  • Weehua
    我也非常认同乔老师的观点:在当今中国的互联网环境中,大部分公司都在使用技术,如何使用好技术我认为没有太大的挑战,我们遇到的坑,遇到的技术问题,大部分都是别人走过的路。2年前,带团队开始从0到1做大数据平台相关建设,其中遇到了很多挑战,最后都是通过各种学习和交流得到了很好的解决。 大部分公司发展很快,还没有到稳定的阶段,分工也不会那么细,所以在技术深度这块我认为是远远不够的。但是到了一定阶段,一定要慢下来,聚焦核心技术,还是要做一些优化的,所谓的技术壁垒,就是一直不断的做这些小优化,量变到质变。作为技术管理者,怎么使用技术,做事的思维和认知感觉才是最难的。

    作者回复: 你好,Weehua 握手

    2020-12-16
    4
  • leslie
    其实"高可用和高性能"可以放到一起:本质就是SRE,我们看看京东、阿里的双11其实非常典型的体现了这点。架构代码和架构的代价、硬件基础架构和资源合理使用、业务的取舍和问题的重要性。 可能自己在这条路上用了大量的经历研究:根据业务的合理性与重要性去合理的使用资源,对于不确定性和关键业务可能的问题做好充足的灾难预演与危机应对策略,早年”熔断“被太多各行的人去笑,可是放到今天而言-这种格局之大实在钦佩。自己在某些行业都经历且处理/经历过极限危机,如果当时不曾合理处置对于所在企业就是重大事故。 Google的SRE中的一句话至今提醒这些年的我”没有Bug的程序是程序的特殊状态“,这几年很多人提出过运维无价值时我曾说过一句话”你做不到你的车子不在路上不抛锚,万一这个问题在高速公里上发生时,没有人帮你解决问题难道你要推你的车子下高速么“。 以上是个人对于高可用和高性能的一点薄见:还请老师指正。

    作者回复: 你好, leslie design for failure是高可用的设计理念,也是人生处世哲学。 分享的特别好,谢谢

    2021-03-07
    2
  • spark
    对高性能的自顶向下的认知:流量控制、扩容、提升各组件的处理能力 对高性能的分解: 一,架构角度:硬件、异步、中间件、缓存、负载均衡、读写分离,集群,分片; 二,技术角度:网络IO模型、无锁多线程并行、数据结构、算法、网络传输时间、IO时间; 我写代码追求性能最好,至少要比竞争对手好。我们团队有人一个接口2s照常上线,我至少要优化的50ms以内。 从商业竞争角度看高性能,其实高性能不是壁垒,别人很容易超越,例如加个128G内存就可以从2s提升到10ms。

    作者回复: 你好,spark 专业, 卓越,为你点赞

    2020-12-11
    2
    1
  • glutton
    还有一个点需要向乔老师请教,目前技术调整或者是技术壁垒基本不存在了,应届生基本对组件啥的很清楚了。。。 那么,程序员该如何提高自己竞争力呢?听课过程中,有一些点,比如提升认知?改变思维方式?可是感觉又欠缺实现路径。。。

    作者回复: 你好,glutton T型人才,一定要有自己专业的一个领域,这是一竖; 广度也要有,有专业的领域后,可以向周围延申,不仅仅是技术,还包括软技能,比如沟通能力,决策力,团队管理能力等。 任何事情,认知改变肯定是效果最好的。

    2020-12-11
    1
  • Anyou Liu
    乔老师,测试环境资源有限,配置不如生产,数据量也达不到生产的要求,往往测试环境没问题的,到了生产环境性能还是有问题,测试环境的指标往往也不能直接类比到生产,有没有什么好的解决办法?

    作者回复: 你好,Anyou Liu 测试环境肯定资源不能和生产配置一样。 这个时候一种是做好容量规划,测试环境和生产环境和处理有关的参数等比缩小,其他基本参数一样,通过分析进行计算。 第二种是在生产环境进行全链路压测,业界也有这样的工具。

    2020-12-11
    8
    1
  • adang
    契约精神正是现在团队缺失的,每年 618、双 11、双 12 公司运维、运营、研发全员戒备监测系统是否有异常,出现异常马上处理,每次大促结束再全员复盘总结,对发现的问题进行修改,下一次再这样循环。据团队老人讲,现在已经好多了,只是不放心所以才全员盯着,基本上不会出现大问题,以前是全员通宵忙救火。即使到现在也没有很清晰的目录,一切都是差不多就行,到时候再说,顶多在大促前预先准备好扩容。 老师说的明确目标履行契约,我的整理是事先要做好明确的分析和研究,把每个细节都考虑清楚,在执行过程中做好监测跟踪,收集反馈并及时做出调整。可很多研发人员和管理者不愿意静下心来细致的思考分析,理由是,想的再细也会有遗漏,太浪费时间,只有真正做了才会发现问题,想的差不多就开始做,做的过程中再调整,才是最快的。结果也就没有了契约精神。 还有一个原因是研发人员对于违约成本没有切身体会,出了问题调整呗,没啥大不了,但是在商业合作方面,这样的事情那是大忌,因为事前没有约定清楚,那么出了问题全是要用钱解决的,所以就特别注意,锱铢必较。这也就回到了老师一直说的,要站在公司发展的角度看问题。

    作者回复: 你好,adang 分享的特别好

    2021-02-21
  • 小乙哥
    1.契约其实就是业务要求的目标,围绕这个目标,达成结果就是契约精神的体验。 2.具体的实现目标方法论,就是高性能设计的过程。核心是三大步: 保护系统;弹性设计;组建能力建设(这块会包含很多的术,比如分库分表,缓存等)

    作者回复: 你好,小乙哥 棒

    2021-02-07
收起评论
显示
设置
留言
13
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部