[求推荐] 请大神推荐稳定的 golang 开源 TCP 服务端框架,生产环境访问量每秒一两百,自己写的一个连接协程挂了整个程序也 panic 了

2017-10-19 10:15:44 +08:00
 jimy1

如题,小弟需要一个 TCP 服务端接受和处理请求,请求内容是解析 redis 持久化文件和删除现有 Redis 内存库的记录,每秒访问量在几十到一两百,自己写的程序在新连接到来开了新协程后容错没处理好,例如新协程打开文件出错整个程序也宕了,例如新协程建立 redis 连接出错整个程序也宕了。

请各位帮忙推荐有没有现成的框架?先谢谢了

1747 次点击
所在节点    Go 编程语言
8 条回复
jameshuazhou
2017-10-19 10:26:03 +08:00
golang 写 tcp 已经不能再简单了,别的框架好不到哪里去。
找到问题原因来,而不是想着换个框架就能解决问题。
例如,打开文件为何出错? redis 连接为何出错?
就算出错,为何宕了?是程序问题,还是滥用了 panic?
jimy1
2017-10-19 10:30:41 +08:00
谢谢 jameshuazhou 的回复
lwldcr
2017-10-19 10:37:34 +08:00
一秒 1 两百 基本上不存在压力吧
处理好文件、redis 读写就行了
可以初始化一个连接池,读写文件的时候如果可能有冲突记得加锁解锁
打开文件出错 或者 redis 连接出错 都可以捕获错误并安全处理的 合理的处理不会导致整个程序挂掉
jimy1
2017-10-19 10:44:24 +08:00
感谢 lwldcr 回复, 您的建议对我帮助很大
cloudzhou
2017-10-19 10:45:13 +08:00
go 不是“显示异常”的错误处理方式,而是传统 C 语言 return error 的方式。
所以简单的处理方法,就是不要忽略任何 error,并且合适的处理。
你能写出容易 panic 的代码,任何框架都是枉然,顶多给你 defer 一下。
认真,严谨的去 review 代码
gamexg
2017-10-19 10:53:31 +08:00
处理连接的协程最外层捕获 panic,可以防止单个连接 panic 造成整个进程崩溃。
但是虽然一般都有这个,但是实际可靠的代码根本不应该触发这个。
reus
2017-10-19 14:09:54 +08:00
框架救不了低能者
opengps
2017-10-19 19:42:54 +08:00
压力到了就上负载均衡啊,没必要太费精力去追求过高的单机性能

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/398844

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX