V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  hopingtop  ›  全部回复第 6 页 / 共 10 页
回复总数  195
1  2  3  4  5  6  7  8  9  10  
2022-12-12 21:48:22 +08:00
回复了 hopingtop 创建的主题 Go 编程语言 Go + Mongodb 小巧,高性能,低成本日志服务
@Maboroshii 嗯,是直接入 DB 的。性能瓶颈,就是 Mongodb 的瓶颈。因为建立索引极其克制,所以批量写入性能很好,
项目 /tools 目录里面有 benchmark 工具,可以依据自己的环境来测试。2c4g 的 mongodb 空集合的情况下 7-8w/s 单条 /350bytes 还是可以的。

针对如果单进程有异常大的日志量,是建议 Bind 一个性能好点的 DB 实例上,进行纵向扩展性能,同时分片时间短一点,比如 7 天一个集合。这样能保证单集合不会过大,导致此进程写入日志性能下降。但是因为 Remote 写入实现是异步的,不会阻塞主进程。短时的峰值流量扛不住或者集群异常,会把日志写入备份本地文件,然后有异步逻辑补偿写入,直到备份文件内容追平。

不同的模块(理解成 APP 进程)可以绑定不同的 mongodb 实例里面,这样写入是分散的。但是做不到自动冷热分布,如果初期无法预估容量,可以通过统计趋势写入量的,然后通过后台手动绑定进程写入到哪个实例,来分布数据的冷热问题,达到均衡使用。

目前,我们部署方式很特殊,我们有很多独立的项目群。 目前网络不互通的 部署了 5 套, 目前最大的集群,日写入量在压缩后有 35G 左右。平均 4000W 条吧,2c4G 的 Mongodb 就可以满足。
2022-12-12 19:29:30 +08:00
回复了 hopingtop 创建的主题 Go 编程语言 Go + Mongodb 小巧,高性能,低成本日志服务
@xuzhzzz 哈哈,其实就是有两次团队小伙伴,在写定时任务的时候,有个异常逻辑 select 里面 break 了,并不是退出 for 循环,这个在 Go 语言的 Bug 里面也比较常见。 结果 for 循环了好几个小时,2c4g 的 mongo 写了 8 亿多条数据。最后 mongo 使用内存报警了接近打满了,然后通过后台直接删除异常的 mongo 集合,重启 mongodb 恢复。
2022-12-12 18:34:36 +08:00
回复了 hopingtop 创建的主题 Go 编程语言 Go + Mongodb 小巧,高性能,低成本日志服务
@xdeng 哈哈,想法不错,可以考虑考虑,不过连 docker 拉一个 mongo 就觉得麻烦了嘛 555
2022-11-22 14:42:19 +08:00
回复了 xubihang 创建的主题 问与答 纯新手拍卖买了个域名,是捡漏还是接盘了
除非正儿八经做钱包的需要,但是正儿八经的现在不怎么赚钱了。其他的一般不需要,他们更会 随便发一个白皮书,起一个基金会的名字,然后去 用基金会的名字 去注册。 用完就丢, 你懂得
2022-11-20 10:40:05 +08:00
回复了 mortalbibo 创建的主题 程序员 目前的远程工作, 什么技术方向岗位比较多?
好贴!希望有经验的人,详细讨论一下
我自己的 .com 续费 4 年了,明年 6 月到期,打算不续了,还备案了的,目前打算 进行域名迁移了。
确实觉得 真实名字的意义不大, 反而 网名,我个人感觉更适合。
2022-11-05 09:55:45 +08:00
回复了 badmarillo 创建的主题 程序员 为了不被马斯克裁员,推特员工每周疯狂工作 84 小时...
加班也留不住。计划说 砍 50% 名单就这一两天,说是 2 个月的遣散费。
2022-11-05 09:53:18 +08:00
回复了 abc0123xyz 创建的主题 Redis 求教, 24 小时过期删除思路
如果为了用某个东西,而去迎合,设计出一些别扭的方案。容易偏,一上来就整些各种中间组件是很不好的习惯。

