集群技术

为什么CAP不能同时满足?

此生再无相见时 提交于 2020-03-01 07:46:01
写在前面 在当今信息爆炸的时代,单台计算机已经无法负载日益增长的业务发展,虽然也有性能强大的超级计算机,但是这种高端机不仅费用高昂,也不灵活,一般的企业是负担不起的,而且也损失不起,那么将一群廉价的普通计算机组合起来,让它们协同工作就像一台超级计算机一样地对外提供服务,就成了顺其自然的设想,但是这又增加了软件的复杂度,要求开发的软件需要具备横向扩展能力,比如:Kafka、Elasticsearch、Zookeeper等就属于这一类软件,它们天生都是"分布式的",即可以通过添加机器节点来共同地分摊数据存储和负载压力。 为什么需要集群? 分布在不同区域的计算机,彼此之间通过网络建立通信,相互协作作为一个整体对外提供服务,这就是集群,如果我们开发的系统具备这样的能力,那么理论上就具备无限横向扩容的能力,系统的吞吐量就会随着机器数增加而增长,那么未来当系统出现高负载的时候,就可以很好地应对这种情况。 为什么CAP不能同时满足? 通过上面分析,我们知道实现集群,其实就是采用多台计算机来共同承担和负载系统压力,那么就涉及到多台计算机需要参与一起处理数据,为了保证可用性,一般都会在每台计算机上备份一份数据,这样只要有一个节点保持同步状态,那么数据就不会丢失,比如kafka分区多副本、Elasticsearch的副本分片,由于同一数据块及其副本位于不用的机器,随着时间的推移,再加上不可靠的网络通信

负载均衡的mariadb集群搭建

无人久伴 提交于 2020-02-29 22:16:14
集群介绍: Galera是一个MySQL(也支持MariaDB,Percona)的同步多主集群软件,目前只支持InnoDB引擎。 主要功能: 同步复制 真正的multi-master,即所有节点可以同时读写数据库 自动的节点成员控制,失效节点自动被清除 新节点加入数据自动复制 真正的并行复制,行级 用户可以直接连接集群,使用感受上与MySQL完全一致 优势: 因为是多主,所以不存在Slave lag(延迟) 不存在丢失交易的情况 同时具有读和写的扩展能力 更小的客户端延迟 节点间数据是同步的,而Master/Slave模式是异步的,不同slave上的binlog可能是不同的 实现技术: Galera集群的复制功能基于Galera library实现,为了让MySQL与Galera library通讯,特别针对MySQL开发了wsrep API。 实践操作:负载均衡集群搭建 1 .下载mariadb集群 wget http://mirrors.opencas.cn/mariadb/mariadb-galera-10.0.17/bintar-linux-x86_64/mariadb-galera-10.0.17-linux-x86_64.tar.gz 2. 添加mariadb用户和组 groupadd mariadb useradd -g mariadb mariadb 3.

阿里云HPC助力新制造 | 上汽仿真计算云SSCC

a 夏天 提交于 2020-02-29 03:56:09
摘要: 据了解,借助阿里云,上汽乘用车实现了工程开发仿真能力升级,仿真计算效率提升了25%,使工程开发人员更加专注于产品设计和性能优化,打造出世界级产品的高品质。今年北京车展上全球首秀的概念车MG X-Motion,其量产车的卓越整车性能正是经过上汽仿真计算云平台反复验证和优化的。 随着上汽集团与阿里云的合作开展,阿里云各项技术逐步深入到上汽汽车研发领域的核心业务实现落地。其中上海汽车集团股份有限公司乘用车分公司(以下简称上汽乘用车)与阿里云共建的仿真计算混合云就是新制造产业升级的典型代表项目。 上汽乘用车作为上汽集团全资子公司,承担着上汽自主品牌汽车的研发、制造与销售,拥有荣威、MG两大品牌,上海、南京和英国三地技术研发中心,上海临港、南京浦口和英国长桥三个制造基地。伴随上汽乘用车的市场表现强劲,车型研发工作也在持续加速升级,而为工程仿真服务的的计算资源供应开始远远落后于现实需求,具体表现为: 【研发需求强烈】 当前CAE仿真计算已经承担非常重要的任务,普遍出现计算任务工况多、规模大、时间紧的情况,迫切需要快速获取高性能计算资源; 【资源迭代滞后】 当前上汽乘用车建设的本地HPC集群虽然经历多次扩建,但是硬件资源严重老化,硬件资源故障率居高不下,计算性能难以满足业务需求,且资源更新迭代速度缓慢,严重影响仿真研发业务进度; 【 用户体验欠佳】

