分布式技术

分布式系统的发展演变以及RPC简介

限于喜欢 提交于 2019-12-16 00:03:38
场景 什么是分布式系统 分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统。 分布式系统是建立在网络之上的软件系统。 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书、教程推送与免费下载。 实现 单一应用架构 当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。 单一应用结构特点 适用于小型网站,小型管理系统,将所有功能都部署到一个功能里,简单易用。 缺点: 1、性能扩展比较难 2、协同开发问题 3、不利于升级维护 垂直应用结构 当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。此时,用于加速前端页面开发的Web框架(MVC)是关键。 垂直应用结构特点 通过切分业务来实现各个模块独立部署,降低了维护和部署的难度,团队各司其职更易管理,性能扩展也更方便,更有针对性。 缺点: 公用模块无法重复利用,开发性的浪费 分布式服务架构 当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。此时,用于提高业务复用及整合的分布式服务框架(RPC)是关键。

分布式锁

佐手、 提交于 2019-12-15 09:57:13
概述 为了防止分布式系统中的多个进程之间相互干扰,我们需要一种分布式协调技术来对这些进程进行调度。而这个分布式协调技术的核心就是来实现这个分布式锁。 为什么要使用分布式锁 成员变量 A 存在 JVM1、JVM2、JVM3 三个 JVM 内存中 成员变量 A 同时都会在 JVM 分配一块内存,三个请求发过来同时对这个变量操作,显然结果是不对的 不是同时发过来,三个请求分别操作三个不同 JVM 内存区域的数据,变量 A 之间不存在共享,也不具有可见性,处理的结果也是不对的 注:该成员变量 A 是一个有状态的对象 如果我们业务中确实存在这个场景的话,我们就需要一种方法解决这个问题,这就是分布式锁要解决的问题 分布式锁应该具备哪些条件 在分布式系统环境下,一个方法在同一时间只能被一个机器的一个线程执行 高可用的获取锁与释放锁 高性能的获取锁与释放锁 具备可重入特性(可理解为重新进入,由多于一个任务并发使用,而不必担心数据错误) 具备锁失效机制,防止死锁 具备非阻塞锁特性,即没有获取到锁将直接返回获取锁失败 分布式锁的实现有哪些 Memcached:利用 Memcached 的 add 命令。此命令是原子性操作,只有在 key 不存在的情况下,才能 add 成功,也就意味着线程得到了锁。 Redis:和 Memcached 的方式类似,利用 Redis 的 setnx 命令

p2p

风流意气都作罢 提交于 2019-12-15 09:03:33
1.概念原理 现在基本上很多网络应用的软件都涉及p2p技术(QQ,PPS,对战平台…),p2p技术旨在于摒弃以前只能从服务器获得资源的观念,每台电脑都是一个peer,都可以从其他peer上获取自己想要的资源,而同时自己也在向他人共享自己的资源.这里有一个很大的优势就是可以极大程度节省服务器的带宽. 打个比喻,优酷和pps,一个是基于服务器->客户端的模式,一个是p2p技术,优酷要想为用户提供高清视频只能通过优化视频压缩(例如最新的H.264)和增大自身服务器带宽.而pps完全不用担心带宽问题,只要用户数量多的话基本上可以满速观看视频. 在这里在停停,pps采用的是rmvb压缩封装,体积比h264flv大上十倍,但是pps依然可以流畅观看.这就是p2p技术的优势. 在中国大部分用户都使用路由器或交换器之类的其他NAT设备来共享网络,这使得不同内网的用户之间的交流变得十分困难,p2p技术的出现确实另其变得可行和简便. 2.发展历程 自P2P广受关注以来,它的发展历程大致可以分为3个阶段: 第一阶段,1999年至2000年左右,P2P技术由应用开发向学术研究发展。因为当时P2P技术刚重新受到关注,涌现了许多著名的P2P应用系统,但由于P2P存在安全、标准和版权等缺陷,许多应用都被扼杀。P2P技术的完善迫在眉睫,于是越来越多的学者开始研究P2P技术,旨在更好地应用它。 第二阶段

大数据平台Hadoop的分布式集群环境搭建

感情迁移 提交于 2019-12-14 21:42:24
1 概述 本文章介绍大数据平台Hadoop的分布式环境搭建、以下为Hadoop节点的部署图,将NameNode部署在master1,SecondaryNameNode部署在master2,slave1、slave2、slave3中分别部署一个DataNode节点 NN=NameNode(名称节点) SND=SecondaryNameNode(NameNode的辅助节点) DN=DataNode(数据节点) 2 前期准备 (1)准备五台服务器 如:master1、master2、slave1、slave2、slave3 (2)关闭所有服务器的防火墙 $ systemctl stop firewalld$ systemctldisablefirewalld (3)分别修改各服务器的/etc/hosts文件,内容如下: 192.168.56.132 master1 192.168.56.133 master2 192.168.56.134 slave1 192.168.56.135 slave2 192.168.56.136 slave3 注:对应修改个服务器的/etc/hostname文件,分别为 master1、master2、slave1、slave2、slave3 (4)分别在各台服务器创建一个普通用户与组 $ groupadd hadoop#增加新用户组$ useradd

配置分布式集群方案要考虑哪些关键点?

