分布式集群

web高并发开发

服务器端

keepalived + nginx/haproxy/lvs(代理)->[nginx(web)]
keepalived解决单点故障
nginx/haproxy/lvs 负载均衡nginx(web)/apache/tomcat多个web服务器

cache

redis分布式集群
memcahce分布式集群

memcache

magent做N主N备 通过一致性hash来负载均衡
repcached做1主1备
步骤:
1.启动多个memcache节点-多服务器多节点
2.启动magent代理memcache节点-N主N备

分布式集群_第1张图片
架构图.jpg

magent创建N个主,然后创建N主N备,每一组主备用repcached主备

db数据库

mysql_proxy haproxy
mysql集群 分库分表

web服务器

nginx apache

hadoop

分成两个
HDFS 文件系统
MapReduce 框架

HDFS分为

读数据
NameNode 2个解决单点故障 类似数据路由
DataNode 3个

写数据
文件拆分块告诉NameNode,NameNode返回DataNodes,写入DataNode的blocks中,在流水线复制自身机架一份,和另一个机架一份,最后跟新元数据到NameNode

HDFS特点
数据3分冗余、硬件容错
流式数据访问 写一次读多次,没法改,只能删除在添加
存储大文件 只能大文件

不支持多用户并发写相同文件

MapReduce

Job 提交给JobTracker(Map/Reduce管理节点)->发布Map/Reduce任务Task->发布给TaskTracker(TaskTracker和DataNode同一物理节点)处理
JobTracker
1.作用调度
2.分配任务,监控任务进度
3.监控TaskTracker

MapReduce 容错
1.重复执行
2.推测执行 检测某个节点TaskTracker算的很慢,那么会新建一个去算,谁先算完就终止另外一个

Hive

就是数据库 库->表 对应 HDFS 目录->文件
OLTP 事物-银行转账
OLAP 联机分析数据-查询

Hive是建立在HDFS上的数据仓库
Hive 将Hql->Sql->M/R Job 然后在Hadoop执行
Hive 将元数据存储在数据库中(metastore)-默认derby(支持mysql、Oracle)
即 表的meta信息存储在其他数据库系统中,而表的实际内容在HDFS 目录->文件

Hive安装模式

嵌入模式 demo
本地模式
远程模式 Hive 和 mysql 在不同机器上 多用户

memcache

集群

哈希取模集群 出现一处故障 数据只有 1/N
哈希一致性集群 出现一处故障 数据还有 N-1/N

雪崩

1.某个缓存节点失效,导致其他节点命中率下降,导致数据库服务器崩溃
重启多次DB,多次重建缓存,才稳定
2.所有缓存数据设置同一时间重建,导致雪崩
应该分批并且有时差

无底洞

写入缓存是key的hash应该满足一些规则
尽量让相关的key使用前缀的hash值,使之一样,即缓存在同一节点

你可能感兴趣的:(分布式集群)