LVS原理详解及部署之二:LVS原理详解(3种工作方式8种调度算法)

孤者浪人 提交于 2020-02-28 23:37:16
-------------------LVS专题------------------------ LVS原理详解及部署之一:ARP原理准备 LVS原理详解及部署之二:LVS原理详解(3种工作方式8种调度算法) LVS原理详解及部署之三:手动部署LVS LVS原理详解及部署之四:keepalived介绍 LVS原理详解及部署之五:LVS+keepalived实现负载均衡&高可用 ------------------------------------------------- 一、集群简介 什么是集群 计算机集群 简称 集群 是一种 计算机系统 ,它通过一组松散集成的 计算机软件 和/或硬件连接起来高度紧密地协作完成计算工作。在某种意义上,他们可以被看作是一台计算机。 集群系统 中的单个计算机通常称为节点,通常通过局域网连接,但也有其它的可能连接方式。 集群计算机 通常用来改进单个计算机的计算速度和/或可靠性。一般情况下 集群计算机 比单个计算机,比如工作站或 超级计算机 性能价格比要高得多。 集群就是一组独立的计算机,通过网络连接组合成一个组合来共同完一个任务 LVS在企业架构中的位置: 以上的架构只是众多企业里面的一种而已。绿色的线就是用户访问请求的数据流向。用户-->LVS负载均衡服务器--->apahce服务器--->mysql服务器&memcache服务器&共享存储服务器

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

分布式集群架构学习笔记

为君一笑 提交于 2020-02-28 03:09:21
分布式和集群 分布式和集群是不⼀样的,分布式⼀定是集群,但是集群不⼀定是分布式(因为集群就是多个实例⼀起 ⼯作,分布式将⼀个系统拆分之后那就是多个实例;集群并不⼀定是分布式,因为复制型的集群不是拆 分⽽是复制) 第⼀部分 ⼀致性Hash算法 Hash算法,⽐如说在安全加密领域MD5、SHA等加密算法,在数据存储和查找⽅⾯有Hash表等, 以上 都应⽤到了Hash算法。 为什么需要使⽤Hash? Hash算法较多的应⽤在数据存储和查找领域,最经典的就是Hash表,它的查询效率⾮常之⾼,其中的 哈希算法如果设计的⽐较ok的话,那么Hash表的数据查询时间复杂度可以接近于O(1),示例 需求:提供⼀组数据 1,5,7,6,3,4,8,对这组数据进⾏存储,然后随便给定⼀个数n,请你判断n是否存在 于刚才的数据集中? list:List[1,5,7,6,3,4,8] // 通过循环判断来实现 for(int element: list) { if(element == n) { 如果相等,说明n存在于数据集中 } } 以上这种⽅法叫做顺序查找法 :这种⽅式我们是通过循环来完成,⽐较原始,效率也不⾼ ⼆分查找:排序之后折半查找,相对于顺序查找法会提⾼⼀些效率,但是效率也并不是特别好 我能否不循环!不⼆分!⽽是通过⼀次查询就把数据n从数据集中查询出来???可以! 定义⼀个数组,数组⻓度

干货分享,值得收藏:搞懂这些redis知识点,还怕干不过面试官?

爷,独闯天下 提交于 2020-02-28 00:49:45
是数据结构而非类型 很多文章都会说,redis支持5种常用的数据类型,这其实是存在很大的歧义。redis里存的都是二进制数据,其实就是字节数组(byte[]),这些字节数据是没有数据类型的,只有把它们按照合理的格式解码后,可以变成一个字符串,整数或对象,此时才具有数据类型。 这一点必须要记住。所以任何东西只要能转化成字节数组(byte[])的,都可以存到redis里。管你是字符串、数字、对象、图片、声音、视频、还是文件,只要变成byte数组。 因此redis里的String指的并不是字符串,它其实表示的是一种最简单的数据结构,即一个key只能对应一个value。这里的key和value都是byte数组,只不过key一般是由一个字符串转换成的byte数组,value则根据实际需要而定。 在特定情况下,对value也会有一些要求,比如要进行自增或自减操作,那value对应的byte数组必须要能被解码成一个数字才行,否则会报错。 那么List这种数据结构,其实表示一个key可以对应多个value,且value之间是有先后顺序的,value值可以重复。 Set这种数据结构,表示一个key可以对应多个value,且value之间是没有先后顺序的,value值也不可以重复。 Hash这种数据结构,表示一个key可以对应多个key-value对,此时这些key

