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