目前的工作在搞 openresty / nginx 这块,产品稳定,需求也很小,都是改一些配置和 lua 脚本,空闲时候比较多。想系统的学习一下 openresty / nginx ,看了一些书、文章和视频。然后读源码,画流程图、活动图、状态图。于是产生了用 golang 把 nignx 重写一遍想法,主要用于学习。
![]() | 1 wonderfulcxm 2024-02-15 12:19:17 +08:00 via iPhone 厉害 |
![]() | 2 Yoruno 2024-02-15 12:21:37 +08:00 via Android ![]() 为什么不用 rust? |
![]() | 3 wheeler 2024-02-15 12:24:12 +08:00 via iPhone 那是不是事件驱动都自己写啊 |
4 yumusb 2024-02-15 13:00:51 +08:00 ![]() 给你两个月的时间 抓紧时间发布 (doge) |
5 0o0O0o0O0o 2024-02-15 13:10:54 +08:00 ![]() |
6 Albertcord 2024-02-15 13:17:01 +08:00 ![]() 期待,但这种底层好像用 rust 写更好?不是说 rust 是 C++的平替吗? nginx 就是用 c 写的吧 |
7 drymonfidelia 2024-02-15 14:29:08 +08:00 ![]() 目前的工作在搞 linux 这块,产品稳定,需求也很小,都是改一些配置和 bash 脚本,空闲时候比较多。想系统的学习一下 linux ,看了一些书、文章和视频。然后读源码,画流程图、活动图、状态图。于是产生了用 golang 把 lniux ( 楼主的 nginx 也是拼错的)重写一遍想法,主要用于学习。 |
8 dorothyREN 2024-02-15 14:37:46 +08:00 golang 运行时,需要垃圾回收。不合适 |
![]() | 9 lesismal 2024-02-15 15:03:45 +08:00 基于 runtime 、标准库 Conn ,caddy 开销太大,根本干不过 nginx 不用 runtime 自己手撸 poller 性能也干不过 nginx 、但是好在 golang 方便开发 |
![]() | 10 lesismal 2024-02-15 15:04:45 +08:00 支持 OP 用 golang 搞搞看! 但这种基础设施,我也投 rust ! |
11 millet230413 OP @0o0O0o0O0o 我知道 caddy ,之前的公司用过这个,主要就是想通过这种方式来学习 nginx ,不然光看不做假把式。 |
12 millet230413 OP @Yoruno 没碰过 rust ,公司业务用 golang 这块做的,我之前做业务部分,后来调过来做网关相关的产品,同时不想把 golang 丢下,就想用 golang 来实现。 |
13 millet230413 OP @drymonfidelia ![]() |
14 millet230413 OP |
15 millet230413 OP 事件驱动肯定是用操作系统的 |
![]() | 16 Yoruno 2024-02-15 17:11:57 +08:00 via Android @millet230413 我也是主 go ,最近再看 rust ,感觉 rust 特性太多了,长时间不用就忘记了 |
17 mokiki 2024-02-15 17:59:03 +08:00 learn golang the crazy away |
18 dayeye2006199 2024-02-15 18:23:12 +08:00 via Android 不如看看 caddy |
![]() | 19 lesismal 2024-02-15 18:32:29 +08:00 |
![]() | 20 chaleaochexist 2024-02-15 18:42:55 +08:00 开源吗? 地址? |
21 realJamespond 2024-02-15 18:48:15 +08:00 nginx 最大特点就是自己搞了一套内存池吧,用 golang 和 rust 没必要搞这个了,其他都差不多都是调 epoll |
22 FlashEcho 2024-02-15 19:43:57 +08:00 cloudflare 不是用 rust 重写了一个自己内部的 nginx 吗?这种需求用 rust 确实更好 |
![]() | 23 vincent7245 2024-02-15 19:55:00 +08:00 我也觉得 rust 更好,自从学会了 rust 我看到啥都想用 rust 重写一个 |
24 pastel 2024-02-15 21:51:56 +08:00 这个工程量是不是太大 |
![]() | 25 tool2d 2024-02-15 21:57:58 +08:00 我也写过类似的网站服务器,运行效率很低。 主要能学到一些知识,比如 SSL 详细的握手流程,加密流程,还有签名认证之类的。 |
26 YsHaNg 2024-02-15 22:59:35 +08:00 |
![]() | 27 YUX PRO 看了楼上的发言,感觉又可以入门 rust 了 |
![]() | 28 HaroldFinchNYC 2024-02-16 01:38:20 +08:00 @tool2d 要是运行效率很高,你就可以卖钱了 |
![]() | 29 kkk9 2024-02-16 08:31:50 +08:00 nginx 通过社区贡献已经基本优化到最佳了,除非是有特定需求,如 aws 网关、cf 节点内联,不然怎么样也不会超越 ngx 的 |
![]() | 30 kkk9 2024-02-16 08:34:48 +08:00 |
![]() | 31 gowk 2024-02-16 10:33:44 +08:00 可以参考下 C# 实现 https://github.com/microsoft/reverse-proxy |
32 millet230413 OP ![]() 呃,看了大家的回复,可能是误解了我的初衷,我并不是想要复制一个这样的产品(事实上已经有类似 nginx 这样优秀的网关产品了,比如上面大家说的 caddy ),我是想通过这种方式来学习 nginx ,学习里面的设计思想(这么优秀的产品肯定有很多很多值得学习的地方),学习处理请求的各个阶段和流程(把一个请求合理的划分成多个阶段,这种工程思维本身就有很多值得学习的地方),学习里面的网络知识(肯定有很多我未知的盲点在里面)。 |
![]() | 33 ingramyang 2024-02-16 18:11:48 +08:00 有那个时间还不如去看 caddy 的源码 |
34 wws2023 2024-02-16 19:31:53 +08:00 via Android 学着学着发现 nginx 很多功能都是加模块的 |
35 deorth 2024-02-17 10:37:00 +08:00 via Android 道理我都懂,可是为什么 nginx 不支持 abstract unix socket |
36 julyclyde 2024-02-18 13:23:26 +08:00 我觉得你 *仅仅是* 想学 golang 而已 这事看起来和 nginx 没啥关系 |