高性能网络编程游记

带您深入理解网络编程的技术内幕
帅旋
关注
充电
IT宅站长,技术博主,共享单车手,全网id:arthinking。

开篇杂谈

发布于 2020-12-12 | 更新于 2024-01-31

众所周知,一个互联网应用,要能够支撑高DAU,技术的挑战将会是需要重点攻克的难题。除了要在架构上做很多可伸缩性的设计,如无状态、异步化、微服务拆分、负载均衡、存储等,还需要考虑高可用,限流降级、各种缓存的使用,压测演练等主题,每个主题针对不同的业务场景,都有很多不同的处理技术和技巧,都可以延伸出一个很大的话题。

我们可能会用到很多服务器程序:如RocketMQ,Redis,Tomcat,Netty,Node.js,Elastic-Job,以及各种线程池和缓存技术,但是使用了他们,就一定能够打造一个高性能的程序吗?

接下来,我将会重点从网络编程的角度来探讨这个问题,逐步带您深入了解高性能网络编程的设计思想和底层原理,让您有一把尺子可以去衡量网络编程程序的性能状况。 image-20201212183646106

我将陆续更新输出一个《高性能网络编程游记》的专栏。主要涵盖如下内容:

  • 网络编程必备知识:图解Socket核心内幕以及五大IO模型
    • 核心Socket API执行的背后,都发生了什么事情,三次握手、四次挥手都是什么时候触发的,有哪些IO模型,形象为您揭开IO处理的瓶颈所在;
  • 似乎没那么完美的信号驱动式IO
    • 带您认识目前Linux系统下信号驱动式IO的相关API,以及通过一个C程序案例,演示如何在UDP中使用信号驱动式IO;
  • IO复用:IO处理杀手锏,带您深入了解select,poll,epoll
    • 详细解析IO复用原理,深入剖析select,poll,epoll三大IO复用系统调用原理,通过浅显易懂的案例,演示如何执行IO复用API;
  • 异步编程:新时代的IO处理利器
    • 为您揭开目前操作性下异步编程API的现状,了解未来技术的发展动态;
  • 高性能网络编程范式:高性能网络编程就这么回事
    • 带您了解编写高性能网络程序的挑战,以及实现网络编程的各种范式,循序渐进的引入Reactor和Proactor高性能编程模型,详细描述其设计原理。基本上目前各种高性能服务器程序都离不开这些设计套路
  • 揭秘常见服务器程序的线程模型,从此性能是熟客
    • 列举常见的服务器程序的线程模式,揭开他们之所以能能够应付高并发场景的原因。

由于最近事情较多,时间打架,我争取每周输出两篇以上的文章,感谢大家的阅读与点赞支持。

题外话

⚠️ 该部分包含比较多的水分,不感兴趣的朋友请直接忽略。

有些朋友问,我的公众号为啥这么久没更新了?

为了能够沉下心来研读技术,我不太想给自己输出文章指定KPI,这还跟之前的经历有关。

很久很久以前,大概是十来年前,我有写博客的习惯,当时写博客的目的就是为了增加博客的曝光度,做了不少SEO优化,为此给自己定了个目标,争取每天都能够输出一篇文章。有时候为了赶时间点,有些没弄明白的东西就发出去了,一直把关注点聚焦在很浅的层面,虽然保持了更新,但是总感觉是在应付一个指标,输出的质量可想而知。

没有了指标的压力,如果有些东西没有思考明白,我就可以从容的继续去挖掘思考和实践了,直到问题水落石出之后,再梳理完整的知识脉络,从而有一个更加整体直观的认知。

以上就是我关于公众号更新的一点点想法。

另外,有一些不可抗拒因素,也导致了我最近没怎么更新文章:

电脑出问题了!

电脑电池鼓包,看起来怪可怕的,在犹豫要不要入手一个最新款的MacBook,在准备入手的前一天,Apple推出了M1芯片的新一代MacBook,根据网上的各种评测,部分软件未完全兼容,首发M1芯片坑多,最主要的一点:钱包还没有下面那个电池鼓,于是综合考量,感觉还不是入手的时候,于是继续等待明年的迭代版本,应该是一个换新机的好时机。

最后决定自己修理一下原来的那个MacBook,换电池:

CF94677CE40B0846BE6B4B74479344B3

换完电池之后,于是我又愉快地写起了文章。

警告⚠️:为了安全起见,建议大家谨慎自己换电池,AppleStore能够免费修理的,还是考虑去AppleStore修理,自己修理除了可能会买到质量比较差的电池之外,更换过程比较危险的。

然后去北京转了转,长这么大第一次去的北京,感觉还是那里的房价比较实在,不像深圳楼市的魔幻色彩。而互联网氛围也不比深圳差,但是…深圳也有 北京百度深圳分公司,北京字节深圳分公司,北京快手深圳分公司,北京美团深圳分公司,杭州阿里巴巴深圳分公司,东莞OPPO深圳分公司呀…

当我还沉浸在北京的美景中的时候,时间一下子就过去了。此处才思枯竭,文字不够,用我拍的靓照充充数…

image-20201212183740836

image-20201212183946306

我惊奇的发现,现在北京的天空比深圳的蓝。谁告诉我是什么原因呢?

image-20201212183811630

另外,偶尔工作会忙碌点,也是导致公众号更新慢的原因。

不能再水了,就唠叨到这里,接下来的几篇文章都是干货,希望对大家有帮助,也欢迎大家一起交流探讨。

最后,接下来我会开始更新《高性能网络编程游记》这个专题的文章,再次感谢大家的支持。

本文作者: 帅旋

本文链接: https://www.itzhai.com/columns/network-programming/intro.html

版权声明: 版权归作者所有,未经许可不得转载,侵权必究!联系作者请加公众号。

IT宅

关注公众号及时获取网站内容更新。