数据库集群

redis

巧了我就是萌 提交于 2019-11-28 20:35:42
一、 数据库 1、数据库 (1)关系型数据库SQL<MySQL、Oracle、DB2、SQLServer>:有表,而且表与表直接存在关系<主外键>; (2)非关系型数据库No SQL(没有表),可以作为关系型数据库的一个很好的补充,不能替代; 2、NoSQl产生的原因 对数据库高并发访问的需求; 3、NoSQl数据库的分类 (1) 键值(Key-Value)存储数据库 相关产品: Tokyo Cabinet/Tyrant、Redis、Voldemort、Berkeley DB。 典型应用:内容缓存,主要用于处理大量数据的高访问负载。 数据模型:一系列键值对 优势:快速查询 劣势:存储的数据缺少结构化 (2)列存储数据库 相关产品:Cassandra, HBase, Riak 典型应用:分布式的文件系统 数据模型:以列簇式存储,将同一列数据存在一起 优势:查找速度快,可扩展性强,更容易进行分布式扩展 劣势:功能相对局限 (3)文档型数据库 相关产品:CouchDB、MongoDB 典型应用:Web应用(与Key-Value类似,Value是结构化的) 数据模型:一系列键值对 优势:数据结构要求不严格 劣势:查询性能不高,而且缺乏统一的查询语法 (4)图形(Graph)数据库 相关数据库:Neo4J、InfoGrid、Infinite Graph 典型应用:社交网络 数据模型:图结构

redis面试总结(二)

人走茶凉 提交于 2019-11-28 13:08:37
7.redis 集群模式的工作原理能说一下么?在集群模式下,redis 的 key 是如何寻址的?分布式寻址都有哪些算法?了解一致性 hash 算法吗? 考点分析 在前几年,redis 如果要搞几个节点,每个节点存储一部分的数据,得 借助一些中间件 来实现,比如说有 codis ,或者 twemproxy ,都有。有一些 redis 中间件,你读写 redis 中间件,redis 中间件负责将你的数据分布式存储在多台机器上的 redis 实例中。 这两年,redis 不断在发展,redis 也不断的有新的版本,现在的 redis 集群模式,可以做到在多台机器上,部署多个 redis 实例,每个实例存储一部分的数据,同时每个 redis 实例可以挂 redis 从实例,自动确保说,如果 redis 主实例挂了,会自动切换到 redis 从实例顶上来。 现在 redis 的新版本,大家都是用 redis cluster 的,也就是 redis 原生支持的 redis 集群模式,那么面试官肯定会就 redis cluster 对你来个几连炮。要是你没用过 redis cluster,正常,以前很多人用 codis 之类的客户端来支持集群,但是起码你得研究一下 redis cluster 吧。 如果你的数据量很少,主要是承载高并发高性能的场景,比如你的缓存一般就几个 G,单机就足够了

Redis缓存,持久化,高可用

与世无争的帅哥 提交于 2019-11-28 12:43:15
一,Redis作缓存服务器 ​ 本篇博客是接着 上一篇 博客未分享完的技术点。 ​ redis作为缓存服务器是众多企业中的选择之一,虽然该技术很成熟但也是存在一定的问题。就是缓存带来的缓存穿透,缓存击穿,缓存失效问题,继而引用分布式锁。 1.1,缓存穿透 ​ 在如今的项目中大多采用垂直的MVC架构,由service层去调用DAO层,然后DAO层再去查询数据库。而redis作为缓存服务器就是在service层去调用DAO层去查询时先去缓存服务器查询,如果存在则直接返回该数据,否则再去查询数据库。由此可知,这么做大量减少了对磁盘I/O的操作,减轻了数据库的压力。 ​ 现在我们假设一种情况,在数据库中存在有id为1到1000的数据。现在如果有人手动去模拟一个id为1001的请求,那么该数据在缓存服务器中是不存在的,因而便会去查询数据库。那么问题来了,如果是一个大量无效的请求去查询数据库。则势必会对数据库造成难以承受的压力,这种情况就是所谓的缓存穿透。 ​ 那如何解决呢? ​ 1,将查询到的null值直接保存到缓存服务器中,但是这种做法并不推荐,因为如果是大量不同的请求id同样会去查询数据库。 ​ 2,接口的限流,降级与熔断 ​ 在项目中对于重要的接口一定要做限流,对于以上恶意攻击的请求除了要限流,还要做好降级准备,并且进行熔断,这种做法可以有效控制大量无效请求。 ​ 3,布隆过滤器 ​

Pinterest谈实战经验:如何在两年内实现零到数百亿的月访问

