赞
踩
在这里稍微纠结了一下,有没有必要搞ES?
主要的纠结点在于,一个人要维护一个完整的体系是要花比较多精力的,所以只能挑最核心的、必不可少的领域进行研究、使用和维护。在数据库上,我已经铺了一些
序号 | 名字 | 作用 |
---|---|---|
1 | Mongo | 除了作为非结构的数据存储,很重要的一个作用是承载算法的参数(用json存字典很方便)。 |
2 | Neo4j | 算是图库的不二选择吧,缺点是不能存层级式字典吧。但是存储和查询亿级别的业务是很轻松的。 |
3 | Redis | 作为内存库,可以快速,方便的沟通服务/算法的缓存,我也用来做队列。本来用RabbitMQ,后来发现还是不太好用;kafka对我来说又太重了点。 |
4 | Mysql | 用来存表格 ,主要还是和其他传统的服务对接。 |
5 | SQLite | 最大的作用可能是未来的设备数据库 |
以上的数据库我都写了专门的对象进行交互,所以要确认增加一个数据库还是要花代价的。从实际使用上,我并不会对外提供大批量的并发查询服务,所以用Mongo是完全够的;从理论上,比较好的使用方式是Mongo作为Master进行写入,ES集群从Mongo同步数据,然后对外提供大量并发查询。可以简单认为,Mongo适合读写,而ES针对读做特别的优化。
研究ES有两个好处:
最大的坏处就是花时间了,所以这次基本上只打算把之前实现过的基础功能搬过来,主要目的就是实现DNWS的元数据检索就好了,大约只会花2个自然天。
在统一端口分配中,将24005分配给ES
序号 | 容器名 | 端口 | 说明 |
---|---|---|---|
6 | es_24005 | 24005 | 检索服务数据库,用于元数据内容检索。目前主要存储和搜索 |
简单来说,单机情况下使用9200端口就可以了,所以只分配一个端口给这个微服务。
9200 是ES节点与外部通讯使用的端口。它是http协议的RESTful接口(各种CRUD操作都是走的该端口,如查询:http://localhost:9200/user/_search)。
9300 是ES节点之间通讯使用的端口。它是tcp通讯端口,集群间和TCPclient都走的它。(java程序中使用ES时,在配置文件中要配置该端口)
将原来使用的镜像打包,传到自己的仓库,这样以后就可以复用了
docker tag 5acf0e8da90b registry.cn-hangzhou.aliyuncs.com/YOURWAREHOUSE/es:v1
docker push registry.cn-hangzhou.aliyuncs.com/YOURWAREHOUSE/es:v1
对于中文来说,可能会有分词的问题,一般会装IK分词器,但我看到似乎不装也ok。(原话是:给大家个建议,这玩意装与不装都挺好,不装查到的东西也很精确够使,装上会查出一些没有用的!)
结构如下,data用于存放持久化数据,log是日志、conf下是配置。
配置简单如下my_es_conf.yml
path.data: /usr/share/elasticsearch/data
path.logs: /usr/share/elasticsearch/logs
http.host: 0.0.0.0
这里只声明了数据和日志路径,并使得网络访问开放。
Note: 这种开放是基于局网的,公网只要端口不开放,仍然是属于外部无法访问的状态。未来每个主机会有一个Manager服务,用于整合内部服务,并对外沟通。
p24005_setup_ES.sh
#!/bin/bash # 0 CMD >>>>>>>>>>>>>>>>>>>>>>>>> # 可以到/tmp下执行: # 1 wget -N http://YOURIP:PORT/downup/download/p24005_setup_ES.sh # 2 bash p24005_setup_ES.sh # 1 Ensure One Implement Folder >>>>>>>>>>>>>>>>>>>>>>>>> if [ ! -d "/opt/one_implements" ]; then echo "一键部署文件夹不存在,创建..." mkdir -p /opt/one_implements else echo "一键部署文件夹存在" fi cd /opt/one_implements # 2 Params >>>>>>>>>>>>>>>>>>>>>>>>> # 000 - 实时的实体解析 # 000<
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。