一篇文章带你搞定 ElasticSearch 术语

心不动则不痛 提交于 2020-02-27 23:43:01
这篇文章主要介绍 ElasticSearch 的基本概念,学习文档、索引、集群、节点、分片等概念,同时会将 ElasticSearch 和关系型数据库做简单的类比,还会简单介绍 REST API 的使用用法。 ElasticSearch 术语 索引和文档是偏向于逻辑上的概念,节点和分片更偏向于物理上的概念。 首先来说下什么是文档: 文档(Document) ElasticSearch(简称 ES) 是面向文档的, 文档是所有可搜索数据的最小单位 。 给大家举几个例子,让大家更形象地理解什么是文档: 日志文件中日志项 一本电影的具体信息、一张唱片的详细信息 MP3 播放器里的一首歌、一篇 PDF 文档中的具体内容 一条客户数据、一条商品分类数据、一条订单数据 大家可以把文档理解为关系型数据库中的一条记录。 在 ES 中文档会被序列化成 JSON 格式 ,保存在 ES 中,JSON 对象由字段组成,其中每个字段都有对应的字段类型(字符串/数组/布尔/日期/二进制/范围类型)。 在 ES 中,每个文档都有一个 Unique ID,可以 自己指定 ID 或者通过 ES 自动生成 。 在上一篇文章 手把手教你搭建 ELK 实时日志分析平台 中,我们讲到了通过 Logstash 向 ES 中导入数据,其中部分测试数据集和对应的转换后的格式如下所示: movieId,title,genres

ElasticSearch集群

风流意气都作罢 提交于 2020-02-27 20:56:37
ES为什么要实现集群 在单台ES服务器节点上,随着业务量的发展索引文件慢慢增多,会影响到效率和内存存储问题等。 如果使用ES集群,会将单台服务器节点的索引文件使用分片技术,分布式的存放在多个不同的物理机器上,从而可以实现高可用、容错性等。 es核心存放的是索引。 什么是分片技术 将数据拆分成多台节点进行存放。 ES是如何解决高并发 ES是一个分布式全文检索框架,隐藏了复杂的处理机制,内部使用 分片机制、集群发现、分片负载均衡请求路由。 Shards 分片:代表索引分片,es可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上。构成分布式搜索。分片的数量只能在索引创建前指定,并且索引创建后不能更改。 Replicas分片:代表索引副本,es可以设置多个索引的副本,副本的作用一是提高系统的容错性,当某个节点某个分片损坏或丢失时可以从副本中恢复。二是提高es的查询效率,es会自动对搜索请求进行负载均衡。 ES集群核心原理分析 1、每个索引会被分成多个分片shards进行存储,默认创建索引是分配5个分片进行存储,每个分片都会分布式部署在多个不同的节点上进行部署,该分片成为primary shards 主分片。 查看索引分片信息 http://192.168.0.110:9200/myindex/_settings 结果为: { "myindex":

Zookeeper知识梳理

丶灬走出姿态 提交于 2020-02-27 13:23:31
转载自: https://hadyang.github.io/interview/docs/architecture/distributed/zk/ 分布式应用 分布式应用可以在给定时间(同时)在网络中的多个系统上运行,通过协调它们以快速有效的方式完成特定任务。通常来说, 对于复杂而耗时的任务,非分布式应用(运行在单个系统中)需要几个小时才能完成,而分布式应用通过使用所有系统涉及的计算能力可以在几分钟内完成 。 通过将分布式应用配置为在更多系统上运行,可以进一步减少完成任务的时间。分布式应用正在运行的一组系统称为 集群 ,而在集群中运行的每台机器被称为 节点 。 分布式应用的优点 可靠性:单个或几个系统的故障不会使整个系统出现故障。 可扩展性:可以在需要时增加性能,通过添加更多机器,在应用程序配置中进行微小的更改,而不会有停机时间。 透明性:隐藏系统的复杂性,并将其显示为单个实体/应用程序。 分布式应用的挑战 竞争条件:两个或多个机器尝试执行特定任务,实际上只需在任意给定时间由单个机器完成。例如,共享资源只能在任意给定时间由单个机器修改。 死锁:两个或多个操作等待彼此无限期完成。 不一致:数据的部分失败。 ZooKeeper基础 Apache ZooKeeper是由集群(节点组)使用的一种服务,用于在自身之间协调,并通过稳健的同步技术维护共享数据