redis 和docker等名词了解
redis
redis产生
redis是MySQL数据库经常直接面对大量的读写访问,面对比较复杂的数据据操作,会导致数据库I/O反映缓慢或者奔溃;
有人研究学习CPU从内寸直接读取数据,把MYSQL经常访问的数据缓冲到内存中,先通过redis访问内存读取数据返回数据,没有再去关系型数据库查
Docker简述
Docker是什么
官方概念:Docker 是一个开源的应用容器引擎,你可以将其理解为一个轻量级的虚拟机,开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上
个人理解:好比如一台机器上,运行了3个docker, 每个docker里面分别运行着nginx,php和mysql。你想把这台机器上的nginx,php和mysql部署到另外10台机器。直接执行一系列docker命令就可以了
Docker作用
Docker是将linux操作系统分割作为一个个容器,相比于虚拟机由于容器不需要进行硬件虚拟以及运行完整操作系统等额外开销,Dockers对系统的利用率更高,
相比于传统的虚拟机技术启动应用服务往往需要数分钟,而Docker容器应用,由于直接运行于宿主主机内核,无需启动操作系统,启动时间加快
Docker的镜像提供了除操作系统外完整的运行时环境,确保了应用运行环境一致性,避免操作系统不一致报错的问题。
ZooKeeper
ZooKeeper是什么
- ZooKeeper 是一个分布式的、开源的分布式应用程序协调服务。作为一个协调服务,常常用来配合其他中间件来用,比如 Dubbo + ZooKeeper,Hadoop + Zookeeper 等。ZooKeeper 可以实现服务注册发现、分布式锁、配置中心等功能
ZooKeeper的主要功能
步骤 0 到 4 是服务注册发现的核心流程。
- 每个服务实例启动之后将自己的信息(IP+port)写入公共区域;
- 调用者订阅自己感兴趣的服务实例,获取服务实例信息列表后缓存在自己本地;
- 服务实例停止或者宕掉后将公共区域自己的信息清除掉;
- 公共区域通知调用者你感兴趣的信息已经发生变更,请更新一下本地的缓存。
ZooKeeper 的重点特性
1)树状目录结构
ZooKeeper 是一个树状的文件目录结构,与 Unix 文件系统很类似。树中每个节点可以称作为一个 znode,每一个 znode 都可以通过其路径唯一标识,最重要的是我们可以对每个 znode 进行增删改查。
2) 持久节点(Persistent)
客户端与 ZooKeeper 服务端断开连接后,节点仍然存在不会被删除。这样的节点就叫做持久节点。

3)持久有序节点(Persistent_sequential)
持久有序节点是指,在上面持久节点的特性上加上了有序性。有序性的意思是服务向 ZooKeeper 注册信息时,ZooKeeper 根据注册顺序给每个节点编号。

4)临时节点(Ephemeral)
客户端与 ZooKeeper 服务端断开连接后,该节点被删除。

注意:临时节点下不存在子节点;持久节点下可以存在临时节点。
5)临时有序节点(Ephemeral_sequential)
临时有序节点在临时节点的基础上再加上有序性,跟持久有序节点类似。

6)节点监听(Wacher)
节点监听是 ZooKeeper 最重要的特性之一。客户端可以监听任意节点,节点有任何变化 ZooKeeper 可以通过回调的方式通知给客户端。这样,客户端不用轮询就可以及时感知节点变化。
如下图所示,客户端(Client)开始监听临时节点 1,因某种原因临时节点 1 被删除了,ZooKeeper 通过回调将变化通知给 Client 了。

示例( ZooKeeper 实现服务注册发现)
业务梳理
了解了 ZooKeeper 的一些重要特性,我们再来看下 ZooKeeper 是如何实现服务注册和发现的。还是以订单服务、用户服务的场景为例。
服务提供方(用户服务)启动成功后将服务信息注册到 ZooKeeper,服务信息包括实例的 IP、端口等元信息。注册成功 ZooKeeper 还可以通过心跳监测来动态感知实例变化,详细的过程这里不展开。
服务消费方(订单服务)需要调用用户服务的接口,但因为不知道实例的 IP、端口等信息,只能从 ZooKeeper 中获取调用地址列表,然后进行调用,这个过程成为服务的订阅。
订阅成功后服务消费方可以将调用列表缓存在本地,这样不用每次都去调用 ZooKeeper 获取。一旦 ZooKeeper 感知到用户服务实例变化后就会通知给服务消费方,服务消费方拿到结果后就会更新本地缓存,这个过程称之为通知。

服务注册原理
服务启动后会自动向 ZooKeeper 注册,注册的规则如下:
每个服务会创建一个持久节点和若干个临时节点。比如用户服务首先创建一个持久节点 user,然后每个服务实例会在持久节点下创建一个临时有序节点。

