分布式处理

一文解读分布式架构 (转)

僤鯓⒐⒋嵵緔 提交于 2019-12-14 10:11:52
一、什么是分布式架构   分布式系统(distributed system) 是建立在网络之上的软件系统。   内聚性:是指每一个数据库分布节点高度自治,有本地的数据库管理系统。   透明性:是指每一个数据库分布节点对用户的应用来说都是透明的,看不出是本地还是远程。      在分布式数据系统中,用户感觉不数据是分布的,即用户不须知道关系是否分割,有无副本,数据存在于那个站点以及事物在哪个站点上执行。   简单来说:在一个分布式系统中,一组独立的计算机展现给用户的是一个统一的整体,就好像是一个系统似的。    分布式系统作为一个整体对用户提供服务,而整个系统的内部的协作对用户来说是透明的,用户就像是指使用一个mysql 一样。 如:分布式mysql中间件 mycat ,来处理大并发大数据量的构架。 二、分布式架构的应用   1、分布式文件系统     例如:出名的有 Hadoop 的 HDFS, 还有 google的 GFS , 淘宝的 TFS 等   2、分布式缓存系统     例如:memcache , hbase, mongdb 等   3、分布式数据库     例如:mysql, mariadb, postgreSql 等   4、分布式webService   5、分布式计算    举例     以分布式mysql 数据库中间件mycat 为例         MySQL

集群和分布式的区别

守給你的承諾、 提交于 2019-12-13 14:28:14
集群 集群主要的使用场景是为了分担请求的压力,也就是在几个服务器上部署相同的应用程序,来分担客户端请求。 将多台服务器集中在一起,每台服务器都实现相同的业务,做相同的事情 但是每台服务器并不是缺一不可,存在的作用主要是缓解并发压力和单点故障转移问题。 实现:高扩展、高性能、低成本、高可用! 分布式 分布式是指 多个系统协同合作完成一个特定任务的系统 将多台服务器集中在一起,每台服务器都实现总体中的不同业务,做不同的事情。 分布式是解决中心化管理的问题,把所有的任务叠加到一个节点处理,太慢了。 所以把一个大的问题拆分为多个小的问题,并分别解决,最终协同合作。分布式的主要工作是分解任务,将职能拆解。 并且每台服务器都缺一不可,如果某台服务器故障,则网站部分功能缺失,或导致整体无法运行。 存在的主要作用是大幅度的提高效率,缓解服务器的访问和存储压力。 将一套系统拆分成不同子系统部署在不同服务器上(这叫分布式), 然后部署多个相同的子系统在不同的服务器上(这叫集群),部署在不同服务器上的同一个子系统应做负载均衡。 分布式:一个业务拆分为多个子业务,部署在多个服务器上 。 集群:同一个业务,部署在多个服务器上 。 来源: https://www.cnblogs.com/liuzs/p/12034738.html

分布式资源调度——YARN框架

柔情痞子 提交于 2019-12-13 13:16:19
YARN产生背景 YARN是Hadoop2.x才有的,所以在介绍YARN之前,我们先看一下MapReduce1.x时所存在的问题: 单点故障 节点压力大 不易扩展 MapReduce1.x时的架构如下: 可以看到,1.x时也是Master/Slave这种主从结构,在集群上的表现就是一个JobTracker带多个TaskTracker。 JobTracker:负责资源管理和作业调度 TaskTracker:定期向JobTracker汇报本节点的健康状况、资源使用情况以及作业执行情况。还可以接收来自JobTracker的命令,例如启动任务或结束任务等。 那么这种架构存在哪些问题呢: 整个集群中只有一个JobTracker,就代表着会存在单点故障的情况 JobTracker节点的压力很大,不仅要接收来自客户端的请求,还要接收大量TaskTracker节点的请求 由于JobTracker是单节点,所以容易成为集群中的瓶颈,而且也不易域扩展 JobTracker承载的职责过多,基本整个集群中的事情都是JobTracker来管理 1.x版本的整个集群只支持MapReduce作业,其他例如Spark的作业就不支持了 由于1.x版本不支持其他框架的作业,所以导致我们需要根据不同的框架去搭建多个集群。这样就会导致资源利用率比较低以及运维成本过高,因为多个集群会导致服务环境比较复杂。如下图:

分布式系统

