微服务轮子项目(11) - 实时搜索系统设计

简介: 微服务轮子项目(11) - 实时搜索系统设计

1.引言

传统的关系型数据库在存储大数据量时需要进行分库分表,但是分库分表后又很难实现复杂查询的需求,所以这个时候就需要引入异构数据源来做OLAP的场景。

搜索系统的目标

  • 海量请求:支持亿级请求
  • 秒级响应:复杂查询秒级内出结果
  • 实时搜索:数据被修改后,能实时搜索到最新数据

2. 架构

2.1 海量请求和秒级响应

使用ElasticSearch来实现这个目标,是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。能够达到实时搜索,稳定,可靠,快速,安装使用方便。关于ES的安装部署可查看 非docker安装部署

2.2 实时增量同步

阿里的开源项目Canal,就是用来解决这个问题的,Canal项目利用了MySQL数据库主从同步的原理,将Canal Server模拟成一台需要同步的从库,从而让主库将binlog日志流发送到Canal Server接口。Canal项目对binlog日志的解析进行了封装,我们可以直接得到解析后的数据,而不需要理会binlog的日志格式。而且Canal项目整合了zookeeper,整体实现了高可用,可伸缩性强;关于Canal的原理详细介绍和安装部署可查看 Canal介绍

2.3 MQ

Canal收集的binlog数据支持直接发送到MQ中目前支持RocketMQ和Kafka,用于削峰填谷,如果并发不大的情况下可以省略这一层。

2.4 Adapter

Canal提供各种Adapter组件用于binlog转换,这里利用Adapter实现消费MQ的binlog信息自动转换为索引数据存到ES中,关于Adapter的安装和用法可查看 实时同步数据到ElasticSearch,在同步之前需要先创建ES的索引。

2.5 搜索服务

es客户端的api比较复杂难懂,通过通用的搜索服务对外提供restful的API接口供业务系统使用,屏蔽底层的复杂性。

目录
相关文章
|
4月前
|
Dubbo Java 应用服务中间件
微服务框架(十)Maven Archetype制作Dubbo项目原型
  此系列文章将会描述Java框架Spring Boot、服务治理框架Dubbo、应用容器引擎Docker,及使用Spring Boot集成Dubbo、Mybatis等开源框架,其中穿插着Spring Boot中日志切面等技术的实现,然后通过gitlab-CI以持续集成为Docker镜像。   本文为Maven Archetype的制作及使用,使用archetype插件制作Dubbo项目原型
|
2月前
|
微服务
jeecg微服务项目调用接口报错Token验证失效的解决方法
jeecg微服务项目调用接口报错Token验证失效的解决方法
31 0
|
2月前
|
SpringCloudAlibaba Java 持续交付
【构建一套Spring Cloud项目的大概步骤】&【Springcloud Alibaba微服务分布式架构学习资料】
【构建一套Spring Cloud项目的大概步骤】&【Springcloud Alibaba微服务分布式架构学习资料】
169 0
|
20天前
|
监控 数据可视化 安全
智慧工地SaaS可视化平台源码,PC端+APP端,支持二开,项目使用,微服务+Java++vue+mysql
环境实时数据、动态监测报警,实时监控施工环境状态,有针对性地预防施工过程中的环境污染问题,打造文明生态施工,创造绿色的生态环境。
15 0
智慧工地SaaS可视化平台源码,PC端+APP端,支持二开,项目使用,微服务+Java++vue+mysql
|
2月前
|
Cloud Native Dubbo Java
如何确定微服务项目中Spring Boot、Spring Cloud、Spring Cloud Alibaba三者之间的版本
如何确定微服务项目中Spring Boot、Spring Cloud、Spring Cloud Alibaba三者之间的版本
31 0
|
2月前
|
XML Java 数据格式
springboot 微服务项目如何集成 html 页面
springboot 微服务项目如何集成 html 页面
29 0
|
4月前
|
Java Docker 微服务
微服务框架(三十一)Docker项目发布流程
此系列文章将会描述Java框架Spring Boot、服务治理框架Dubbo、应用容器引擎Docker,及使用Spring Boot集成Dubbo、Mybatis等开源框架,其中穿插着Spring Boot中日志切面等技术的实现,然后通过gitlab-CI以持续集成为Docker镜像。 本文为Docker项目发布流程 本系列文章中所使用的框架版本为Spring Boot 2.0.3-RELEAS...
|
4月前
|
微服务
|
5月前
|
微服务
畅购商城4.0(SpringCloud微服务项目)【一】:需求分析&系统设计
畅购商城4.0(SpringCloud微服务项目)【一】:需求分析&系统设计
69 0
|
5月前
|
微服务
微服务项目之电商4.0技术架构图
微服务项目之电商4.0技术架构图
245 0