- 博客(29)
- 资源 (5)
- 收藏
- 关注
转载 搜索系统—搜索引擎的原理,架构与细节
1、全网搜索引擎架构与流程全网搜索引擎的宏观架构如上图,核心系统主要分为三部分(粉色部分):spider爬虫系统;search&index建立索引与查询索引系统,这个系统又主要分为两部分:一部分用于生成索引数据build_index;一部分用于查询索引数据search_index。rank打分排序系统。核心数据主要分为两部分(紫色部分):web网页库;index索引数据。 全网搜索
2017-09-26 11:39:25 9535 3
原创 MySQL系列—全文检索(fulltext)使用
1、创建全文索引(FullText index)旧版的MySQL的全文索引只能用在MyISAM表格的char、varchar和text的字段上。不过新版的MySQL5.6.24上InnoDB引擎也加入了全文索引,所以具体信息要随时关注官网。1.1、创建表的同时创建全文索引CREATE TABLE article ( id INT AUTO_INCREMENT NOT NULL PRIMARY K
2017-09-25 10:51:17 17982 1
原创 MySQL系列—全文检索(fulltext)介绍
一、概述MySQL中的全文检索是利用查询关键字和查询列内容之间的相关度进行检索,可以利用全文索引来提高匹配的速度。二、语法MATCH (col1,col2,...) AGAINST (expr [search_modifier])search_modifier: { IN BOOLEAN MODE | WITH QUERY EXPANSION }# 例如SELECT * FROM tab_nam
2017-09-25 09:54:53 889
转载 计数系统,架构与优化细节
一、需求缘起很多业务都有“计数”需求,以微博为例:微博首页的个人中心部分,有三个重要的计数:关注了多少人的计数;粉丝的计数;发布博文的计数。微博首页的博文消息主体部分,也有有很多计数,分别是一条博文的:转发计数;评论计数;点赞计数;甚至是浏览计数。在业务复杂,计数扩展频繁,数据量大,并发量大的情况下,计数系统的架构演进与实践,是本文将要讨论的问题。二、业务分析与计数初步实现典型的互
2017-09-24 19:39:55 581
转载 秒杀系统,架构优化思路
一、秒杀业务为什么难做im系统,例如qq或者微博,每个人都读自己的数据(好友列表、群列表、个人信息);微博系统,每个人读你关注的人的数据,一个人读多个人的数据;秒杀系统,库存只有一份,所有人会在集中的时间读和写这些数据,多个人读一个数据。例如:小米手机每周二的秒杀,可能手机只有1万部,但瞬时进入的流量可能是几百几千万。 又例如:12306抢票,票是有限的,库存一份,瞬时流量非常多,都读相同
2017-09-24 11:40:19 441
转载 ActiveMQ系列—ActiveMQ集群方案(下)(热备方案)
序:ActiveMQ高性能方案的不足那么有的读者可能会问,既然ActiveMQ的高性能方案中多个节点同时工作,在某个节点异常的情况下也不会影响其他节点的工作。这样看来,ActiveMQ的高性能方案已经避免了单点故障,那么我们为什么还需要讨论ActiveMQ的高可用方案呢?为了回答这个问题,我们先回过头来看看ActiveMQ高性能方案的一些不足。假设如下的场景:ActiveMQ A和AcitveMQ
2017-09-24 10:31:52 1944
转载 ActiveMQ系列—ActiveMQ集群方案(上)(高性能方案)
序:多节点方案集群方案主要为了解决系统架构中的两个关键问题:高可用和高性能。ActiveMQ服务的高可用性是指,在ActiveMQ服务性能不变、数据不丢失的前提下,确保当系统灾难出现时ActiveMQ能够持续提供消息服务,高可靠性方案最终目的是减少整个ActiveMQ停止服务的时间。ActiveMQ服务的高性能是指,在保证ActiveMQ服务持续稳定性、数据不丢失的前提下,确保ActiveMQ集群能
2017-09-22 19:22:25 1817
转载 ActiveMQ系列—ActiveMQ性能优化(下3)(消息存储方案 RDB)
11、关系型数据库存储方案从ActiveMQ V4版本开始,ActiveMQ就支持使用关系型数据库进行持久化存储——通过JDBC实现的数据库连接。可以支持的关系型数据库包括(但不限于):Apache Derby、DB2、HSQL、Informix、MySQL、Oracle、Postgresql、SQLServer、Sybase。下面向各位读者演示如何为ActiveMQ配置Mysql数据库服务。前提是
2017-09-22 10:25:47 728
转载 ActiveMQ系列—ActiveMQ性能优化(下2)(消息存储方案 LevelDB)
10、KahaDB存储方案 LevelDb是能够处理十亿级别规模Key-Value型数据持久性存储的C++ 程序库,由Google发起并开源。LevelDB只能由本操作系统的其他进程调用,所以它不具有网络性。如果您需要网络上的远程进程操作LevelDB,那么就要自行封装服务层。10.1、LevelDB基本结构LevelDB中的核心设计算法是跳跃表(Skip List),核心操作策略是对磁盘上的
2017-09-21 18:56:49 4152
转载 ActiveMQ系列—ActiveMQ性能优化(下1)(消息存储方案 KahaDB)
序1:存储方案配置在介绍ActiveMQ的存储方案之前,首先需要明确的是ActiveMQ中的几种“容量”描述:ActiveMQ的内核是Java编写的,也就是说如果服务端没有Java运行环境ActiveMQ是无法运行的。ActiveMQ启动时,启动脚本使用wrapper包装器来启动JVM。JVM相关的配置信息在启动目录的“wrapper.conf”配置文件中。各位读者可以通过改变其中的配置项,设置JV
2017-09-20 21:59:51 8211
转载 ActiveMQ系列—ActiveMQ性能优化(中3)(消费者和生产者性能总结)
8、消费者和生产者性能总结本小节我们介绍了基于ActiveMQ构建的消息队列系统中,生产者和消费者需要关注的重要性能点。但是整个ActiveMQ中的性能还需要各位读者在实际工作中,一点一点的去挖掘。这里我们根据已经介绍过的性能关注点进行总结:发送NON_PERSISTENT Message和发送PERSISTENT Message是有性能差异的。引起这种差异的原因是前者不需要进行持久化存储;但是这
2017-09-20 20:46:40 2317
转载 ActiveMQ系列—ActiveMQ性能优化(中2)(处理规则和优化)
4、消费者策略:Dispatch Async讨论完了消息生产者的关键性能点,我们再将目光转向消息消费者(接收者端);就像本小节开始时描述的那样,比起消息生产者来说消息消费者的性能更能影响ActiveMQ系统的整体性能,因为要成功完成一条消息的处理,它的工作要远远多于消息生产者。首先,在默认情况下ActiveMQ服务端采用异步方式向客户端推送消息。也就是说ActiveMQ服务端在向某个消费者会话推送消
2017-09-20 18:53:43 5175 1
转载 ActiveMQ系列—ActiveMQ性能优化(中1)(处理规则和优化)
序:处理规则概述在ActiveMQ单个服务节点的优化中,除了对ActiveMQ单个服务节点的网络IO模型进行优化外,生产者发送消息的策略和消费者处理消息的策略也关乎整个消息队列系统是否能够高效工作。请看下图所示的消息生产者和消息消费者的简要工作原理图:Producer既是消息生产者,作为一个发送消息的客户端它既可以使用同步消息发送模式,也可以使用异步的消息发送模式。另外,消息生产者在ActiveM
2017-09-20 18:00:39 5539
转载 ActiveMQ系列—JMS规范中的几个基本概念
由于ActiveMQ是JMS规范的完整实现,所以为了讲清楚ActiveMQ是如何进行存储和调度的,就需要首先说明JMS中和存储、调度有关的几个概念。它们是:消息收发模式(订阅-发布和负载均衡模式)、消息存储模式(持久化消息和非持久化消息)和订阅模型(持续订阅和非持续订阅)。1、订阅发布模式和负载均衡模式发布模式和负载均衡模式在ActiveMQ官方文档中的描述,他们的英文名称分别是Topics和Qu
2017-09-20 08:58:15 937
转载 ActiveMQ系列—ActiveMQ性能优化(上)(网络配置优化)
序:性能优化思路前面几篇文章中,主要介绍消息中间件ActiveMQ的安装和基本使用。从给出的安装配置和示例代码来看,我们既没有修改ActivieMQ服务节点的任何配置,也没有采用任何的集群方案。这种情况只适合各位读者熟悉ActiveMQ的工作原理和基本操作,但是如果要将ActivieMQ应用在生产环境下,上文中介绍的运行方式远远没有挖掘出它的潜在性能。系统的性能层次包括:代码级性能、规则性能、存储性
2017-09-20 08:32:55 8274
转载 ActiveMQ系列—JMS和协议间转换(代码示例)
JMS这套面向消息通信的 JAVA API 是一个和厂商无关的规范。通过JMS,我们能实现不同消息中间件厂商、不同协议间的转换和交互。这一小节我们就来讨论一下这个问题。如果用一张图来表示JMS在消息中间件中的作用话,那么就可以这么来画:首先您使用的MQ消息中间件需要实现了JMS规范;那么通过JMS规范,开发人员可以忽略各种消息协议的细节,只要消息在同一队列中,就能够保证各种消息协议间实现互相转换。下
2017-09-19 15:06:06 1079
转载 ActiveMQ系列—ActiveMQ中的Queue和Topics
如果您细心的话,在ActiveMQ提供的管理页面上已经看到有两个功能页面:Queue和Topic。Queue和Topic是JMS为开发人员提供的两种不同工作机制的消息队列。 在ActiveMQ官方的解释是:1、Topics In JMS a Topic implements publish and subscribe semantics. When you publish a message i
2017-09-19 13:58:56 2348
转载 ActiveMQ系列—使用示例(在ActiveMQ中传递Stomp消息)
下面我们使用ActiveMQ提供的JAVA 客户端(实际上就是ActiveMQ对JMS规范的实现),向ActiveMQ中的Queue(示例代码中将这个Queue命名为’test’)发送一条Stomp协议消息,然后再使用JAVA语言的客户端,从ActiveMQ上接受这条消息:1、使用ActiveMQ的API发送Stomp协议消息import java.net.Socket;import java.u
2017-09-19 12:01:40 4546 1
原创 ActiveMQ系列—ActiveMQ安装
1、下载软件您可以到Apache ActiveMQ的官网下载安装包:https://activemq.apache.org/download-archives.html。这里我们示例在CentOS 7 下的安装过程,所以下载Linux下的压缩包即可(http://www.apache.org/dyn/closer.cgi?path=/activemq/5.13.2/apache-activemq-5
2017-09-19 11:22:30 883
转载 ActiveMQ系列—JMS规范
JMS不是消息队列,更不是某种消息队列协议。JMS是Java消息服务接口,是一套规范的JAVA API 接口。这套规范接口由SUN提出,并在2002年发布JMS规范的Version 1.1版本。JMS和消息中间件厂商无关,既然是一套接口规范,就代表这它需要各个厂商进行实现。好消息是,大部分消息中间件产品都支持JMS 接口规范。也就是说,您可以使用JMS API来连接Stomp协议的产品(例如Acti
2017-09-19 09:44:58 675
转载 ActiveMQ系列—消息协议(AMQP协议)
AMQP协议的全称是:Advanced Message Queuing Protocol(高级消息队列协议)。目前AMQP协议的版本为 Version 1.0,这个协议标准在2014年通过了国际标准组织 (ISO) 和国际电工委员会 (IEC) 的投票,成为了新的 ISO 和 IEC 国际化标准。目前支持AMQP的软件厂商包括:1、协议概览在网络上讲解AQMP协议的文章已经有很多了,您可以在百度、G
2017-09-18 22:24:50 9600 3
转载 ActiveMQ系列—消息协议(Stomp协议)
1、定义Stomp协议,英文全名Streaming Text Orientated Message Protocol,中文名称为 ‘流文本定向消息协议’。是一种以纯文本为载体的协议(以文本为载体的意思是它的消息格式规范中没有类似XMPP协议那样的xml格式要求,你可以将它看作‘半结构化数据’)。目前Stomp协议有两个版本:V1.1和V1.2。一个标准的Stomp协议包括以下部分:命令/信息关键字、
2017-09-18 21:50:20 3266 2
转载 ActiveMQ系列—消息协议(XMPP协议)
叙述:基本概念1、消息首先有三个基本概念在开篇前我们需要进行讨论:消息、消息协议、消息队列。消息既是信息的载体,这个描述相信各位读者都能够明白。为了让消息发送者和消息接收者都能够明白消息所承载的信息(消息发送者需要知道如何构造消息;消息接收者需要知道如何解析消息),它们就需要按照一种统一的格式描述消息,这种统一的格式称之为消息协议。所以,有效的消息一定具有某一种格式;而没有格式的消息是没有意义的。而
2017-09-18 21:32:44 1119
转载 RabbitMQ系列—场景应用(电子政务平台:驾驶人违法记录同步功能)
一、业务场景说明只是一个为了汇总全国机动车违法记录而设计的多系统数据同步功能。最主要的功能是进行违法记录的上传以及在各省间同步跨省违法记录。在进行架构设计之前,我们首先需要了解一些关于整个系统业务背景:任何系统设计都不能脱离系统实际业务背景而存在!首先整个系统分为全国系统和32个省级系统:由于每个省都有符合该省实际情况的、处理过程完全不同的违法记录处理操作。并且每个省的驾管系统电子化推进情况也不尽
2017-09-18 18:54:46 618
原创 RabbitMQ系列—RabbitMQ 代码演示
以下代码演示了如何使用RabbitMQ的客户端开发包,进行消息生产和消费。RabbitMQ的客户端开发包可以在RabbitMQ官网进行下载(http://www.rabbitmq.com/java-client.html),也可以使用Mavean官方库进行导入:<dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-
2017-09-18 18:15:01 621
转载 log4j系列—log4j.properties配置详解与实例-全部测试通过
################################################################################ #①配置根Logger,其语法为: # #log4j.rootLogger =[level],appenderName,appenderName2,... #level是日志记录的优先级,分为OFF,TRACE,DEBUG,INF
2017-09-18 16:12:23 709
原创 RabbitMQ系列—RabbitMQ 安装
RabbitMQ的安装过程非常简单:由于RabbitMQ是基于Erlang语言开发并运行的,所以安装RabbitMQ的第一步是安装Erlang运行环境。您可以在https://www.erlang-solutions.com/resources 下载最新Erlang版本进行安装(注意不同的RabbitMQ版本有不同的Erlang最低版本要求,笔者使用的RabbitMQ版本为V3.5.4,Erlang
2017-09-18 12:00:40 4112
原创 RabbitMQ系列—RabbitMQ介绍
下面我们来看看RabbitMQ官网上对这款消息中间件软件的特性介绍:1、Reliability(可靠性) RabbitMQ offers a variety of features to let you trade off performance with reliability, including persistence, delivery acknowledgements, publish
2017-09-18 11:55:56 691
可复用的自定义BaseAdapter
2017-03-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人