北战南征 提交于 2019-12-13 04:48:08
第一章 分布式计算 定义: 分布式计算是研究把一个需要非常巨大的计算能力解决的问题分成许多小的部分,然后把这些部分分配给许多计算机进行处理,最后把各部分的计算结果合并起来得到的最终成果(分而治之)。 分布式计算的优缺点: 优点: 1、低廉的计算机价格和网络访问的可用性 2、资源共享 3、可伸缩性 4、容错性 缺点: 1、多点故障 2、安全性低 分布式计算的相关形式: 1、单机计算:利用单台计算机进行计算,此时计算机不与任何网络连接,因而只能使用本计算机系统内可被即时访问的所有资源。 2、并行计算:采用多个处理器来执行单个指令。并行计算是指同时使用多种计算资源解决计算问题的过程,是提高计算机系统计算速度和处理能力的一种有效手段。 3、网络计算:网络计算的概念较宽泛。网络计算的核心思想是,把网络连接起来的各种自治资源和系统组合起来,以实现资源共享、协同工作和联合计算,为各种用户提供基于网络的各类综合性服务。 4、网格计算:利用互联网把地理上广泛分布的各类资源(计算、存储、宽带、软件、数据、信息、知识等)连成一个逻辑整体,就像超级计算机,为用户提供一体化信息和应用服务(计算、存储、访问)。 5、云计算:这个概念是由Google公司提出。云计算是一种资源交付方式,使用虚拟化技术为核心。云计算的主要形式包括基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)。

分布式与集群的区别

时光总嘲笑我的痴心妄想 提交于 2019-12-12 13:10:58
下面就正经解释下三种结构的区别吧~ 单机结构 我想大家最最最熟悉的就是单机结构,一个系统业务量很小的时候所有的代码都放在一个项目中就好了,然后这个项目部署在一台服务器上就好了。整个项目所有的服务都由这台服务器提供。这就是单机结构。 那么,单机结构有啥缺点呢?我想缺点是显而易见的,单机的处理能力毕竟是有限的,当你的业务增长到一定程度的时候,单机的硬件资源将无法满足你的业务需求。此时便出现了集群模式,往下接着看。 集群结构 集群模式在程序猿界有各种装逼解释,有的让你根本无法理解,其实就是一个很简单的玩意儿,且听我一一道来。 单机处理到达瓶颈的时候,你就把单机复制几份,这样就构成了一个“集群”。集群中每台服务器就叫做这个集群的一个“节点”,所有节点构成了一个集群。每个节点都提供相同的服务,那么这样系统的处理能力就相当于提升了好几倍(有几个节点就相当于提升了这么多倍)。 但问题是用户的请求究竟由哪个节点来处理呢?最好能够让此时此刻负载较小的节点来处理,这样使得每个节点的压力都比较平均。要实现这个功能,就需要在所有节点之前增加一个“调度者”的角色,用户的所有请求都先交给它,然后它根据当前所有节点的负载情况,决定将这个请求交给哪个节点处理。这个“调度者”有个牛逼了名字——负载均衡服务器。 集群结构的好处就是系统扩展非常容易。如果随着你们系统业务的发展,当前的系统又支撑不住了

分布式概念

霸气de小男生 提交于 2019-12-12 07:39:23
集群与分布式区别 集群:复制模式,每台机器做一样的事。 分布式:两台机器分工合作,每台机器做的不一样。 分布式好处: 独立开发,部署,测试 易于扩展 复用性高,例如:所有的产品都可以使用该系统作为用户系统,无需重复开发。 架构演进 架构演进一: 早期雏形 特征:应用程序主要做静态文件读取,返回内容给浏览器。 架构演进二: 数据库开发(LAMP特长) 特征:应用程序主要主要读取数据表值,填充html模块。业务逻辑简单,写sql处理。 主要:增删改查 主要压力:来自查询,多表联合,数据量膨胀。 架构演进三: javaweb的雏形 tomcat + servlet + jsp + mysql。一个war包打天下 项目结构:ssh/ssm三层结构。 架构演进四: javaweb的集群发展 硬件机器的横向复制,对整个项目结构无影响。 架构演进五: javaweb的分布式发展 特征:将Service层单独分离出去,成为一个单独的项目jar。单独运行。 Web服务器通过rpc框架,对分离出去的service进行调用。 架构演进六: javaweb的微服务发展 从业务角度,细分业务为微服务,每一个微服务是一个完整的服务(从http请求到返回)。在微服务内部,将需要对外提供的接口,包装成rpc接口,对外部开放。 服务治理: 1、无论是分布式拆分,还是微服务拆分,最后形成的服务层应用

Redis之集群高可用与安全控制

别来无恙 提交于 2019-12-11 14:58:26
Redis 之集群高可用和安全控制 一、 Redis 的主从复制 1.1. 为什么使用主从 单个 Redis 如果因为某种原因宕机的话,可能会导致 Redis 服务不可用,可以使用主从复制实现一主多从,主节点负责写的操作,从节点负责读的操作,主节点会定期将数据同步到从节点中,保证数据一致性的问题。 1.2. 主从的方式 最少需要3个节点。 第一种: 第二种: 优先选择第二种,第一种方式主节点向从节点同步数据压力大。 1.3. 主从复制配置: 将编译之后的 Redis 中的 bin 目录中全部内容 角色 端口 配置文件 主节点 6379 redis_6379.conf 从节点 6380 redis_6380.conf 从节点 6381 redis_6381.conf 从节点 6382 redis_6382.conf 相关目录结构 内存有限,我们只模拟不同端口下的 Redis 主从复制。我模拟了一主三从,采用树状结构: 核心配置:主节点 # ip监控 bind 0.0.0.0 protected-mode no # requirepass 123456 # 端口 port 6379 # 后台运行 daemonize yes # 工作目录 dir ./ # pid pidfile "/var/run/redis_6379.pid" # 日志名 logfile "redis_6379