若如初见. 提交于 2019-11-28 11:50:24
Pinterest一直保持着指数增长,每一个半月都会翻一翻。在两年内,他们实现了从0到数百亿的月PV;从开始的两个创始人加一个工程师增长到现在超过40个工程师,从一个小型的MySQL服务器增长到180个Web Enigne、240个API Enigne、88个MySQL DB(cc2.8xlarge,每个DB都会配置一个从属节点)、110个Redis Instance以及200个Mmecache Instance。 在一个名为 《Scaling Pinterest》 的主题演讲上,Pinterest的 Yashwanth Nelapati 和 Marty Weiner 为我们讲述了这个戏剧性的过程。当然扩展到当下规模,Pinterest在众多选择中不可避免的走了许多的弯路,而Todd Hoff认为其中最宝贵的经验该归结于以下两点: 如果你的架构应对增长所带来的问题时,只需要简单的投入更多的主机,那么你的架构含金量十足。 当你把事物用至极限时,这些技术都会以各自不同的方式发生故障,这导致他们对工具的选择有着特殊的偏好:成熟、简单、优秀、知名、被更多的用户喜爱、更好的支持、稳定且杰出的表现、通常情况下无故障以及免费。使用这些标准,他们选择了MySQL、Solr、Memcache、Redis、Cassandra,同时还抛弃了MongoDB。 同样这两个点是有关联的

缓存集群防止数据库井喷

寵の児 提交于 2019-11-28 11:31:31
使用缓存数据库可以有效的提升系统性能,但是基于由于缓存数据库的自身特性,相比起实例化数据库,在性能抖动,丢失方面,尤其是缓存失效的严重问题层面,处理不足,及其容易带来,对底层数据库的瞬间并发访问,造成数据库的宕机。 所以,最好的方案,可以考虑,略微降低性能,在缓存的集群上面,仿照实例化数据库实现一些代理方案,这样可以实现类似zoonkeeper概念的一直死活控制。 现在缓存数据库,比较常见的是: 1:支持并发的高效率,无磁盘负责的memcached,自身不支持集群方案,必须走代理; 2:读写相对均衡的单线程的redis,自身支持完好的集群方案,并有可选的实例化方案,实例化与对外业务是从属于不同的线程。 3:不支持并发的大数据缓存,文档型数据库,mongodb,其内部设计,采用了,异常压制方案,出了问题,比较难以调式,自身有很好的集群能力。 实现缓存的集群方案是很好的,这样可以很好的降低了底层数据库的扩张与成本,且性能远大于底层数据库实现的分布式或者集群。唯一的关键点,是做好底层数据库与缓存数据库之间的保护屏障,于是,站在巨人的肩膀上面,可以选择如下方案: Twitter的Redis/Memcached代理服务:Twemproxy Twemproxy 是一个使用C语言编写的Redis 和 Memcache 代理服务器,通过引入一个代理层

CDH集群安装出现问题参考

