数据库集群

MongoDB高手进阶指南

不羁的心 提交于 2020-02-28 11:00:39
一、概述 (1)版本历程 0.x 起步节点 1.x 支持复制集和分片 2.x 更加丰富的数据库功能 3.x 合并了一家专门做数据库引擎的Wired Tiger公司,更加完善的周边生态环境 4.x 支持 分布式事务 MongoDB的正式版本都是 偶数版本 ,x.x.x,主要版本(x.x)大约每年升级一次,小版本主要是修复问题,通常1-2个月发布一次。 MongoDB支持原生高可用:Application通过Driver连接到Primary节点,一个Primary节点连接多个Secondary节点。 MongoDB支持 水平扩展,分片集群 :Driver连接多个Mongos,Mongos连接多个Shard,每个Shard都是一个Primary和多个Secondary。 二、复制集 主要用于 实现服务的高可用 (1)特征 MongoDB的复制集主要具备如下特征: 快速复制 :数据写入时将数据迅速复制到另一个节点。 故障转移 :在接受写入的节点发生故障的时候自动选择另一个新的节点代替。 其他作用:数据分发、读写分离、异地容灾。 (2)MongoDB的数据复制原理 一个修改 操作会被记录到oplog ,有一个 线程监听oplog ,如果有变动就会将这个变动应用到其他的数据库上。 从节点在主节点上打开一个 tailable游标 ,不断获取新加入的oplog,并在从库上 回放 。 (3

分布式调度平台 xxl-job 个人改进(灌水)思路

旧街凉风 提交于 2020-02-26 02:06:09
分布式调度平台 xxl-job 个人改进(灌水)思路 本人 刚入门 后端开发, 错误之处请批评指正 被导师安排的🌚 本人于2019年9月6日与同事进行的分享 1 xxl-job 是什么 1.1 xxl-job 是什么 轻量级、易扩展的分布式任务调度框架 通过Cron表达式配置计划任务 0 0/30 9-18 ? * MON-FRI 朝九晚六每半个小时执行 支持多语言(Java、Shell、Python、NodeJS、PHP、PowerShell 等,需要执行器部署环境支持),任务逻辑可在 Web 界面编写代码,或在执行器编写代码 1.2 常见任务调度框架 Quartz Java 常用计划任务框架,虽然 Quartz 可以基于数据库实现作业的高可用,但分布式并行调度方面有所欠缺。 elastic-job 当当开发的弹性分布式任务调度系统,功能丰富强大,采用 zookeeper 实现分布式协调,实现任务高可用以及分片。 xxl-job 是大众点评员工徐雪里于2015年发布的分布式任务调度平台,是一个轻量级分布式任务调度框架,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。 1.3 xxl-job 与 elastic-job 怎么选 xxl-job 核心设计目标是开发迅速、学习简单、轻量级、易扩展 登记在用公司数>228家 开箱即用 持续更新,社区活跃、文档齐全 elastic

Redis 集群以及应用

那年仲夏 提交于 2020-02-24 04:25:54
相关阅读: 史上最全Redis高可用技术解决方案大全 Raft协议实战之Redis Sentinel的选举Leader源码解析 目录: Redis 集群以及应用 集群 主从复制 主从链(拓扑结构) 复制模式 问题点 哨兵机制 拓扑图 节点下线 Leader选举 故障转移 读写分离 定时任务 分布式集群(Cluster) 拓扑图 通讯 集中式 Gossip 寻址分片 hash取模 一致性hash hash槽 使用场景 热点数据 会话维持 Session 分布式锁 SETNX 表缓存 消息队列 list 计数器 string 缓存设计 更新策略 更新一致性 缓存粒度 缓存穿透 解决方案 缓存雪崩 出现后应对 请求过程 Redis 集群以及应用 集群 主从复制 主从链(拓扑结构) 复制模式 全量复制:Master 全部同步到 Slave 部分复制:Slave 数据丢失进行备份 问题点 同步故障 复制数据延迟(不一致) 读取过期数据(Slave 不能删除数据) 从节点故障 主节点故障 配置不一致 maxmemory 不一致:丢失数据 优化参数不一致:内存不一致. 避免全量复制 选择小主节点(分片)、低峰期间操作. 如果节点运行 id 不匹配(如主节点重启、运行 id 发送变化),此时要执行全量复制,应该配合哨兵和集群解决. 主从复制挤压缓冲区不足产生的问题(网络中断,部分复制无法满足)

构建高并发高可用的电商平台架构实践

為{幸葍}努か 提交于 2020-02-17 07:25:52
一、 设计理念 1. 空间换时间 1) 多级缓存,静态化 客户端页面缓存(http header中包含Expires/Cache of Control,last modified(304,server不返回body,客户端可以继续用cache,减少流量),ETag) 反向代理缓存 应用端的缓存(memcache) 内存数据库 Buffer、cache机制(数据库,中间件等) 2) 索引 哈希、B树、倒排、bitmap 哈希索引适合综合数组的寻址和链表的插入特性,可以实现数据的快速存取。 B树索引适合于查询为主导的场景,避免多次的IO,提高查询的效率。 倒排索引实现单词到文档映射关系的最佳实现方式和最有效的索引结构,广泛用在搜索领域。 Bitmap是一种非常简洁快速的数据结构,他能同时使存储空间和速度最优化(而不必空间换时间),适合于海量数据的的计算场景。 2. 并行与分布式计算 1) 任务切分、分而治之(MR) 在大规模的数据中,数据存在一定的局部性的特征,利用局部性的原理将海量数据计算的问题分而治之。 MR模型是无共享的架构,数据集分布至各个节点。处理时,每个节点就近读取本地存储的数据处理(map),将处理后的数据进行合并(combine)、排序(shuffle and sort)后再分发(至reduce节点),避免了大量数据的传输,提高了处理效率。 2) 多进程、多线程并行执行

