技术闲聊,NFD2.0这个项目的实现方式确实非常优雅,虽然体量不大,但算是符合短小精悍的评价
NFD2.0是个“3无产品”:无服务器、无数据库、无状态
无服务器
全部托管在snippets上,cf来操心所有操作
snippets大致相当于轻量版worker,但每个请求只能发出2个sub request,cpu时间限制严格,不能使用kv/d1等数据库,产品限制在请求修改转发上
因为没有源站,所以不怕攻击,不用自己守护程序,不用操心负载,几乎没有任何维护成本,估计程序运行几年都不用管
因为完全serverless,程序能够负载的用户量多到可怕
无数据库
本来以为这种是没法实现的,琢磨着得自己构建可靠数据存储。现在好了,原汤化原食,所有东西都让tg自己和cf协调了,我们不用操任何心。
无状态
telegram bot是典型的依托有状态设计的场景,举例说明,比如第一条对话是 /addEmail ,那么后台在内存或者储存上要记录下一个status为waitingForEmailInput,然后第二条输入的邮箱才能被正确识别。
有状态一般都要有状态存储,cf worker不用内存状态(durable-objects),不用自家数据库,那么就要用外部数据库,会增加维护成本和系统不可靠性。因此把服务设计为无状态的非常有用,在写代码前尽量考虑到。
这样的缺点是不能100%自建,私有化部署?
Elegant, too elegant.
优雅
学不来
前排学习并赞赏
《酒神の自夸》
酒神体?
酒哥这算不算自卖自夸
悠亚永不过时
搞错了 看成测评了