众所周知,一个互联网应用,要能够支撑高DAU,技术的挑战将会是需要重点攻克的难题。除了要在架构上做很多可伸缩性的设计,如无状态、异步化、微服务拆分、负载均衡、存储等,还需要考虑高可用,限流降级、各种缓存的使用,压测演练等主题,每个主题针对不同的业务场景,都有很多不同的处理技术和技巧,都可以延伸出一个很大的话题。
我们可能会用到很多服务器程序:如RocketMQ,Redis,Tomcat,Netty,Node.js,Elastic-Job,以及各种线程池和缓存技术,但是使用了他们,就一定能够打造一个高性能的程序吗?
接下来,我将会重点从网络编程的角度来探讨这个问题,逐步带您深入了解高性能网络编程的设计思想和底层原理,让您有一把尺子可以去衡量网络编程程序的性能状况。
我将陆续更新输出一个《高性能网络编程游记》的专栏。主要涵盖如下内容:
- 网络编程必备知识:图解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,换电池:
换完电池之后,于是我又愉快地写起了文章。
警告⚠️:为了安全起见,建议大家谨慎自己换电池,AppleStore能够免费修理的,还是考虑去AppleStore修理,自己修理除了可能会买到质量比较差的电池之外,更换过程比较危险的。
然后去北京转了转,长这么大第一次去的北京,感觉还是那里的房价比较实在,不像深圳楼市的魔幻色彩。而互联网氛围也不比深圳差,但是...深圳也有 北京百度深圳分公司,北京字节深圳分公司,北京快手深圳分公司,北京美团深圳分公司,杭州阿里巴巴深圳分公司,东莞OPPO深圳分公司呀...
当我还沉浸在北京的美景中的时候,时间一下子就过去了。此处才思枯竭,文字不够,用我拍的靓照充充数...
我惊奇的发现,现在北京的天空比深圳的蓝。谁告诉我是什么原因呢?
另外,偶尔工作会忙碌点,也是导致公众号更新慢的原因。
不能再水了,就唠叨到这里,接下来的几篇文章都是干货,希望对大家有帮助,也欢迎大家一起交流探讨。
最后,接下来我会开始更新《高性能网络编程游记》这个专题的文章,再次感谢大家的支持。