中间件
中间件
Docker
Docker 是一个开源的应用容器引擎,基于 Go语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
三个基本概念:
- 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
- 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
- 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。
常用命令:
Docker 镜像命令
1 | # 查看Docker信息 |
Docker 容器命令
1 | # 查看正在运行的容器 |
MongoDB
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
SQL术语/概念 | MongoDB术语/概念 | 解释/说明 |
---|---|---|
database | database | 数据库 |
table | collection | 数据库表/集合 |
row | document | 数据记录行/文档 |
column | field | 数据字段/域 |
index | index | 索引 |
table joins | 表连接,MongoDB不支持 | |
primary key | primary key | 主键,MongoDB自动将_id字段设置为主键 |
优点:
高效率存储访问(高并发、高性能、高可用)
面向文档的数据模型
强大的查询功能
负载均衡
高扩展性
兼顾 SQL 与 NoSQL
常用命令:
1 | # 显示数据库 |
RabbitMQ
RabbitMQ是一个开源的,基于AMQP(高级消息队列协议)的消息系统(消息中间件)。
优点:
应用解耦
异步提速
流量削峰
可恢复性
基础架构:
- 生产者(Producer)
- 交换器(Exchange)
- 队列(Queue)
- 绑定(Binding)
- 消费者(Consumer)
Elasticsearch
Elasticsearch是一个基于Lucene(全文搜索引擎)的搜索服务器,是一个分布式、高扩展、高实时的搜索与数据分析引擎。
应用场景:
- 海量数据查询
- 搜索引擎
- 实时数据分析
- 日志和事件管理
核心概念:
- 索引(index):存储数据,相当于数据库
- 映射(mapping):定义字段类型、分词器等,相当于数据库中的表结构
- 文档(document):最小数据单元,通常为json格式,相当于数据库中的一行数据
- 倒排索引:一个倒排索引由文档中所有不重复词的列表构成,对于其中每个词,对应一个包含它的文档id列表
常用命令:
1 | # 索引操作 |