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等名词了解的更多相关文章

  1. MySQL、MongoDB、Redis数据库Docker镜像制作

    MySQL.MongoDB.Redis数据库Docker镜像制作 在多台主机上进行数据库部署时,如果使用传统的MySQL的交互式的安装方式将会重复很多遍.如果做成镜像,那么我们只需要make once ...

  2. Redis in Docker on Linux Container

    记录:在Docker中运行一个Redis实例当我们在Windows系统中安装好Docker以后,在Hyper-V中会自动创建一个Linux虚拟机,如果这个虚拟机没有运行,说明当前运行的是Windows ...

  3. Redis的Docker镜像

    原文地址:https://hub.docker.com/_/redis/ Pull Command docker pull redis Short Description Redis is an op ...

  4. mysql|tomcat|nginx|redis在docker中的部署

    MySQL部署 拉取MySQL镜像 docker pull mysql 查看镜像 创建MySQL容器 docker run -di --name pinyougou_mysql -p 33306:33 ...

  5. redis 连接 docker容器 6379端口失败

    redis部署在docker容器中Could not connect to Redis 容器内redis-cli是可以直接连上的,但是在另一台服务器上就不能用外网ip来连了 虽然我创建redis容器时 ...

  6. redis 的 docker 镜像使用

    redis 镜像使用: 创建容器(暴露端口:6379,使用 Redis 可视化界面工具(如:Fastoredis)连接 redis 时连接该端口): docker run -it -p 6379:63 ...

  7. 在Windows上弄一个redis的docker容器

    [本文出自天外归云的博客园] Docker核心概念简介 镜像是一个面向docker引擎的只读模板,包含了文件系统. 镜像是创建容器的基础,容器类似于一个沙箱,用来运行和隔离应用. 容器是从镜像创建的应 ...

  8. redis的docker化安装

    只需要关注几点: 端口映射 配置文件映射 持久化映射 要做的就是拉取官方镜像并把关注的几个点处理一下就好了: docker pull redis docker run -d -p : -v /data ...

  9. 手写redis的docker文件,通过docker-compose配置redis

    在前面一遍随笔,配置的是mysql主从的docker-compose配置.今天我们来学习配置编排容器redis. 准备环境: docker 18.06.1-ce docker-compose 1.23 ...

  10. 最简单的启动并连接一个redis的docker容器

    启动一个容器: $ sudo docker run --name <name> -d redis 连接一个容器: sudo docker run -it --link <name&g ...

随机推荐

  1. Python elasticsearch 使用心得

    一.配置 python == 3.6/3.8 # 更高版本的elasticsearch会出现doc_type被统一成_doc导致旧版语句报错的情况 pip install elasticsearch= ...

  2. taro框架开发微信小程序遇到的问题

    ios端,如果input放在了dispplay flex里面,会导致一系列问题 滑动屏幕,键盘不收起,input值随屏幕滚动 input之前切换,键盘不弹起来或有时弹有时不弹 键盘莫名收起 input ...

  3. vue2中请求函数防抖处理

  4. 《用Python写网络爬虫》pdf高清版免费下载

    <用Python写网络爬虫>pdf高清版免费下载地址: 提取码:clba 内容简介  · · · · · · 作为一种便捷地收集网上信息并从中抽取出可用信息的方式,网络爬虫技术变得越来越有 ...

  5. N63050 第十四周运维作业

    就业和全程班小伙伴本周学习内容: 第二十七天: http协议和web服务器 1http的cookie和session详解 2LAMP架构和CGI与FASTCGI区别 3常见PHP的配置和php程序 4 ...

  6. 不需要鼠标交互的UI去掉RaycastTarget

    UI事件会在EventSystem在Update的Process触发.UGUI会遍历屏幕中所有RaycastTarget是true的UI,接着就会发射线,并且排序找到玩家最先触发的那个UI,在抛出事件 ...

  7. linux下yum安装时出现Loaded plugins: fastestmirror

    linux使用yum安装软件时出现报错Loaded plugins:fastestmirror,是提示这个插件不能使用了,fastestmirror是yum的一个加速插件, 解决的办法是:将这个插件禁 ...

  8. 072_关于Dataloader导入Record的创建时间及修改时间并允许owner是Inactive

    1.在User interface 中 启用 Enable "Set Audit Fields upon Record Creation" and "Update Rec ...

  9. redisTemplate类学习及理解

    List<Object> list = masterRedisTemplate.executePipelined((RedisCallback<Long>) connectio ...

  10. Windows2016安装.NetFramework 3.5

    Windows2016安装.NetFramework 3.5 Windows2016服务器默认安装的是 .Net 4.6.2版本,但是有时候我们经常会需要用到.Net 3.5版本.以下介绍的是在线和离 ...