文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

从零开始自制实现C++ High-Performance WebServer 全流程记录

2023-09-01 20:09

关注

文章目录


Love 6’s C++ High-Performance WebServer(这一路想说的话)


这个 从零自制高性能多线程的WebServer博客系列呢 刚开始我写之初 其实也就是想记录一下 一个linux后端开发者 以此作为 网络编程的起点 以及多线程编程的起点的博客记录而已

因为刚开始 对于很多后台开发的前辈啊 所给出的后端学习的路啊 就比如写一个WebServer 其实这个项目就个人而言 真的肯定是 作为后台开发最好的入手的一个项目了 这个WebServer 不是写一个 就只能支持HTTP协议的服务器 而是从零开始写一个能够具有超级高的复用性的网络库 以此的基础上来实现一个高性能的HTTP服务器

记录之初 只是刚开始学习的时候太迷茫了 不知道从哪里入手 从什么地方开始 从哪里作为起点 都不知道… 在网上搜寻良久 也没有找到解决办法 我相信如果有之后想从事后台开发的初学者的话 又刚好想写一个这样类似的项目的话 看到有一位在这条路已经走过一遍的前者 把自己的学习轨迹记录下来 我相信还是会走更少的弯路的

本项目 所基于的书籍 最主要是两本
《Linux高性能服务器编程》----(游双)(现在快绝版了)

《Linux多线程服务器编程》使用muduo C++网络库 ---- 陈硕

本项目 所平时参考的网络库的源码 是muduo 网络库 也就是陈硕大佬所写的网络库 耦合性非常低 代码没有一点冗杂 相当精干
项目的网络库 底层实现逻辑 是基于muduo网络库的实现逻辑 以此为基础上 借鉴实现的网络库

大概muduo库源码 我应该是会看好几遍的 然后书籍的话 第一本是入门 相当好的入门书籍 没有第一本书籍所做的知识铺垫 模型铺垫 我相信我在阅读第二本书 muduo源码 书籍中的实现模型 相信会是相当相当吃力的

我发现 网络上面 对于一个从零实现WebServer 那种边学习边记录的博客太少 花时间写下这一系列博客 也算是有些许意义吧

–2022/3/26 正在写第六篇系列博客时 心中有感而发所写 13:23 笔者留


写到现在目前第十五篇 目前也就是今天晚上就可以把 这个项目最后一个功能 日志库给完结了 想到现在一路走来 不过也就接近40天的时间 尽管写到现在 也有些许疲倦 写这个项目也没有像上面写第六篇 或者写第一篇 《万丈高楼平地起…》那样有动力 但仔细想想 也属实不易

这一路走来 遇到了各种形形色色的问题 自己也在其中 不断地巩固自己的一些薄弱的编程基础 也学习到了很多新的实践的工具 自己对于稍微大型一点的项目编程 也有了更多的经验了

如果把之前的Tiny_OS Tiny_Regex都不算做正式项目的话(Tiny_OS应该还是算的)那这个这个High-Profomance WebServer就算作第一个我的正式项目了
其中有过开心喜悦 也有过困顿迷惑 有忽然发现解决棘手问题的方法的那种欢呼雀跃 也有因为一个小问题连续苦闷五天的难过时间

总之还是坚持下来了 可能在编写这段话的时候 再过个几天就要完结这个项目了 我也要进入下一个阶段了 哈哈 希望早点完结吧

–2022/4/19 正在写第十五篇系列博客 18:41留


这是最后我对这个项目 也是算是对我启蒙意义最重的一个项目 留下的可能是最后一段话了
我在这个项目 开始于3/15 今天是4/24 已经过去了45天了
原本我的计划是在一个月内完成这个项目 显然现在发现是不行的 除非之前就做过类似的项目


我在这个项目中 收获了太多太多 这个项目我认为 对于后台开发的同学 应该算是必做项目 因为可以收获的太多太多了
在真的这个项目要结束时 之前总觉得有好多好多话想说 现在却一句都说不出了

最后给一点意见吧 早点使用Git 在这个项目多去用用一些小工具 多去探索一些平时根本没有用上的Tool 尽量自己尝试去解决问题 尤其是自己编写的东西出现了问题 遇到困难与挫折 永远保持一颗坚持下去的心 不要放弃 保持学习 Keep Learning 当你学的东西越多的时候 你会发现 你不会的东西也越多