漫谈分布式系统

只愿长相守 提交于 2019-12-11 04:29:50
漫谈分布式系统 1.分布式架构中的相关概念 2.分布式架构的发展过程和历史 3.分布式架构的难点 ==================================== 一. 分布式架构中的相关概念 1.集群 小饭店原来只有一个厨师,切菜洗菜备料炒菜全干。后来客人多了,厨房一个厨师忙不过来,又请了个厨师,两个厨师都能炒一样的菜,这两个厨师的关系是集群 2.分布式 为了让厨师专心炒菜,把菜做到极致,又请了个配菜师负责切菜,备菜,备料,厨师和配菜师的关系是分布式,一个配菜师也忙不过来了,又请了个配菜师,两个配菜师关系是集群 3.节点 节点是指一个可以独立按照分布式协议完成一组逻辑的程序个体。在具体的项目中,一个节点表示的是一个操作系统上的进程。 4.副本 副本(replica/copy)指在分布式系统中为数据或服务提供的冗余。节点的数据丢失时,可以从副本上读取到数据。数据副本是分布式系统中解决数据丢失问题的唯一手段。服务副本表示多个节点提供相同的服务,通过主从关系来实现服务的高可用方案 5.中间件 中间件位于操作系统提供的服务之外,又不属于应用,他是位于应用和系统层之间为开发者方便的处理通信、输入输出的一类软件,能够让用户关心自己应用的部分。 二. 分布式架构的发展过程和历史 一个成熟的大型网站系统架构并不是一开始就设计的非常完美,也不是一开始就具备高性能、高可用、安全性等特性

大数据常用技术栈

谁说我不能喝 提交于 2019-12-11 02:50:32
提起大数据,不得不提由IBM提出的关于大数据的5V特点:Volume(大量)、Velocity(高速)、Variety(多样)、Value(低价值密度)、Veracity(真实性),而对于大数据领域的从业人员的日常工作也与这5V密切相关。大数据技术在过去的几十年中取得非常迅速的发展,尤以Hadoop和Spark最为突出,已构建起庞大的技术生态体系圈。 首先通过一张图来了解一下目前大数据领域常用的一些技术,当然大数据发展至今所涉及技术远不止这些。 BigData Stack: 下面分不同层介绍各个技术,当然各个层并不是字面意义上的严格划分,如Hive既提供数据处理功能也提供数据存储功能,但此处将其划为数据分析层中 1. 数据采集和传输层 Flume Flume一个分布式、可靠的、高可用的用于数据采集、聚合和传输的系统。常用于日志采集系统中,支持定制各类数据发送方用于收集数据、通过自定义拦截器对数据进行简单的预处理并传输到各种数据接收方如HDFS、HBase、Kafka中。之前由Cloudera开发,后纳入Apache Logstash ELK工作栈的一员,也常用于数据采集,是开源的服务器端数据处理管道 Sqoop Sqoop主要通过一组命令进行数据导入导出的工具,底层引擎依赖于MapReduce,主要用于Hadoop(如HDFS、Hive、HBase)和RDBMS(如mysql

zz《分布式服务架构 原理、设计与实战》综合

妖精的绣舞 提交于 2019-12-10 18:44:30
这书以分布式微服务系统为主线,讲解了微服务架构设计、分布式一致性、性能优化等内容,并介绍了与微服务系统紧密联系的日志系统、全局调用链、容器化等。 还是一样,每一章摘抄一些自己觉得有用的内容,归纳整理,然后加以理解。 第1章 分布式微服务架构设计原理 1. 由传统单体架构到服务化架构 (老生常谈,感觉所有谈到微服务的内容都是从这个角度开始叙述。) (1)J2EE是二八原则的典型应用场景:它将80%通用的与业务无关的逻辑和流程封装在应用服务器的模块化组件里,通过配置的模式提供给应用程序访问,应用程序实现20%的专用逻辑,并 通过配置的形式来访问应用服务器提供的模块化组件 。 (2)康威定律 设计系统的组织时,最终产生的设计等价于组织的沟通结构,通俗来说, 团队的交流机制应该与架构设计机制相对应 。 (3)Java AOP的实现方式有三种 1》对Java字节码进行 重新编译 ,将切面插入字节码的某些点和面上,可以使用 cglib库 实现 2》定制类加载器,在类加载时对字节码进行补充,在字节码中插入切面,增加了除业务逻辑外的功能,JVM自身提供的 Java Agent机制 就是在 加载类的字节码时 ,通过增加切面来实现AOP的。 3》JVM本身提供了 动态代理组件 ,可以通过它实现任意对象的代理模式, 在代理的过程中 可以插入切面的逻辑。可以使用Java提供的APIProxy