构建高并发高可用的电商平台架构实践

我们两清 提交于 2020-02-17 07:05:25
从各个角度总结了电商平台中的架构实践,由于时间仓促,定了个初稿,待补充完善,欢迎大家一起交流。 转载请声明出处: http://blog.csdn.net/yangbutao/article/details/12242441 作者:杨步涛 关注分布式架构、大数据、搜索、开源技术 QQ:306591368 技术Blog: http://blog.csdn.net/yangbutao 一、 设计理念 1. 空间换时间 1) 多级缓存,静态化 客户端页面缓存(http header中包含Expires/Cache of Control,last modified(304,server不返回body,客户端可以继续用cache,减少流量),ETag) 反向代理缓存 应用端的缓存(memcache) 内存数据库 Buffer、cache机制(数据库,中间件等) 2) 索引 哈希、B树、倒排、bitmap 哈希索引适合综合数组的寻址和链表的插入特性,可以实现数据的快速存取。 B树索引适合于查询为主导的场景,避免多次的IO,提高查询的效率。 倒排索引实现单词到文档映射关系的最佳实现方式和最有效的索引结构,广泛用在搜索领域。 Bitmap是一种非常简洁快速的数据结构,他能同时使存储空间和速度最优化(而不必空间换时间),适合于海量数据的的计算场景。 2. 并行与分布式计算 1) 任务切分、分而治之

构建高并发高可用的电商平台架构实践

时间秒杀一切 提交于 2020-02-17 06:44:57
从各个角度总结了电商平台中的架构实践,由于时间仓促,定了个初稿,待补充完善,欢迎大家一起交流。 转载请声明出处: http://blog.csdn.net/yangbutao/article/details/12242441 作者:杨步涛 关注分布式架构、大数据、搜索、开源技术 QQ:306591368 技术Blog: http://blog.csdn.net/yangbutao 一、 设计理念 1. 空间换时间 1) 多级缓存,静态化 客户端页面缓存(http header中包含Expires/Cache of Control,last modified(304,server不返回body,客户端可以继续用cache,减少流量),ETag) 反向代理缓存 应用端的缓存(memcache) 内存数据库 Buffer、cache机制(数据库,中间件等) 2) 索引 哈希、B树、倒排、bitmap 哈希索引适合综合数组的寻址和链表的插入特性,可以实现数据的快速存取。 B树索引适合于查询为主导的场景,避免多次的IO,提高查询的效率。 倒排索引实现单词到文档映射关系的最佳实现方式和最有效的索引结构,广泛用在搜索领域。 Bitmap是一种非常简洁快速的数据结构,他能同时使存储空间和速度最优化(而不必空间换时间),适合于海量数据的的计算场景。 2. 并行与分布式计算 1) 任务切分、分而治之

《大型网站技术架构:核心原理与案例分析》笔记

情到浓时终转凉″ 提交于 2020-02-10 02:59:33
目录 · 大型网站软件系统的特点 · 大型网站架构演化发展历程 · 初始阶段的网站架构 · 需求/解决问题 · 架构 · 应用服务和数据服务分离 · 需求/解决问题 · 架构 · 使用缓存改善网站性能 · 需求/解决问题 · 架构 · 使用应用服务器集群改善网站的并发处理能力 · 需求/解决问题 · 架构 · 数据库读写分离 · 需求/解决问题 · 架构 · 使用反向代理和CDN加速网站响应 · 需求/解决问题 · 架构 · 使用分布式文件系统和分布式数据库系统 · 需求/解决问题 · 架构 · 使用NoSQL和搜索引擎 · 需求/解决问题 · 架构 · 业务拆分 · 需求/解决问题 · 架构 · 分布式服务 · 需求/解决问题 · 架构 · 大型网站架构演化心得 · 大型网站架构模式 · 综述 · 分层 · 概念 · 目的 · 举例 · 分割 · 概念 · 目的 · 举例 · 分布式 · 概念 · 目的 · 缺点 · 举例 · 集群 · 概念 · 目的 · 缓存 · 概念 · 目的 · 举例 · 异步 · 概念 · 目的 · 冗余 · 概念 · 目的 · 举例 · 自动化 · 目的 · 举例 · 安全 · 举例 · 大型网站核心架构要素 · 性能 · 网站性能测试 · 不同视角下的网站性能 · 性能测试指标 · 性能测试方法 · 性能测试报告 · Web前端性能优化 ·

