节点服务器

Redis常见的面试题

对着背影说爱祢 提交于 2019-11-28 18:17:32
转自: https://www.cnblogs.com/jasontec/p/9699242.html 介绍:Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API的非关系型数据库。 传统数据库遵循 ACID 规则。而 Nosql(Not Only SQL 的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称) 一般为分布式而分布式一般遵循 CAP 定理。 Github 源码:https://github.com/antirez/redis Redis 官网:https://redis.io/ Redis支持的数据类型? String字符串: 格式: set key value string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。 string类型是Redis最基本的数据类型,一个键最大能存储512MB。 Hash(哈希) 格式: hmset name key1 value1 key2 value2 Redis hash 是一个键值(key=>value)对集合。 Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。 List(列表) Redis

【Redis哨兵集群】

僤鯓⒐⒋嵵緔 提交于 2019-11-28 17:32:51
目录 开始配置主从复制 开始配置Redis Sentinel 原文: http://blog.gqylpy.com/gqy/332 @ *** 在开始之前,我们先来看看Redis的主从复制 主从复制原理: 从服务器向主服务器发送 SYNC 命令。 主服务器接到 SYNC 命令后,会调用 BGSAVE 命令,创建一个 RDB 文件,并使用缓冲区记录接下来执行的所有写命令。 当主服务器执行完 BGSAVE 命令后,会向从服务器发送 RDB 文件,而从服务器则会接收并执行这个文件。 主服务器将缓冲区存储的所有写命令发送给从服务器执行。 --------- Redis主从复制使用的是RDB备份方式来同步主从服务器的数据的。 同步开始之后,通过主库命令传播的方式,主动复制方式实现。 2.8以后实现PSYNC饿机制,实现断线重连。 Redis主从复制的背景问题 Reids主从复制可将主节点数据同步给从节点,从节点此时有两个作用: 一旦主节点宕机,从节点作为主节点的备份可以随时顶上来. 扩展主节点的读能力,分担主节点的读压力. . 一旦主节点宕机,从节点上位,那么就需要人为修改所有应用方的主节点地址(指定新的master地址),还需要命令所有从节点复制新的主节点. 这个问题很麻烦,而redis-sentinel就可以很好的解决这个问题. * Redis-Sentinel **     Redis

漫话:如何给女朋友解释什么是CDN?

安稳与你 提交于 2019-11-28 17:13:04
周六晚上七点多,我正在看书呢,突然女朋友跑过来问我她的IPAD去哪了,火急火燎的。 她拿到了IPAD之后就不再理我了,不过作为一个程序员,我还是比较好奇这么大的流量虎牙到底能不能扛得住,哈哈哈。于是我过去看了一下,结果看到了下面这一幕:  但是直播竟然并没有显得很卡顿,禁不住说了一段话: 据了解,2018年1月,阿里云为虎牙提供了边缘节点服务(ENS)。基于阿里云ENS,可以轻松地将业务模块放到边缘运行,在主播的推流时,实现就近节点进行转码和分发,同时支持了高并发实时弹幕的边缘分发。在获得网络低时延的同时,减少了对中心的压力,节省了30%以上的中心带宽成本,并且实现了边缘节点网络连接小于5毫秒延时,提升了主播上行质量,以及用户成功连接占比等数指标,有效提升了用户观看体验。ENS中最主要的技术就是CDN。 直播终于结束了,女朋友终于跑过来问我什么是CDN了… 什么是CDN CDN的全称是Content Delivery Network,即内容分发网络。 我们都用过天猫超市,在上面买东西非常方便。天猫超市的模式是货品先入天猫超市(后文简称为"猫超")的菜鸟仓,然后由猫超统一派送的。 为了缩短物流的时间,可以让消费者快速的收到货品,菜鸟在全国各地建了本地仓库,现在大多数情况下,在猫超下单,第二天都可以收到(楼主在江浙沪包邮区,其他地区可能稍有延迟)。 比如我在杭州市西湖区

史上最全的后端技术大全,你都了解哪些技术呢?