我的未来我决定 提交于 2019-12-14 11:30:11
用户可以体验分布式NAS集群EonStor CS出色而稳定的性能,以及所具备的配置灵活性。本文针对一些客户的需求信息,提出设计解决方案所考虑的几个要点,以便满足客户的需求。 容量 在选择数据保护级别时,容量是最重要的因素之一。 客户一般会预先提供原始容量或可用容量的要求。 在Infortrend分布式文件系统中,我们采用纠删码/副本技术跨节点保护数据。对于看重容量的应用,建议用户通过纠删码来保护数据,因为纠删码在容量使用率上效果更好。 而特别强调数据关键性的应用程序,副本会更满足这类的需求。 EonStor CS还保留Infortrend RAID技术保护单个节点的数据,并且保持出色的性能以进行纵向扩展。 EonStor CS有3种RAID级别可供选择: 性能模式–在所有RAID模式中性能最高。 用户使用硬盘做RAID5。 平衡模式–用户使用硬盘做RAID5。但留下一颗或多颗盘做热备,这样提供更好的数据保护,并且也具备良好的容量使用情况。 保护模式–用户使用硬盘做RAID 6。在所有RAID模式中对数据的保护最高 用户可以最低部署1个节点的EonStorCS集群,获得最基本的保护级别(专用分布式文件系统),用户还可以将集群扩展到144个节点,进行横向扩展。CS纵向扩展时,有两种扩展柜规格可供使用:3U16盘位和4U60盘位。 一个节点最多可以连接3个3U 16盘的扩展柜

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

僤鯓⒐⒋嵵緔 提交于 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

大数据平台Hadoop的分布式集群环境搭建

拈花ヽ惹草 提交于 2019-12-14 09:40:19
1 概述 本文章介绍大数据平台Hadoop的分布式环境搭建、以下为Hadoop节点的部署图,将NameNode部署在master1,SecondaryNameNode部署在master2,slave1、slave2、slave3中分别部署一个DataNode节点 NN=NameNode(名称节点) SND=SecondaryNameNode(NameNode的辅助节点) DN=DataNode(数据节点) 2 前期准备 (1)准备五台服务器 如:master1、master2、slave1、slave2、slave3 (2)关闭所有服务器的防火墙 $ systemctl stop firewalld$ systemctldisablefirewalld (3)分别修改各服务器的/etc/hosts文件,内容如下: 192.168.56.132 master1 192.168.56.133 master2 192.168.56.134 slave1 192.168.56.135 slave2 192.168.56.136 slave3 注:对应修改个服务器的/etc/hostname文件,分别为 master1、master2、slave1、slave2、slave3 (4)分别在各台服务器创建一个普通用户与组 $ groupadd hadoop#增加新用户组$ useradd

PHP高性能分布式应用服务器框架-SwooleDistributed

元气小坏坏 提交于 2019-12-13 21:21:15
选择SD框架助力企业开发 今年年底历时2年多的迭代,这是SD框架硕果满满的一年,通过不断的迭代和改进SD框架已经在圈内有良好的口碑,不少新生的框架借鉴了SD的设计思想,SD框架也被不少创业型公司和大型企业使用。 SD框架到底是什么技术 SD框架全称SwooleDistributed,从名称上看一个是Swoole一个是Distributed,他是基于Swoole扩展的可以分布式部署的应用服务器框架。 借助于PHP的高效开发环境,Swoole的高性能异步网络通信引擎,以及其他的高可用的扩展和工具,SD框架提供给广大开发者一个稳定的高效的而且功能强大的应用服务器框架。 入门成本 老实的说相对比目前热门的FPM框架来说,SD的入门成本相对还是比较高的,因为设计理念不同以及和传统PHP-FPM环境完全不同的运行环境,对于长时间使用LAMP(LANP)技术的开发人员来说会有一段时间的适应期,如果开发应用简单涉及到的系统复杂度低,那么SD上手还是比较容易,根据简单的例子和文档几乎立即就能开启SD的探索之旅,但是如果开发的是复杂的应用那么SD包含的众多组件还是需要你慢慢熟悉上手的。 SD框架到底包含哪些强大的功能呢 我们这里列举下SD提供的各种各样的功能以及模块组件 混合协议 SD框架支持长连接协议TCP,WebSocket,短连接协议HTTP,以及UDP。

XXL-JOB v2.1.2 发布,分布式任务调度平台

寵の児 提交于 2019-12-13 21:01:36
v2.1.2 Release Notes 1、方法任务支持:由原来基于JobHandler类任务开发方式,优化为支持基于方法的任务开发方式;因此,可以支持单个类中开发多个任务方法,进行类复用 @XxlJob("demoJobHandler") public ReturnT<String> execute(String param) { XxlJobLogger.log("hello world"); return ReturnT.SUCCESS; } 2、移除commons-exec,采用原生方式实现,降低第三方依赖; 3、执行器回调乱码问题修复; 4、调度中心dispatcher servlet加载顺序优化; 5、执行器回调地址https兼容支持; 6、多个项目依赖升级至较新稳定版本; 注意:最新版本 “XxlJobSpringExecutor” 逻辑有调整,历史项目中该组件的配置方式请参考Sample示例项目进行调整,尤其注意需要移除组件的init和destroy方法; 简介 XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JJtGgu9p-1576235029271)(https://raw

分布式系统

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