分布式架构

sona:Spark on Angel大规模分布式机器学习平台介绍

自闭症网瘾萝莉.ら 提交于 2019-12-13 07:49:35
Angel是一个基于参数服务器(Parameter Server)开发的高性能分布式机器学习平台,它基于腾讯内部的海量数据进行了反复的调优。 Angel的核心设计理念围绕模型,将高维度的大模型切分到多个参数服务器节点,并通过高效的模型更新接口和运算函数,以及灵活的同步协议,轻松实现各种高效的机器学习算法。 Angel基于Java和scala开发,能在Yarn上直接调度运行,并基于PS Service,支持Spark on Angel,集成了部分图计算和深度学习算法。 Angel-PS实现了基于参数服务器的矩阵计算,将分布在多台PS Server上的参数矩阵抽象为PSModel,只需要完成PSModel的定义、实现其计算过程,就可以实现一个运行在参数服务器上的简单算法。 简单的angel-ps架构如下图所示 PS是存储矩阵参数的多台机器,向计算节点提供矩阵参数的拉取、更新服务 每个worker是一个逻辑计算节点,一个worker可以运行一或多个task 机器学习的算法,一般以迭代的方式训练,每次迭代worker从PS拉取最新的参数,计算一个更新值,推送给PS Angel整体架构 angel的架构分为三大模块: 1、 Parameter Server层 :提供通用的参数服务器服务,负责模型的分布存储,通讯同步和协调计算,并通过PSAgent提供PS Service 2、worker层

SpringCloud分布式微服务云架构 第七篇: 高可用的分布式配置中心(Spring Cloud Config)(Finchley版本)

有些话、适合烂在心里 提交于 2019-12-12 18:20:45
上一篇文章讲述了一个服务如何从配置中心读取文件,配置中心如何从远程git读取配置文件,当服务实例很多时,都从配置中心读取文件,这时可以考虑将配置中心做成一个微服务,将其集群化,从而达到高可用,架构图如下: 一、准备工作 继续使用上一篇文章的工程,了解springcloud架构可以加求求:三五三六二四七二五九创建一个eureka-server工程,用作服务注册中心。 在其pom.xml文件引入Eureka的起步依赖spring-cloud-starter-netflix- eureka-server,代码如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.forezp</groupId> <artifactId>config-server<

分布式事务问题解决方案

社会主义新天地 提交于 2019-12-12 17:22:52
在分布式系统中,同时满足“一致性”、“可用性”和“分区容错性”三者是不可能的。分布式系统的事务一致性是一个技术难题,各种解决方案孰优孰劣?老司机介绍 丁浪,现就职于某垂直电商平台,担任技术架构师。关注高并发、高可用的架构设计,对系统服务化、分库分表、性能调优等方面有深入研究和丰富实践经验。热衷于技术研究和分享。 在OLTP系统领域,我们在很多业务场景下都会面临事务一致性方面的需求,例如最经典的Bob给Smith转账的案例。传统的企业开发,系统往往是以单体应用形式存在的,也没有横跨多个数据库。 我们通常只需借助开发平台中特有数据访问技术和框架(例如Spring、JDBC、ADO.NET),结合关系型数据库自带的事务管理机制来实现事务性的需求。关系型数据库通常具有ACID特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。 而大型互联网平台往往是由一系列分布式系统构成的,开发语言平台和技术栈也相对比较杂,尤其是在SOA和微服务架构盛行的今天,一个看起来简单的功能,内部可能需要调用多个“服务”并操作多个数据库或分片来实现,情况往往会复杂很多。单一的技术手段和解决方案,已经无法应对和满足这些复杂的场景了。 分布式系统的特性 对分布式系统有过研究的读者,可能听说过“CAP定律”、“Base理论”等,非常巧的是

分布式与集群的区别

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

SpringCloud分布式微服务云架构 第五篇: 路由网关(zuul)(Finchley版本)

眉间皱痕 提交于 2019-12-12 10:58:04
SpringCloud分布式微服务云架构 第五篇: 路由网关(zuul)(Finchley版本) 在微服务架构中,需要几个基础的服务治理组件,包括服务注册与发现、服务消费、负载均衡、断路器、智能路由、配置管理等,了解springcloud架构可以加求求:三五三六二四七二五九,由这几个基础组件相互协作,共同组建了一个简单的微服务系统。一个简答的微服务系统如下图: 注意:A服务和B服务是可以相互调用的,作图的时候忘记了。并且配置服务也是注册到服务注册中心的。 在Spring Cloud微服务系统中,一种常见的负载均衡方式是,客户端的请求首先经过负载均衡(zuul、Ngnix),再到达服务网关(zuul集群),然后再到具体的服。,服务统一注册到高可用的服务注册中心集群,服务的所有的配置文件由配置服务管理(下一篇文章讲述),配置服务的配置文件放在git仓库,方便开发人员随时改配置。 一、Zuul简介 Zuul的主要功能是路由转发和过滤器。路由功能是微服务的一部分,比如/api/user转发到到user服务,/api/shop转发到到shop服务。zuul默认和Ribbon结合实现了负载均衡的功能。 zuul有以下功能: Authentication Insights Stress Testing Canary Testing Dynamic Routing Service