stay hungry stay humble
祝各位 我们江湖再见~
还是用这个可爱的表情结束我们的文章吧ヾ( ̄▽ ̄)Bye~Bye~

2022/4/24 18:48留


1、全流程实现博客链接


友情提示:
博客中有部分代码编译时用的是g++-9.x 到后面的时候才更换回了低版本g++-4.8 对于低版本编译器更友好 但并无大碍 如果在复制代码时 编译出现问题是由于编译器版本过低 无法识别的话 稍加修改代码即可

从零开始自制实现WebServer(一)---- 万丈高楼平地起 步子得一步一步慢慢走
从零开始自制实现WebServer(二)---- 勿在浮沙筑高层 摸谈初试进程/线程池与高效并发模型
从零开始自制实现WebServer(三)---- 华山论剑剑指线程池 大刀阔斧终开始阅读源码
从零开始自制实现WebServer(四)---- 长望漫漫路觉应先积跬步 不论精致粗糙先砌小砖小瓦
从零开始自制实现WebServer(五)---- 浅沿芳草鲜花小路静心踱步 拨云见雾终见多线程ThreadPool
从零开始自制实现WebServer(六)---- 跌跌撞撞奔向HTTP状态机 学习途中拾慧纠正过往细节偏差
从零开始自制实现WebServer(七)---- 进入首次压力测试开始调优 休整不牢地基开始大整改
从零开始自制实现WebServer(八)---- 花费两天解决性能瓶颈问题 介绍一路调试历程以及推荐各种好用的工具
从零开始自制实现WebServer(九)---- 目前总览代码如下 得继续脚步前行
从零开始自制实现WebServer(十)---- 费时五天研究性能瓶颈 对整个服务器代码大改造 最后发现gcc优化竟是最终问题
从零开始自制实现WebServer(十一)---- 花费数天完善代码寻找瓶颈 修修改改代码初具规模 罗列目前全部代码
从零开始自制实现WebServer(十二)---- 剑指定时器小根堆处理 给EventLoop定时任务处理一个温暖的家
从零开始自制实现WebServer(十三)---- 定时器实现踢掉服务器空闲连接功能 让服务器不再被长连接强行霸占
从零开始自制实现WebServer(十四)---- 终最后迈向日志库 解决流输出重载前端基本框架搭建 为异步日记库做好准备
从零开始自制实现WebServer(十五)---- 日志库部分完结啦 实用小件DOUBLE-BUFFERING优化异步写入性能
从零开始自制实现WebServer(十六)---- 学习新工具CMake自动编写MakeFile 分门别类整理源文件心情愉悦
从零开始自制实现WebServer(十七)---- 重新阅读Muduo服务器编程书籍 做最后的小改小动 项目终究要迎来终声了
从零开始自制实现WebServer(十八)---- 对服务器做最后的压力测试 WebBench压测小工具 项目迎来终章
从零开始自制实现WebServer(十九)---- 正式系统的学习一下Git 捣鼓捣鼓github以及一些其他的小组件
从零开始自制实现WebServer(二十)---- C++ High-Performance WebServer源码实现(Util核心代码部分)
从零开始自制实现WebServer(二十)---- C++ High-Performance WebServer源码实现(Base核心代码部分)
从零开始自制实现WebServer(二十)---- C++ High-Performance WebServer源码实现(Http核心代码部分)
从零开始自制实现WebServer(二十)---- C++ High-Performance WebServer源码实现(Timer核心代码部分)
从零开始自制实现WebServer(二十)---- C++ High-Performance WebServer源码实现(Logging核心代码部分)


2、源码仓库链接


GITHUB源码仓库链接:Love 6’s Github 源码仓库
C++ High-Performance WebServer Github链接:Love 6’s C++ High-Performance WebServer

最后项目代码(博客链接)
从零开始自制实现WebServer(二十)---- C++ High-Performance WebServer源码实现(Util核心代码部分)
从零开始自制实现WebServer(二十)---- C++ High-Performance WebServer源码实现(Base核心代码部分)
从零开始自制实现WebServer(二十)---- C++ High-Performance WebServer源码实现(Http核心代码部分)
从零开始自制实现WebServer(二十)---- C++ High-Performance WebServer源码实现(Timer核心代码部分)
从零开始自制实现WebServer(二十)---- C++ High-Performance WebServer源码实现(Logging核心代码部分)

来源地址:https://blog.csdn.net/qq_37500516/article/details/123754194

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