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