分布式概念

霸气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 13:16:47
redis支持丰富的数据类型,从最基础的string到复杂的常用到的数据结构都有支持: string:最基本的数据类型,二进制安全的字符串,最大512M。 list:按照添加顺序保持顺序的字符串列表。 set:无序的字符串集合,不存在重复的元素。 sorted set:已排序的字符串集合。 hash:key-value对的一种集合。 bitmap:更细化的一种操作,以bit为单位。 hyperloglog:基于概率的数据结构。 2、集群(Cluster) 单台服务器资源的总是有上限的,CPU资源和IO资源我们可以通过主从复制,进行读写分离,把一部分CPU和IO的压力转移到从服务器上。但是内存资源怎么办,主从模式做到的只是相同数据的备份,并不能横向扩充内存;单台机器的内存也只能进行加大处理,但是总有上限的。所以我们就需要一种解决方案,可以让我们横向扩展。最终的目的既是把每台服务器只负责其中的一部分,让这些所有的服务器构成一个整体,对外界的消费者而言,这一组分布式的服务器就像是一个集中式的服务器一样(之前在解读REST的博客中解释过分布式于基于网络的差异:基于网络应用的架构)。 在Redis官方的分布式方案出来之前,有twemproxy和codis两种方案,这两个方案总体上来说都是依赖proxy来进行分布式的,也就是说redis本身并不关心分布式的事情

IPFS(filecoin)分布式储存挖矿为什么需要使用GPU

吃可爱长大的小学妹 提交于 2019-12-11 07:53:24
前天,著名分布式存储项目FileCoin放出消息,FileCoin挖矿将来极大可能会使用到GPU。消息一出,存储行业一片哗然。使用GPU挖矿,说明需要大量的计算资源,就像比特币和以太坊的POW挖矿一样。大家一直都认为,存储挖矿主要是要使用硬盘的存储资源,为什么现在需要用到算力资源呢? 其实,了解FileCoin的设计,和这个项目的发展路线图,就应该看到,使用GPU是必然趋势。现在我们就这个项目来讨论一下,为什么FileCoin挖矿需要GPU。 首先在FileCoin发布的设计规格书里,算法这一章,时空证明这一节里早就写明了需要用到Election PoSt,即新的节点选举算法在区块生成时,必须提供PoST的证明。这个设计就导致对PoST证明的性能有要求。而GPU是目前加速PoST证明生成的一个可行方案。 4.3.1.2 选举时空证明 为了缩短时空证明的响应时间,被选中的出块矿工必须提交时空证明,所以叫做选举时空证明。当矿工赢得一个区块时,他们需要立即生成时空证明,并将其与被选证明一起提交。 StoragePowerConsenusSubsystem 在区块验证的同时也要检查被选证明和时空证明。当一个块被选中时,会出现一条特殊消息,该消息会去调用 SubmitElectionPoSt ,它将以提交 SubmitSurprisePoSt 成功的相同的方式处理扇区更新。 简单的说

漫谈分布式系统

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

【分布式事务】ACID/BASE/CAP + TCC/2PC/Soga/....

旧巷老猫 提交于 2019-12-10 23:32:17
事务的具体定义 事务提供一种机制将一个活动涉及的所有操作纳入到一个不可分割的执行单元,组成事务的所有操作只有在所有操作均能正常执行的情况下方能提交,只要其中任一操作执行失败,都将导致整个事务的回滚。简单地说,事务提供一种“要么什么都不做,要么做全套(All or Nothing)”机制。 数据库本地事务 ACID 数据库事务中的四大特性,ACID: A:原子性(Atomicity) 一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。 就像你买东西要么交钱收货一起都执行,要么要是发不出货,就退钱。 C:一致性(Consistency) 事务的一致性指的是在一个事务执行之前和执行之后数据库都必须处于一致性状态。如果事务成功地完成,那么系统中所有变化将正确地应用,系统处于有效状态。如果在事务中出现错误,那么系统中的所有变化将自动地回滚,系统返回到原始状态。 I:隔离性(Isolation) 指的是在并发环境中,当不同的事务同时操纵相同的数据时,每个事务都有各自的完整数据空间。由并发事务所做的修改必须与任何其他并发事务所做的修改隔离。事务查看数据更新时,数据所处的状态要么是另一事务修改它之前的状态,要么是另一事务修改它之后的状态