做~自己de王妃 提交于 2019-11-28 15:43:30
| 导语 工欲善其事,必先利其器; 士欲宣其义,必先读其书。 后台开发作为互联网技术领域的掌上明珠,一直都是开发者们的追逐的高峰。 本文将从后台开发所涉及到的技术术语出发,基于系统开发、架构设计、网络通信等几个方面让大家对后台 开 发有一个清晰的了解,讲解全面易懂。 系统开发 1. 高内聚/低耦合 高内聚指一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。 模块的内聚反映模块内部联系的紧密程度。 模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息。一个完整的系统,模块与模块之间,尽可能的使其独立存在。 通常程序结构中各模块的内聚程度越高,模块间的耦合程度就越低。 2. 过度设计 过度设计就是进行了过多的面向未来的设计或者说把相对简单的事情想复杂了,过度追求模块化、可扩展性、设计模式等,为系统增加了不必要的复杂度。 3. 过早优化 过早指的不是在开发过程的早期,而是在还没弄清楚需求未来的变化的走向的时候。你的优化不仅可能导致你无法很好地实现新的需求,而且你对优化的预期的猜测有可能还是错的,导致实际上你除了把代码变复杂以外什么都没得到。 正确的方法是, 先有质量地实现你的需求,写够testcase,然后做profile去找到性能的瓶颈,这个时候才做优化。 4. 重构

分布式系统中一致性哈希算法

送分小仙女□ 提交于 2019-11-28 14:03:44
分布式系统中一致性哈希算法 此博文转载自 分布式系统中一致性哈希算法 ,博主对分布式系统中最常见的一致性哈希算法进行了非常细致的讲解,非常值得阅读!另外博主在博客园上定制的皮肤样式也是非常好看,推荐一波~ 业务场景 近年来,由于互联网的兴起,B2C、O2O等商业概念的提出和移动端的发展,使得分布式系统流行起来。分布式系统相对于单一系统而言,带来了流量大、系统高可用和高容错的便利。功能强大的同时,也意味着实现起来需要更多的技术支持。例如系统访问层的 负债均衡 、缓存层的 多实例主从复制备份 以及数据层的 分库分表 等。 我们以负载均衡为例,常见的负载均衡方法有很多,但是它们的优缺点都很明显: 随机访问策略: 系统随机访问,缺点:可能造成服务器负载压力不均衡,俗话讲就是撑的撑死,饿的饿死。 轮询策略: 请求均匀分配,如果服务器有性能差异,则无法实现性能好的服务器能够多承担一部分。 权重轮询策略: 权值需要静态配置,无法自动调节,不适合对长连接和命中率有要求的场景。 Hash取模策略: 不稳定,如果列表中某台服务器宕机,则会导致路由算法产生变化,由此导致命中率的急剧下降。 一致性哈希策略(本文重点分析) 以上几个策略,排除本篇介绍的一致性哈希策略,可能使用最多的就是 Hash取模策略 了。Hash取模策略的缺点也是很明显的,这种缺点也许在负载均衡的时候不是很明显

Tensorflow分布式部署和开发

我与影子孤独终老i 提交于 2019-11-28 12:50:37
关于tensorflow的分布式训练和部署, 官方有个英文的文档介绍,但是写的比较简单, 给的例子也比较简单,刚接触分布式深度学习的可能不太容易理解。在网上看到一些资料,总感觉说的不够通俗易懂,不如自己写一个通俗易懂给大家分享一下。 如果大家有看不懂的,欢迎留言,我再改文章,改到大学一年级的学生可以看懂的程度。 1. 单机多GPU训练 先简单介绍下单机的多GPU训练,然后再介绍分布式的多机多GPU训练。 单机的多GPU训练, tensorflow的官方已经给了一个cifar的例子,已经有比较详细的代码和文档介绍, 这里大致说下多GPU的过程,以便方便引入到多机多GPU的介绍。 单机多GPU的训练过程: a) 假设你的机器上有3个GPU; b) 在单机单GPU的训练中,数据是一个batch一个batch的训练。 在单机多GPU中,数据一次处理3个batch(假设是3个GPU训练), 每个GPU处理一个batch的数据计算。 c) 变量,或者说参数,保存在CPU上 d) 刚开始的时候数据由CPU分发给3个GPU, 在GPU上完成了计算,得到每个batch要更新的梯度。 e) 然后在CPU上收集完了3个GPU上的要更新的梯度, 计算一下平均梯度,然后更新参数。 f) 然后继续循环这个过程。 通过这个过程,处理的速度取决于最慢的那个GPU的速度。如果3个GPU的处理速度差不多的话,

一致性Hash算法