大型分布式电商系统架构演进史?

妖精的绣舞 提交于 2020-02-09 15:26:11
文章目录 概述 作者简介 一、大型分布式网站架构技术 1、大型网站的特点 2、大型网站架构目标 3、大型网站架构模式 4、高性能架构 5、高可用架构 6、可伸缩架构 7、可扩展架构 8、安全架构 9、敏捷性 10、大型架构举例 二、大型电商网站系统架构演变过程 1、最开始的网站架构 2、应用、数据、文件分离 3、利用缓存改善网站性能 4、使用集群改善应用服务器性能 5、数据库读写分离和分库分表 6、使用CDN和反向代理提高网站性能 7、使用分布式文件系统 8、使用NoSQL和搜索引擎 9、将应用服务器进行业务拆分 10、搭建分布式服务 三、一张图说明电商架构 四、大型电商网站架构案例 概述 本文是学习大型分布式网站架构的技术总结。对架构一个高性能、高可用、可伸缩及可扩展的分布式网站进行了概要性描述,并给出一个架构参考。文中一部分为读书笔记,一部分是个人经验总结,对大型分布式网站架构有较好的参考价值。 作者简介 烂皮猪,十余年工作经验,曾在Google等外企工作过几年,精通Java、分布式架构,微服务架构以及数据库,最近正在研究大数据以及区块链,希望能够突破到更高的境界 一、大型分布式网站架构技术 1、大型网站的特点 用户多,分布广泛 大流量,高并发 海量数据,服务高可用 安全环境恶劣,易受网络攻击 功能多,变更快,频繁发布 从小到大,渐进发展 以用户为中心 免费服务,付费体验 2

MySQL数据库集群实战(3)——MySQL主从复制之半同步复制

半世苍凉 提交于 2020-02-08 01:04:26
文章目录 一、掌握Mysql复制方式的区别及优缺点 二、了解半同步复制出现的必要性 半同步工作原理 三、配置半同步复制 实验环境 一、掌握Mysql复制方式的区别及优缺点 异步复制(Asynchronous replication) MySQL默认的复制即是异步的,主库在执行完客户端提交的事务后会立即将结果返给给客户端,并不关心从库是否已经接收并处理,这样就会有一个问题,主如果crash掉了,此时主上已经提交的事务可能并没有传到从上,如果此时,强行将从提升为主,可能导致新主上的数据不完 全同步复制(Fully synchronous replication) 指当主库执行完一个事务,所有的从库都执行了该事务才返回给客户端。因为需要等待所有从库执行完该事务才能返回,所以全同步复制的性能必然会收到严重的影响。 半同步复制(Semisynchronous replication) 介于异步复制和全同步复制之间,主库在执行完客户端提交的事务后不是立刻返回给客户端,而是等待至少一个从库接收到并写到relay log中才返回给客户端。相对于异步复制,半同步复制提高了数据的安全性,同时它也造成了一定程度的延迟,这个延迟最少是一个TCP/IP往返的时间。所以,半同步复制最好在低延时的网络中使用。 在2010年MySQL 5.5版本之前,一直采用的是这种异步复制的方式

MySQL数据库集群实战(4)——MySQL主从复制之全同步复制(单主模式和多主模式)

好久不见. 提交于 2020-02-08 00:23:12
文章目录 一、mysql全同步复制(组复制) 1、理解组复制工作原理 2、搭建mysql全同步复制多主模式 实验环境 实验 3、多主模式切换成单主模式 4、单主模式切换成多主模式 一、mysql全同步复制(组复制) 1、理解组复制工作原理 MySQL组复制是一个MySQL插件,它基于常规的MySQL复制,利用了基于行格式的二进制日志和GTID等特性。 MySQL组复制是MySQL 5.7.17开始引入的新功能,为主从复制实现高可用功能。它支持单主模型和多主模型两种工作方式 (默认是单主模型) 。 单主模型:从复制组中众多个MySQL节点中自动选举一个master节点,只有master节点可以写,其他节点自动设置为read only。当master节点故障时,会自动选举一个新的master节点,选举成功后,它将设置为可写,其他slave将指向这个新的master。 多主模型:复制组中的任何一个节点都可以写,因此没有master和slave的概念,只要突然故障的节点数量不太多,这个多主模型就能继续可用。 组由多个服务器构成,通过传递消息进行交互,通信层保证原子消息传递。MGR构建于此通信层抽象之上,并实现了多主更新复制协议。组中的每个服务器独立地执行事务,但是所有读写事务只有在得到组的批准后才会提交。只读事务在组内不需要协调,因此立即提交。对于任何读写事务