最低成本的好用的方案,就是 #3 leeraya 的思路,如果觉得真有必要上 redis ,在把这些数据 Set 上去就行了。
2022-11-05 09:26:57 +08:00
回复了 v2defy 创建的主题 程序员 狂神不教 Java 教 go 了
err 目前就是这样,没得什么黑魔法包装,无非就是多两行代码,但是他能给你暴露更多东西,能够第一时间处理。而不是一上来直接一个 try catch 然后 1000 行逻辑代码(例子比较极端)。。。
golang 写出的代码就是开水代码,人人都能看懂。其实这种风格,在工程上来说,是真的讨喜,就算屎的代码,也好扒拉。
但是对于程序员来说,还是多多少少有点其他遗憾, 比如不能 特炫技能,黑魔法,容易交接替代。
2022-10-28 16:39:18 +08:00
回复了 sadfQED2 创建的主题 Go 编程语言 V200,找大佬帮忙看个 BUG,不够我加钱
最终也并不一定这里有问题,这只是一个 排查方向 @sadfQED2
2022-10-28 16:38:18 +08:00
回复了 sadfQED2 创建的主题 Go 编程语言 V200,找大佬帮忙看个 BUG,不够我加钱
当前你贴的代码,确实没得什么问题,asyncSendMetricLoop 这个方法调用,只会有一次吗?是 sync.Once 吗?
Counter 里面 会涉及到锁的问题吗?
asyncSendMetricLoop 因为 metricCell chan 不关闭,这个 goroutine 就会常驻, 所以这个方法如何使用就很关键。
2022-10-28 14:17:20 +08:00
回复了 sadfQED2 创建的主题 Go 编程语言 V200,找大佬帮忙看个 BUG,不够我加钱
@sadfQED2 不能这么说,何况还是 1/5W 的概率,只要不是 100% 必执行,你等一天或者 N 天都可能没得结果。所以还是要先看代码,就从 我说的那个方面先排查了来吧。
这种问题,不看代码和断点,确实不能给出更多的回复了。
2022-10-28 12:38:05 +08:00
回复了 sadfQED2 创建的主题 Go 编程语言 V200,找大佬帮忙看个 BUG,不够我加钱
@sadfQED2 无用的 goroutine 如果太多,大家都在抢,你怎么能保证你的 helloWorld 能抢到。当然具体的我也无法从上面的信息看出太多,如果这个第三方代码是开源的,可以贴一下 github 我可以去定位一下 相关的实现
2022-10-28 10:22:37 +08:00
回复了 sadfQED2 创建的主题 Go 编程语言 V200,找大佬帮忙看个 BUG,不够我加钱
@hopingtop 但是如果这些 goroutine 里面有大量的锁,那可很可能造成你当前这样现象。
2022-10-28 10:21:09 +08:00
回复了 sadfQED2 创建的主题 Go 编程语言 V200,找大佬帮忙看个 BUG,不够我加钱
但是按理来说 5W 的 goroutine 小 case ,
2022-10-28 10:16:05 +08:00
回复了 sadfQED2 创建的主题 Go 编程语言 V200,找大佬帮忙看个 BUG,不够我加钱
首先你的 go hello word 没有被打印,就相当于调度器就开始没有绑定你这个任务执行了,或者说调度器被其他的 goroutine 完全占用了。 占用的情况大一些
第二个,你重点看一下 代 loop 的函数, 比如 logger.writeLoop 和 metrics.asyncSendLoop 特别是后者,是否出现了,因为函数名是 异步 async 开头,这里是否是 开启了大量的 goroutine 然后没有正确的被释放,导致 goroutine 常驻 。

先看看 我说的上面这两个地方呢
2022-10-13 10:20:46 +08:00
回复了 MonTubasa 创建的主题 区块链 看了看以太坊的智能合约开发和官网上的一些 dApp,我悟了
给你举一个比较流行的东西, 混币器搜索关键词:Tornado.cash 也符合你现在的理解。
但是你可以看看他现在是什么状况,当产生了利益冲突,随时可以让你覆灭
能做一部分事,但是想颠覆,就不要幻想了,一定是在某种利益框架下执行的,特别是现在 ETH 转 POS
1  2  3  4  5  6  7  8  9  10  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2182 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 26ms · UTC 05:54 · PVG 13:54 · LAX 22:54 · JFK 01:54
Developed with CodeLauncher
♥ Do have faith in what you're doing.