生来就可爱ヽ(ⅴ<●) 提交于 2019-11-28 12:50:17
一致性Hash算法 一致性Hash算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot Spot)问题,初衷和CARP十分相似。一致性Hash修正了CARP使用的简单哈希算法带来的问题,使得分布式哈希(DHT)可以在P2P环境中真正得到应用。 一致性Hash算法提出了在动态变化的Cache环境中,判定哈希算法好坏的四个定义: 1、平衡性(Balance):平衡性是指哈希的结果能够尽可能分布在所有的缓冲(Cache)中去,这样可以使得所有的缓冲空间得到利用。很多哈希算法都能够满足这一条件。 2、单调性(Monotonicity):单调性是指如果已经有一些内容通过哈希分派到了相应的缓冲中,又有新的缓冲加入到系统中。哈希的结果应该能够保证原有已分配的内容可以被映射到原有的或者新的缓冲中去,而不会映射到旧的缓冲集合中的其他缓冲区。 3、分散性(Spread):在分布式环境中,终端有可能看不到所有的缓冲,而只能看到其中的一部分。当终端希望通过哈希过程将内容映射到缓冲上去,由于不同终端所见的缓冲范围有可能不同,从而导致哈希的结果不一致,最终的结果是相同的内容被不同的终端映射到不同的缓冲区中。这种情况显然是应该避免的,因为它导致相同内容被存储到不同缓冲中去,降低了系统存储的效率。分散性的定义就是上述情况发生的严重程度

redis

僤鯓⒐⒋嵵緔 提交于 2019-11-28 12:08:23
redis 简介 Redis 是用 C 语言开发的一个开源的高性能键值对(key-value)数据库。它通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止 Redis 支持的键值数据类型如下: 字符串类型 散列类型 列表类型 集合类型 有序集合类型 Redis 的应用场景 缓存(数据查询、短连接、新闻内容、商品内容等等) 分布式集群架构中的 session 分离 聊天室的在线好友列表 任务队列(秒杀、抢购、12306 等等) 应用排行榜 网站访问统计 数据过期处理(可以精确到毫秒) Redis HA 方案 HA(High Available,高可用性群集)机集群系统简称,是保证业务连续性的有效解决方案,一般有两个或两个以上的节点,且分为活动节点及备用节点。通常把正在执 行业务的称为活动节点,而作为活动节点的一个备份的则称为备用节点。当活动节点出现问题,导致正在运行的业务(任务)不能正常运行时,备用节点此时就会侦测到,并立即接续活动节点来执行业务。从而实现业务的不中断或短暂中断。 Redis 一般以主/从方式部署(这里讨论的应用从实例主要用于备份,主实例提供读写)该方式要实现 HA 主要有如下几种方案: 主从及哨兵架构 redis cluster集群 Redis一致性哈希算法 将用户和redis节点的hash值对应到一个32位的环形数据结构上,环形结构首尾封闭

【Redis】Redis 主从模式搭建

六月ゝ 毕业季﹏ 提交于 2019-11-28 11:25:47
主从模式介绍   Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况。为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结构,Redis主从复制可以根据是否是全量分为全量同步和增量同步。下图为级联结构。    主从同步过程   Redis全量复制一般发生在Slave初始化阶段,这时Slave需要将Master上的所有数据都复制一份。具体步骤如下:   - 从服务器连接主服务器,发送SYNC命令;   - 主服务器接收到SYNC命名后,开始执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的所有写命令;   - 主服务器BGSAVE执行完后,向所有从服务器发送快照文件,并在发送期间继续记录被执行的写命令;   - 从服务器收到快照文件后丢弃所有旧数据,载入收到的快照;   - 主服务器快照发送完毕后开始向从服务器发送缓冲区中的写命令;   - 从服务器完成对快照的载入,开始接收命令请求,并执行来自主服务器缓冲区的写命令;    主从模式搭建   本例采用单例的1主2从的搭建方式。    服务类型 角色 IP地址 端口 Redis master 127.0.0.1 17007 Redis slave 127.0.0.1 17008 Redis slave 127.0.0.1 17009   1、首先准备一个redis实例,参考

Redis----NoSql数据库笔记

蹲街弑〆低调 提交于 2019-11-28 10:40:00
介绍:Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API的非关系型数据库。 传统数据库遵循 ACID 规则。而 Nosql(Not Only SQL 的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称) 一般为分布式而分布式一般遵循 CAP 定理。 Redis支持的数据类型? String字符串: 格式: set key value string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。 string类型是Redis最基本的数据类型,一个键最大能存储512MB。 Hash(哈希) 格式: hmset name key1 value1 key2 value2 Redis hash 是一个键值(key=>value)对集合。 Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。 List(列表) Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边) 格式: lpush name value 在 key 对应 list 的头部添加字符串元素 格式: rpush name value 在 key 对应