半腔热情 提交于 2019-11-28 07:09:49
一、登录Cloudera Manager (http://192.168.201.128:7180/cmf/login)时,无法访问web页面   针对此问题网上有较多的解决方案(e.g. https://www.cnblogs.com/zlslch/p/7078119.html), 如果还不能解决你的问题,请看下面的解决方案。   登录MySQL数据库(或利用Navicat),会发现有一个mysql数据库(下图所示),在mysql数据库中有一个user表,将User="root"的两条记录进行删除 select * from user; delete from user where User='root';   再次登录http://192.168.201.128:7180/cmf/login,发现登录成功! 二、利用Navicat连接MySql数据库时,错误信息:Can't connect to MySQL server on 'xxxxx'(10038)    解决方案:      查看网络的端口信息:netstat -ntpl,下图状态为正常状态(不是请进行如下操作),如果没有netstat,在CentOS 7下利用yum -y install net-tools进行安装。          查看防火墙的状态,发现3306的端口是丢弃状态: iptables -vnL   

Zookeeper高级

流过昼夜 提交于 2019-11-28 04:15:26
1.1. 一致性协议概述 前面已经讨论过,在分布式环境下,有很多不确定性因素,故障随时都回发生,也讲了 CAP 理论, BASE 理论 我们希望达到,在分布式环境下能搭建一个高可用的,且数据高一致性的服务,目标是这样,但 CAP 理论告诉我们要达到这样的理想环境是不可能的。这三者最多完全满足 2 个。 在这个前提下, P (分区容错性)是必然要满足的,因为毕竟是分布式,不能把所有的应用全放到一个服务器里面,这样服务器是吃不消的,而且也存在单点故障问题。 所以,只能从一致性和可用性中找平衡。 怎么个平衡法?在这种环境下出现了 BASE 理论: 即使无法做到强一致性,但分布式系统可以根据自己的业务特点,采用适当的方式来使系统达到最终的一致性; BASE 由 Basically Avaliable 基本可用、 Soft state 软状态、 Eventually consistent 最终一致性组成,一句话概括就是:平时系统要求是基本可用,除开成功失败,运行有可容忍的延迟状态,但是,无论如何经过一段时间的延迟后系统最终必须达成数据是一致的。 其实可能发现不管是 CAP 理论,还是 BASE 理论,他们都是理论,这些理论是需要算法来实现的,今天讲的 2PC 、 3PC 、 Paxos 算法, ZAB 算法就是干这事情。 所以今天要讲的这些的前提一定是分布式,解决的问题全部都是在分布式环境下

使用MPP数据库解决农行海量数据复杂运算处理

回眸只為那壹抹淺笑 提交于 2019-11-27 19:13:40
农业银行以国产数据库GBase 8a为基础的国内最大的金融大数据平台采用混搭融合架构、双活数据仓库、超大规模数据库集群这些先进技术全部应用其中。56是生产环境,现在实现了56环境的双活!5.2PB数据量、236个节点、每天6000多个复杂的分析任务。 项目背景 随着互联网+时代的到来,金融大数据呈指数增长。结构化数据增长基本可控,它随着业务的增长是一个线性关系;而对非结构化数据,尤其语音、图像,优酷上的视频,增长巨大。现在精准营销、风险控制、运营等对大数据的应用提出更高的要求。随着大数据时代到来,处理大数据的技术手段和成本的下降都提供了对大数据的可能,在技术上它也是成长最快的一部分。 中国农业银行数据仓库项目最初是基于Sybase IQ建设的,主要应用于统计报表。随着数据量的不断增大、接入的系统越来越多,Sybase IQ由于性能的限制,已经很难在指定的时间窗口中完成统计,也无法继续接入其它的业务系统数据,无法满足银行内部数据分析和监管机构的监管数据要求。系统架构的障碍影响了客户从宝贵的数据资源中挖掘价值,寻找新的、更先进的产品成为客户不得不考虑的问题。 着眼未来,为更好地利用大数据领域新兴技术构造大数据平台,应对市场变幻、带动业务模式创新,寻求新的技术方向已成为必然选择。同时近年来信息安全问题越来越受中国政府和企业的关注,关键领域信息系统的国产化逐步开展。基于信息安全

云计算openstack共享组件——Memcache 缓存系统(4)

丶灬走出姿态 提交于 2019-11-27 12:35:34
云计算openstack共享组件——Memcache 缓存系统(4) 一、缓存系统 一、静态web页面: 1、在静态Web程序中,客户端使用Web浏览器(IE、FireFox等)经过网络(Network)连接到服务器上,使用HTTP协议发起一个请求(Request),告诉服务器我现在需要得到哪个页面,所有的请求交给Web服务器,之后WEB服务器根据用户的需要,从文件系统(存放了所有静态页面的磁盘)取出内容。之后通过Web服务器返回给客户端,客户端接收到内容之后经过浏览器渲染解析,得到显示的效果。 2、为了让静态web页面显示更加好看,使用javascript/VBScript/ajax(AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。)但是这些特效都是在客户端上借助于浏览器展现给用户的,所以在服务器上本身并没有任何的变化。 3、静态web无法连接数据库; 4、静态web资源开发技术:HTML; 5、由于现在的web页面中,大量使用JS,导致浏览器打开页面,就会占用大量的内存,服务端的压力是减轻了,但压力转移到了客户端。 二、动态web页面: 1、动态WEB中,程序依然使用客户端和服务端,客户端依然使用浏览器(IE、FireFox等),通过网络(Network)连接到服务器上

Oracle 12cR1 RAC集群安装(二)--使用图形界面安装

谁说胖子不能爱 提交于 2019-11-27 08:40:30
在上一篇文档 【Oracle 12cR1 RAC集群安装(一)--环境准备】 中,我们已经配置好安装环境,接下来开始安装。 (一)安装Grid Infrastructure (1)进入安装包,开始安装 [grid@node1 ~]$ cd /home/grid/grid/ [grid@node1 grid]$ ls check.log response runcluvfy.sh sshsetup welcome.html install rpm runInstaller stage [grid@node1 grid]$ ./runInstaller (2)接下来照着图片选择即可: step1:选择”install and configure Oracle Grid Infrastructure for a Cluster” step2:选择Configure a Standard cluster step3:选择Advanced Installation(自定义安装) step5:选择语言,一般选english即可 step6:Cluster Name可以随意填写,SCAN Name需要与/etc/hosts里面的相同 step7:这里只会出现一台机器,通过点击“add”,把其他的节点添加到集群。 step8:选择网卡的用途 step9:选择ASM配置 step10