第一个任务 -- 店铺爬虫

关于这个项目,首先需求比较简单.或者说单一吧.唯一要做的就是将PHP传来的任务给做完.没有多余的爬取,只需要爬取一个页面上的商品描述和商店的描述.唯一好玩的一点就是需要在一周时间内 爬取180万url左右的数据.同时还要考虑对面的防刷设置.分配给的测试资源有两台16核32G的服务器. 很显然.爬虫的关键在于VPS的分配,因为一个ip访问某个网站的频率有限制.在有限的时间,要想爬取更多的网页,就需要多个vps,要多少呢.理论上,服务器的出口带宽为1000Mb,购买的VPS带宽为2Mb, 所以,考虑充分利用带宽,则需要500个.但事实上,我们的需求并没有如此之高.在实际测试中,发现最终的瓶颈在cpu上,频繁的字符串匹配,导致了cpu的飙涨.因为考虑到之后的维护,我用了整页面的 正则进行匹配,这样,之后的修改会方便很多.所以代码里会有如下的正则表达式: 看上去很... [阅读全文]

JMS阶段性总结

写在开头 从一开始接触JMS到现在已经有一个多月了,看完了《ActiveMQ In Action》还有《Java消息服务》这两本书,也有一点心得。 不过最近的一段时间是期中考试,所以很多的时间耽搁了。所以到现在才开始书写这篇文章。 首先一点,为什么要使用JMS 很多时候,我们的程序并不需要使用JMS,或者说消息机制并不需要使用到这个技术,常常使用方法的相互调用即可实现,但为什么需要使用JMS。其实很大程度上是为了追求水平的扩展。举个例子,如果一个服务,或者是一个业务,需要频繁的调用一段函数,而这个函数会形成阻塞,我们肯定会使用分布式的方法进行横向的扩展。 还有一个重要的原因就是解藕。之前,我们的业务系统都耦合在一个程序中,我们需要进行一定的解藕,重新基于消息进行架构,所以,我们采用了JMS。用来进行业务上的解藕。 简单的说,生产者只负责生产消息,并且将... [阅读全文]

使用ActiveMQ完成Request和Reply模式

这几天一直在学习JMS标准,也在看《activemq in action》这本书,当中有几个比较好的例子我这边来分享下。 首先是,ACTIVEMQ的本机环境搭建问题。关于这个,我建议大家阅读这篇文章:Using ActiveMQ > Getting Started 一般介绍如何启动ActiveMQ,都是运行activemq脚本,但是我喜欢用的是activemq-admin这个脚本,原因是,我可以看到监控的 状态。这样就可以做一些简单的判断了,比如当前系统的运行状况,和负载情况。 怎么判断你的ActiveMQ已经可以正常运行了呢,你只需要打开http://localhost:8161,当然这是默认设置的效果,你也可以 进行端口的修改。如果你看到了ActiceMQ的界面,说明MQ已经启动完成。你可以开始编写代码了。 先申明一点,... [阅读全文]