基于 ElasticSearch 的日志统计反爬虫策略

之前在 接口限流 中提到过,用 rate limit 的方式可以起到反爬虫的效果,但是一旦遇到利用代理 IP 来爬你网站的时候,就会遇到问题了 这时候,你可以付钱买服务解决,只是,如果有时间与精力,也可以考虑自己去试试,就当是一次锻炼。 用日志去解决爬虫,也是一种简单而有效的做法,可以使用 ElasticSearch 提供的 aggregate 功能,去筛选...

Read More

ELK 最近的一些总结

不要执迷于登录服务器敲命令,而是用自动化脚本完成所有的事情各种博客,包括我自己,一眼望过去,全是教你一步步怎么搭建某个服务,其实这是一个 『反模式 anti-pattern』。 为什么? 首先,不可重复,他人在他们的服务器上搭建的时候,环境有可能不一致,相同的命令,可能会有完全不同的效果; 其次,浪费时间,当你登录服务器一步一步操作,意味着你只能一步步操作...

Read More

《目标》读后感

最近刚看完了《目标》,是《凤凰系统》里面提到的一本书,同样是小说题材,有趣而容易理解。 书的核心点在于 『 TOC 制约法』 ( TOC 即 Theory of Constraints ),简单来说,就是需要发现与改进系统中的 『瓶颈点』。 故事简介作为工厂厂长的小说主人公 Rogo ,通过大学老师 Jonah 的指导,突破常规,大胆革新,运用 TOC 方...

Read More

异构数据库之数据同步实践

一般来说,我们的不少业务中,需要用到数据同步,而其中涉及到的本质无非是 『数据一致性』。首先,能想到的数据同步的例子肯定是数据库,由于数据库领域存在的 CAP 理论,一定会有数据同步的过程来达到数据一致性,只是那是属于相同数据库之间的同步,在不同数据库的情况下同步数据的话,叫做 『异构同步』。 不过目前先放下一致性原理,以现有的一个业务场景为例,来说说如何实...

Read More

持续交付的实践与思考

一直以来都在做团队里的基础性工作,直到最近,成果开始慢慢展现,尤其是上周刚看完《持续交付》这本书后,总结已经做的工作,又有了些新的感悟。 过去一段时间,我都是围绕着 Gitlab 的一些功能来开展的,从最开的代码与应用配置管理,然后到 CI 系统,提升代码质量,到最后完整的持续交付流程提升团队工作效率。 那么我就结合《持续交付》这本书的内容,正文开始。 为什...

Read More

应用配置管理实践

自从 上次 简单提到应用配置管理的几种方式以来,我都在尝试不同的方式,到目前为止,仍觉得 ** 剥离单独管理 ** 加上 ** 动态配置服务器 ** 的方式最好用,接下来谈谈原因以及具体实践。 原因记录变更与审计其实这个涉及到 CD,即持续交付的范畴,为了保证线上应用环境的稳定性,如果配置无法追踪的话,即意味着你不能在出问题的时候,快速定位原因,处理问题。 ...

Read More

APM 以及 Node.js 探针原理

关于 APMAPM 能帮企业以及应用开发者提供很多帮助,它的功能集中在监控、分析、优化上面,从应用中部署探针直接采集信息,集中处理,从多维度形成报告,简而言之:** 相当于给了一副看到应用程序不足的眼镜 **。 多余的不再赘述,可以看文末参考链接。 几个选择目前几个好用的,并且支持 Node.js 应用的: NewRelic OneAPM Tingyun ...

Read More

Git 协作流程

前言在使用 SVN 的时代,一旦一个文件被锁定,其他人都无法修改的情况时常出现,着实让人头痛。Git 横空出世之后,大家因为它带来的便捷性非常有价值纷纷改为这个:它有一系列非常有意义的功能:回滚与重复修改、强大的分支以及 tag 管理、更清晰的历史修改追踪等等。只是,Git 也是由人来使用的,当单个人使用时,无论怎么折腾都没事,而当多人合作开发的时候,就会有...

Read More

Node Version Manager

关于NVM,简单来说,就是管理 node 版本的,自从 Node.js 跟 io.js 合并之后,node 版本迭代就非常快了。然而这时候,我们可能会需要用到多个 node 版本:旧的用来兼容以前的老项目,新的用来应用到新项目;另外线上升级 node 版本的话,也需要很方便去操作。 三个选择creationix/nvm老牌的 NVM,一般来说 No...

Read More

谈谈如何在创业公司里面工作

年关快过了,大家基本上留的留,走的走,有之前不少朋友去了创业公司,再加上最近接触了不少来面试的新人,他们不少来自于创业公司,我面试了他们之后很有感触。 毕竟我经历过创业公司从生到死,因此,来谈谈如何在创业公司工作。 两个故事近几年来,互联网行业蓬勃发展,尤其是去年,2014 年开始,各种 O2O 公司站在了风口上,于是你也风风火火得加入了一家 O2O 的公司...

Read More

谈谈如何当一名合适的面试官

缘起今天项目负责人跟我一起面试了一个候选人,他说沟通能力不行,直接 pass,而我却不死心,因为没问清楚技术问题,于是直接叫他做个系统设计题,哎…… 直接给我转移话题,麻蛋。但是,我也浪费了负责人的时间,要是上次我直接说这人沟通能力不行,也就没今天的事了。 另外,今天晚上,跟一同行交流『如何面试』的问题,恩,发现自己这块儿一直没有重视起来。 正文开始人才的重...

Read More

如何快速生成 iTerm2 Dynamic Profile

日常服务器运维中,很多情况下,我们得登录到远程,当服务器一旦多了之后,管理还是挺麻烦的。之前一直用的 SSH Shell 这个小工具,一直用的挺顺畅,直到看到它在不断接收文本太多之后一次又一次奔溃,终于打算放弃。 后来仔细回想,似乎 iTerm 2 的 Profile 的就能达到类似的效果: 新建 Profile,在 “Send text at start...

Read More

2016 年总结

在这个跨年的时刻,躺在床上,听着音乐,想着快过去的 2016,以及即将到来的 2017。 2016 回顾年初经历了加入了一年半的创业公司倒闭,开始到处找工作。然后,发现自己似乎落后这个世界好远(因为差点把自己按 15k 给买了 ==#),毕竟当自己专注于创业这件事的时候,对外界似乎关注太少。 不过,正是这创业期间不断逼自己成长,让我能很快...

Read More

进程管理器 pm2 运维小结

pm2 这个进程管理器是越来越好用了,最新的版本已经开始支持 docker,不过我不看好,docker 镜像内的 node 进程挂掉就应该让集群管理器去处理,简单有效,并且也准守 Fail fast 这个准则。 正文开始,我把最近用到的几个点总结下,(之前的 #4 也有一些总结) 。 使用 yml 配置文件还在使用 json 文件来配置么?放弃吧,yml 更...

Read More

关于公共服务的思考

前几日与一同行交流,一一交流下来,发现什么叫『固步自封』,跟外界交流少了,很多东西便会搞不清楚,甚至脱离主流。 比如最近一直在为团队做基础设施方面的工作,但是,会有一种吃力不讨好的感觉,虽然搭建完毕之后自己会很很有成就感,但是随之而来的维护成本却是很让人头疼。 是的,『能花钱的,就不要花时间』。 我也想反驳,但后来仔细回想,没有立即反驳是因为我认同这句话。我...

Read More