0%

Storm简介

Storm是一个开源的分布式实时计算系统,可以简单、可靠的处理大量的数据流。
而且支持水平扩展,具有高容错性,保证每个消息都会得到处理。
Storm处理速度很快(在一个小集群中,每个结点每秒可以处理数以百万计的消息)。
Storm的部署和运维都很便捷,更为重要的是可以使用任意编程语言来开发应用。

目前国内一般采用阿里巴巴开源的JStorm版本;


阅读全文 »

You can build a simple rules engine yourself. All you need is to create a bunch of objects with conditions and actions, store them in a collection, and run through them to evaluate the conditions and execute the actions.
-Martin Fowler


阅读全文 »

JMS即Java消息服务(Java Message Service)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。
Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。

JMS (Java Message Service) is an API that provides the facility to create, send and read messages。
It provides loosely coupled(松耦合), reliable(可靠) and asynchronous(异步) communication。


阅读全文 »

Elasticsearch V2.3.4 集群部署记录:3个Node,6个Shard,2个Replica,能保证一台服务器宕机服务还能正常运行,且后期容易扩展到6个Node;


阅读全文 »

Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎。
Lucene非常复杂,你需要深入了解检索的相关知识来理解它是如何工作的。Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。
不过,Elasticsearch不仅仅是Lucene和全文搜索,我们还能这样去描述它:

  • 分布式的实时文件存储,每个字段都被索引并可被搜索
  • 分布式的实时分析搜索引擎
  • 可以扩展到上百台服务器,处理PB级结构化或非结构化数据
    而且,所有的这些功能被集成到一个服务里面,你的应用可以通过简单的RESTful API、各种语言的客户端甚至命令行与之交互。

在Elasticsearch中,文档归属于一种类型(type),而这些类型存在于索引(index)中,类比传统关系型数据库:

Relational DB -> Databases -> Tables -> Rows -> Columns
Elasticsearch -> Indices -> Types -> Documents -> Fields

Elasticsearch集群可以包含多个索引(indices)(数据库),每一个索引可以包含多个类型(types)(表),每一个类型包含多个文档(documents)(行),然后每个文档包含多个字段(Fields)(列)。


阅读全文 »

Elasticsearch 架构以及源码概览

开源实时日志分析 ELK 平台由 ElasticSearch 、Logstash 和 Kiabana 三个开源工具组成。
官方网站

  • Elasticsearch 是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制, restful 风格接口,多数据源,自动搜索负载等。
  • Logstash 是一个完全开源的工具,他可以对你的日志进行收集、分析,并将其存储供以后使用(如,搜索)。
  • kibana 也是一个开源和免费的工具,他 Kibana 可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。

安装配置

Docker…

Neo4j图数据库的索引采用的是Lucene全文索引,特别是LegacyIndex部分,需要深入了解Lucene进行索引定制,之前以IK分词在Solr中建索引和检索浅尝辄止,对Lucene也是停留在概念层。
Solr对Lucene商业封装后的易用性很强,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面。Solr的封装屏蔽了许多技术细节,但是对于开发人员来说,最好还是自下而上循序渐进比较好。
lucene(全文检索引擎工具包)>solr(企业级搜索应用服务器)>nutch(分布式检索引擎)和打Boss一样,得一个个来。


阅读全文 »

数据库检索效率时,一般首要优化途径是从索引入手,然后根据需求再考虑更复杂的负载均衡、读写分离和分布式水平/垂直分库/表等手段;
索引通过信息冗余来提高检索效率,其以空间换时间并会降低数据写入的效率;因此对索引字段的选择非常重要。

  • Neo4j可对指定Label的Node Create Index,当新增/更新符合条件的Node属性时,Index会自动更新。Neo4j Index默认采用Lucene实现(可定制,如Spatial Index自定义实现的RTree索引),但默认新建的索引只支持精确匹配(get),模糊查询(query)的话需要以全文索引,控制Lucene后台的分词行为。
  • Neo4j全文索引默认的分词器是针对西方语种的,如默认的exact查询采用的是lucene KeywordAnalyzer(关键词分词器),fulltext查询采用的是 white-space tokenizer(空格分词器),大小写什么的对中文没啥意义;所以针对中文分词需要挂一个中文分词器,如IK Analyzer,Ansj,至于类似梁厂长家的基于深度学习的分词系统pullword,那就更厉害啦。

本文以常用的IK Analyzer分词器为例,介绍如何在Neo4j中对字段新建全文索引实现模糊查询。


阅读全文 »

# IDE
Hbuild apiclound:http://www.dcloud.io/
 
# node.js
Node.js是一个事件驱动I/O伺服端JavaScript环境,基于Google的V8引擎。目的是为了提供撰写可扩充网络程序,如Web服务。Node.js并不是在Web浏览器上执行,而是一种在服务器上执行的Javascript伺服端JavaScript。Node.js实作了部份CommonJS规格(Spec)。Node.js包含了一个互动测试REPL环境。[wiki]
 
# npm
npm 是 node.js 用来下载及安装套件的工具
 
# bower(弃用)
bower 由 Twitter  团队研发,能自动下载安装 CSS 及 JavaScript 套件,并可自动处理相依性,角色与 NuGet 相当
 
# grunt
Grunt 是一个 Task Runner,常用来执行 JS/CSS 打包压缩、SASS/LESS/CoffeeScript 编译、单元测试… 等工作,常被拿来当成前端开发自动化的引擎。
 
# Gulp
用来简化 Grunt 设定,透过 gulpfile.js 按排作业流程:task, run, watch, src, dest
npm -g install gulp
npm install --save-dev gulp (安装到项目目录,限定开发才用到)
npm install gulp-compass --save-dev (gulp-compass 是常用 Gulp 外挂,内含大量 Mixin 定义)
一种常见应用是让 Gulp 透过 watch 目录,一旦档案发生异动,就立即启动编译、打包等动作,实现连续整合的目标。


 

Neo4j采用Neo4j Spatial插件实现空间索引,Neo4j Spatial可使用API或Cypher执行空间查询操作,另作为插件可部署于GeoServer与uDig;与Oracle/MySQL Spatial Extention/MongoDB 2dSphere等空间模块相比,这种结合关系与空间的分析更值得尝试!


阅读全文 »

团队一直有小伙伴顶着数据库相关的工作,ETL数据整合分析事情多了,研发开发工作相应减少,终于有机会也来写写存储过程了。
以SP进行SQL业务逻辑封装,执行性能能大大提高,在注意合理拆分SP、SQL书写简洁规范和注释到位的情况下,也能做到易于维护。
特别是对于海量数据分析追求时效性的业务,效率第一,就算逻辑复杂不易维护也得认。如Hibernate VS Mybatis,产品 VS 项目,现实世界丰富多彩,存在即合理。


阅读全文 »