- 博客(5)
- 资源 (9)
- 收藏
- 关注
原创 Go语言: 万物皆异步
同步和异步、堵塞和非堵塞首先要明确的是,同步(Synchronous)和异步(Asynchronous),堵塞(Blocking)和非堵塞(Non-Blocking)是两种完全不同的概念。前者指的是一种事件通知、处理机制,而后者则是程序控制流程的差异。我们以A调用B为例来说明两者之间的区别: - 堵塞 只有当B任务完成后,程序控制权才会返回给A, A得以继续执行。非堵塞 B马上返回,此时B并
2017-12-24 11:31:09 5595
原创 Filebeat如何保证在日志文件被切割(或滚动rolling)时依然正确读取文件
我们的日志收集系统使用Filebeat来收集日志文件,部署时并没有多想,只配置了一下监控的日志文件名。上线几个月,日志监控从没出过问题。后来想想其实这里面有很多点需要考虑的,没出问题真是感谢Filebeat默认配置下想的就很周全。业务系统使用logback作为日志框架。通过查看源码,发现logback日志切割用的是JDK里File#renameTo()方法。如果该方法失败,就再尝试使用复制数据的方式
2017-12-18 12:13:18 15345 1
原创 程序员与公司政治
每家公司都有政治。如果你没感觉到,说明你目前还只是个写代码的工具。员工分两种,普通员工与核心员工。前者只是干活干活再干活,而后者会掌握很多“小道消息”,如哪位领导要离职、哪个项目快死了、某人是哪个领导 “宠儿”等等。两个同事表面上在一起共事,但背后极可能因为分别投靠了不同的领导而属于不同的利益集团。没人会重用一个对自己有意见、背后里吐槽自己的下属。领导只会提拔最能代表自己利益并坚定支持自己的
2017-12-18 01:52:37 1130 3
原创 Spark Streaming: 保存上一个批次数据的计算结果
在Spark Streaming计算模型下,有时候我们对当前 batch 数据的计算需要依赖上一个 batch 的计算结果,如广告系统中检索日志和曝光时间的join拼接。这时可以使用JavaStreamingContext#remember()方法完成。该方法需要一个时间参数,用来指定要”记住”多久时间内的 RDD 数据。但是悲剧的是,文档对被”记住”的数据在哪里、如何引入这些数据却没有任何说明,这
2017-12-08 19:25:41 7100 7
原创 MySQL Binlog监听服务延迟问题排查
问题现象线上部署了一个binlog监听服务,将自己伪装成从库,通过网络监听主库发来的row based binlog事件来进行一些业务上的处理。此前一直监听的是mysql A集群,一切正常;现在切换成B后,发现监听进度总是会落后,且平均每天落后1小时(当前发生的事件要到下一小时才能监听到)。通过观察日志,发现binlog落后时的现象为日志按固定时间间隔规律打印, 如总是每间200ms打印一次收到事件
2017-12-01 15:01:20 3714 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人