服务动态发现原理
由于订单服务需要调用用户服务的接口,所以订单服务会订阅 user 节点。一旦用户服务有变化(增加实例或者减少实例),ZooKeeper 都会将最新的列表信息推送给订单服务。这个过程就是服务动态发现的基本原理。大家直接看图:

redis 和docker等名词了解的更多相关文章
- MySQL、MongoDB、Redis数据库Docker镜像制作
MySQL.MongoDB.Redis数据库Docker镜像制作 在多台主机上进行数据库部署时,如果使用传统的MySQL的交互式的安装方式将会重复很多遍.如果做成镜像,那么我们只需要make once ...
- Redis in Docker on Linux Container
记录:在Docker中运行一个Redis实例当我们在Windows系统中安装好Docker以后,在Hyper-V中会自动创建一个Linux虚拟机,如果这个虚拟机没有运行,说明当前运行的是Windows ...
- Redis的Docker镜像
原文地址:https://hub.docker.com/_/redis/ Pull Command docker pull redis Short Description Redis is an op ...
- mysql|tomcat|nginx|redis在docker中的部署
MySQL部署 拉取MySQL镜像 docker pull mysql 查看镜像 创建MySQL容器 docker run -di --name pinyougou_mysql -p 33306:33 ...
- redis 连接 docker容器 6379端口失败
redis部署在docker容器中Could not connect to Redis 容器内redis-cli是可以直接连上的,但是在另一台服务器上就不能用外网ip来连了 虽然我创建redis容器时 ...
- redis 的 docker 镜像使用
redis 镜像使用: 创建容器(暴露端口:6379,使用 Redis 可视化界面工具(如:Fastoredis)连接 redis 时连接该端口): docker run -it -p 6379:63 ...
- 在Windows上弄一个redis的docker容器
[本文出自天外归云的博客园] Docker核心概念简介 镜像是一个面向docker引擎的只读模板,包含了文件系统. 镜像是创建容器的基础,容器类似于一个沙箱,用来运行和隔离应用. 容器是从镜像创建的应 ...
- redis的docker化安装
只需要关注几点: 端口映射 配置文件映射 持久化映射 要做的就是拉取官方镜像并把关注的几个点处理一下就好了: docker pull redis docker run -d -p : -v /data ...
- 手写redis的docker文件,通过docker-compose配置redis
在前面一遍随笔,配置的是mysql主从的docker-compose配置.今天我们来学习配置编排容器redis. 准备环境: docker 18.06.1-ce docker-compose 1.23 ...
- 最简单的启动并连接一个redis的docker容器
启动一个容器: $ sudo docker run --name <name> -d redis 连接一个容器: sudo docker run -it --link <name&g ...
随机推荐
- python cls方法_关于类方法中的cls
title: python cls方法_关于类方法中的cls author: 杨晓东 permalink: python cls方法_关于类方法中的cls date: 2021-10-02 11:27 ...
- RestTemplate 请求
@Autowired private RestTemplate httpRestTemplate; String code= request.getParameter("code" ...
- C++语言程序设计实验一 类与对象
Complex.hpp文件源码: #include <iostream> using namespace std; class Complex { public: Complex(floa ...
- 在linux 下如何快速创建环境
首先先在你的主目录下创建一个文件 touch venv python创建环境 python3 -m venv venv 创建虚拟环境 (提示:当你有错找不到的时候可以重新创建一个环境) source ...
- QML笔记——MouseArea的覆盖区域
问题摘要: 初学QML,今天发现一个奇怪的现象,调用MouseArea的位置不同,结果不同. 1.一个简单的qml示例 Rectangle { id: root width: 320 height: ...
- ssr 学习总结
自己构建ssr 前提:了解 koa, koa-router, koa-static, webpack 文件结构 ssr 中的router store 都是 一个工厂函数 在服务器端渲染(SSR) ...
- Springboot多数据源使用示例
1.配置文件 spring.datasource.url=jdbc:mysql://198.168.1.1:3306/user?useUnicode=true&characterEncodin ...
- docker rabbitMQ安装
1.环境准备 服务器 CENTOS 7 版本 安装docker容器 2.开始安装 docker pull rabbitmq:management 说明:为什么不直接安装 docker pull rab ...
- A Novel Cross-domain Access Control Protocol in Mobile Edge Computing
摘要 随着智能移动终端和移动通信技术的发展,移动边缘计算(MEC)已经应用到各个领域.然而,MEC也带来了新的数据安全威胁,包括数据访问威胁.针对MEC中的跨域访问控制问题,提出一种跨域访问控制协议C ...
- 网站提示:You Don’t Have Permission To Access
测试 apache集成环境访问网站,突然出现错误提示"You don't have permission to access /index.php on this server." ...