Akka实战:开发一个多线程新闻爬虫
代码:https://github.com/yangjing/crawler-service 使用Scala开发一个多线程爬虫,利用Akka库来管理多个爬虫任务的分散和聚合操作。同时使用scheduleOnce来设置爬取任务在指定时间内完成。详细需求如下: 可同时从多个新闻源(搜索引擎)检索新闻 已爬取过的新闻存库,第二次访问时直接从库里读取 提供duration参数,调用方可设置调用超时。超时
代码:https://github.com/yangjing/crawler-service 使用Scala开发一个多线程爬虫,利用Akka库来管理多个爬虫任务的分散和聚合操作。同时使用scheduleOnce来设置爬取任务在指定时间内完成。详细需求如下: 可同时从多个新闻源(搜索引擎)检索新闻 已爬取过的新闻存库,第二次访问时直接从库里读取 提供duration参数,调用方可设置调用超时。超时
随着业务和数据的需要,我们引入了Spark。Spark对Python的支持还是挺好的,但毕竟它还是使用Scala开发的,且现有的API并没有100%覆盖Python。所以就有了这篇文章,让Python程序员可以接触Scala这门更高(级)、更快(速)、更强(大)的(奥运精神)语言。 Scala兼具Python样的开发效率,但又有Java般的执行性能,真是一不可多得的神器!(当然,鱼和熊不可兼得,S
并发编程是很困难的,特别是在你没有很好的设计与抽像你的功能层次时。传统的并发解决方案是采用多线程和共享变量,这使得随着代码的增加你很难找到错误根源。 Scala中采用了更好的方案,它不是只基于更低层次的线程的。Scala为用户提供了更高级的抽象:Futures和Promises(Akka还提供了基于actor模式的编程范式,是一种更高层次的并发编程抽象。本文主要讲解Futures和Promises
使用Akka-Http构建REST风格的微服务,服务API应尽量遵循REST语义,数据使用JSON格式交互。在有错误发生时应返回:{"errcode":409,"errmsg":"aa is invalid,the ID is expected to be bb"}类似的JSON错误消息。 代码: https://g
分散、聚合模式:简单说就是一个任务需要拆分成多个小任务,每个小任务执行完后再把结果聚合在一起返回。 代码 https://github.com/yangjing/akka-action 实例背景本实例来自一个真实的线上产品,现将其需求简化如下: 传入一个关键词:key,根据key从网上抓取相关新闻 可选传入一个超时参数:duration,设置任务到期时必须反回数据(返回实际已抓取数据) 若超时
JVM程序员书单 为什么是JVM程序员书单,因为现在Java已经不再单指Java编程语言了,而是说整个Java生态环境和基于JVM平台的各种虚拟机语言。如:Scala、Clojure、Groovy等。 《软件框架设计的艺术》 这是Netbeans的创始人写的一本很有价值的书,里面的边角细节也很有料。国内市场上没有对这本书给予应给的赞誉。 《Effective Java 第二版》 被称为Java领域
一般在应用部署中都不会直接把Web Server(如:Tomcat、Jetty等)暴露给用户,我们会在Web Server前面再加一个反向代理。这篇文章介绍的就是怎样设置Nginx来做反向代理。 Nginx安装以Ubuntu 14.04为例(其它系统请自行查找安装方法)。官方安装文档在:http://nginx.org/en/download.html 1234567curl http://ng
集群安装安装一个两个结节的简单集群,其中一个Master,一个Slave。两台机器的网络分别是: 12192.168.31.101 sc-007192.168.31.48 scdev-001 Master配置 123456789cluster: name: sc0node: name: sc-007 master: truenetwork: host: 192.168.31.101
Install Cassandra1234567sudo mkdir -p /usr/app/cassandrasudo chown -R $(whoami) /usr/appcd /usr/app/cassandrawget http://apache.fayea.com/cassandra/2.1.11/apache-cassandra-2.1.11-bin.tar.gztar zxf apa
随着项目的运营,收集了很多的用户数据。最近业务上想做些社交图谱相关的产品,但因为数据很多、很杂,传统的数据库查询已经满足不了业务的需求。试着用Spark来做,权当练练手了。 安装Spark因为有Scala的开发经验,所以就不用官方提供的二进制包了,自编译scala 2.11版本。 下载Spark:http://ftp.cuhk.edu.hk/pub/packages/apache.org/spar
当前代码tag: v0.0.1,https://github.com/yangjing/wechat-meal/tree/v0.0.1 微信公众号提供了详尽的API文档说明,提供了明文和加密两种接入方式。这里,我们选择加密的接入方式微信公众号接入指南。 本此实战的代码部署到了Heroku,读者也可以下载代码尝试部署到Heroku并连接微信公众号。本章末尾讲讲述Heroku的部署及怎样与微信公众号连
近来学习Play 2和Akka,想着找一个实战性的项目练练手。正好近来公司提供晚餐,每天看着程序媛拿着手机一个一个的找人点餐,耗时多、且容易点漏、又打断了自身的工作……哥觉得小妹儿工作好累啊。作为一个全栈工程师,为公司小妹儿减轻工作负担义不容辞啊。 就在想,就在想……用什么方法可以简化这个点餐流程呢?把玩着手中的微信,看到同事们在公司群里胡吹海吹,Duang!有了,就做一个基于微信公众号的点餐系统
代码地址:https://github.com/yangjing/scala-applications/tree/master/email-server 应用功能是实现一个基于队列的邮件发送服务,每个邮件发送者(使用smtp协议)作为一个sender。多个sender可以在同一个组(group)中,每个组中的sender将串行发送邮件。 邮件内容可以通过REST API提交,以可以使用JMS发布到
Gatling下载是一款开源的性能测试工具,提供简洁、强大的DSL API编写测试套件,支持插件扩展,且自动生成美观、明了的HTML测试报告。 Gatling现在最新版本是:2.1.7。需要scala 2.11支持。 Gatling有多种执行方式,可以使用官话的bundle包,使用gatling.sh脚本执行,也可以使用使用gatling-sbt下载在Sbt工程里执行,也可以集成到如Jenkins
Play 2: https://playframework.com ReactiveMongo: http://reactivemongo.org 代码在: http://git.oschina.net/socialcredits/social-credits-activity-service .pro_name a{color: #4183c4;} .osc_git_title{bac
安装下载 Spark 1.4.1 1wget -c http://www.interior-dsgn.com/apache/spark/spark-1.4.1/spark-1.4.1.tgz 编译Spark,使用 scala 2.11 12./dev/change-version-to-2.11.shmvn -Dscala-2.11 -DskipTests clean package 运行 s
本文简单的记录的 Jenkins 的安装、配置和一些插件的使用。 git: Git Plugin maven: Maven Project Plugin sbt: sbt plugin Install到 https://jenkins-ci.org/ 下载最新版,放到 tomcat/webapp 启动即可。安装非常的简单。 访问 http://localhost:8080/jenkins 目录
项目地址:https://github.com/yangjing/play-seed play 2 slick 3 slick-pg 0.9 scalatest 2 gulp redis postgresql 9.4 实现了简单的用户认证和session控制功能。采用redis来保存session值。自定义play action和play filter来判断session有效性和重设sessi
REST: https://zh.wikipedia.org/zh/REST Play2: http://playframework.com/ Redis: http://redis.io/ Access Token: https://en.wikipedia.org/wiki/Access_token 最近要设计一套API以提供给接入商使用(以下简称corp),正好可使用Play2对REST
记录使用Scala开过程中的一些小技巧和陷阱 Future 不要在Future上使用filter方法。