分布式部署

分布式文件系统之Tfs是什么?

≯℡__Kan透↙ 提交于 2019-12-02 10:42:30
Tfs 概念: TFS(Team Foundation Server)是一个高可扩展、高可用、高性能、面向互联网服务的 分布式文件系统 ,主要针对海量的非结构化数据,它构筑在普通的Linux机器集群上,可为外部提供高可靠和高并发的存储访问。 架构设计: 一个TFS集群由两个NameServer节点(一主一备)和多个DataServer节点组成 。 以block(通常为64M,可配置)为单位存储和组织数据。 这些服务程序都是作为一个用户级的程序运行在普通Linux机器上的。 NameServer主要管理维护Block和DataServer相关信息 ,包括DataServer加入,退出, 心跳信息, block和DataServer的对应关系建立,解除。 正常情况下,一个块会在DataServer上存在, 主NameServer负责Block的创建,删除,复制,均衡,整理, NameServer不负责实际数据的读写,实际数据的读写由DataServer完成。 DataServer主要负责实际数据的存储和读写。 TFS会将多个小文件存储在同一个block中,并为block建立索引,以便快速在block中定位文件;每个block会存储多个副本到不同的机架上,以保证数据的高可靠性。 为了考虑容灾,NameServer采用了HA结构,即两台机器互为热备,同时运行,一台为主,一台为备

SpringCloud的基础知识

非 Y 不嫁゛ 提交于 2019-12-02 06:47:44
二、集群/分布式/微服务/SOA是什么? 像我这种技术小白,看到这些词( 集群/分布式/微服务/SOA )的时候,感觉就是遥不可及的(高大尚的技术!!)。就好像刚学Java面向对象的时候,在论坛上翻阅资料的时候,无意看到"面向切面编程",也认为这是遥不可及的(高大尚的技术!!)。 但真正接触到"面向切面编程"的时候,发现原来就是如此啊,也没什么大不了的。只不过当时被它的名字给唬住了… 不知道各位在刚接触这些名字 集群/分布式/微服务/SOA 的时候,有没有被唬住了呢?? 下面我就简单说说这些名词的意思 2.1什么是集群 以下内容来源维基百科: 计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作。在某种意义上,他们可以被看作是一台计算机。集群系统中的单个计算机通常称为节点,通常通过局域网连接,但也有其它的可能连接方式。集群计算机通常用来改进单个计算机的计算速度和/或可靠性。一般情况下集群计算机比单个计算机,比如工作站或超级计算机性能价格比要高得多 集群技术特点: 通过 多台计算机 完成同一个工作,达到更高的效率。 两机或多机内容、工作过程等完全一样 。如果一台死机,另一台可以起作用。 在维基百科上说得也挺明白的了,我来举个 例子 吧。 小周在公司写Java程序,但公司业务在发展,一个Java开发者可能 忙不过来

hadoop完全分布式的安装部署

岁酱吖の 提交于 2019-12-02 06:18:41
hadoop完全分布式安装部署 前提 1、准备3台客户机( 关闭防火墙、静态ip、主机名称 ) 2、安装JDK 3、配置环境变量 4、安装Hadoop 5、配置环境变量 6、配置集群 7、单点启动 8、配置ssh 9、群起并测试集群 本博客只有hadoop完全分布式的“配置集群”:,其他内容可参考本博主的其他博客,谢谢!! hadoop安装 官网下载hadoop2.7.2安装包 然后直接解压文件即可 hadoop组件部署 1、集群部署规划 master slave1 slave2 HDFS NameNode Datanade Datanode SecondaryNameNode Datanode YARN NodeManager ResourceManager NodeManager NodeManager 2、配置集群 (1)核心文件配置 配置core-site.xml [ root@master hadoop ] $ vi core-site . xml 在文件<configuration> </configuration>中添加内容 < ! -- 指定HDFS中NameNode的地址 -- > < property > < name > fs . defaultFS < / name > < value > hdfs: / / master: 9000 < / value >

Dubbo Zookeeper(一)Zookeeper初识

自作多情 提交于 2019-12-02 05:22:10
前面花了一段时间去学习SpringCloud的相关知识,主要是理解微服务的概念并使用SpringCloud的一系列组件实现微服务落地。学习这些组件本身是简单的,跟着操作一遍基本就会了,这也得益于Springboot给我们带来了很多便利。实际的应用中也许还会碰到一些坑,但只要我们掌握基本的原理就能够解决。 前面也讲了微服务的解决方案有两个,一个是SpringCloud,另外一个就是 Dubbo +Zookeeper,下面我们来学习Dubbo+Zookeeper实现微服务。 在学习微服务的第一篇中,理解了微服务的概念,比较了微服务与单体应用之前的优势和劣势,讲了要实现微服务主要的技术点,最重要的两块在于服务之间的通信和服务治理。 Dubbo+ Zookeeper 要实现微服务,就必须解决这两个技术点,Dubbo是一个RPC通信框架,它可以实现服务之间的通信。ZooKeeper 是一种分布式协调服务,用于管理大型主机。在分布式环境中协调和管理服务是一个复杂的过程。 一、 分布式协调技术 上面说Zookeeper是一个分布式协调技术,那么我们就得先来学习什么是分布式协调技术。 分布式协调技术 主要用来解决分布式环境当中多个进程之间的同步控制,让他们有序的去访问某种临界资源,防止造成"脏数据"的后果。 首先,要明白我们为什么需要分布式锁,一个简单的例子,一般系统上都有一些定时任务

ES

你。 提交于 2019-12-02 05:06:06
es是分布式,高性能,高可用,可伸缩的搜索和分析系统 什么是全文检索和Lucene? (1)全文检索,倒排索引 (2)lucene,就是一个jar包,里面包含了封装好的各种建立倒排索引,以及进行搜索的代码,包括各种算法。我们就用java开发的时候,引入lucene jar,然后基于lucene的api进行去进行开发就可以了。用lucene,我们就可以去将已有的数据建立索引,lucene会在本地磁盘上面,给我们组织索引的数据结构。另外的话,我们也可以用lucene提供的一些功能和api来针对磁盘上额 ES的优点: 自动维护数据的分布到多个节点的所有的建立,还有检索请求分布到多个节点的执行 自动维护数据的冗余副本,保证说,一些机器宕机了,不会丢失任何数据 封装了更多的高级功能,以给我们提供更多高级的支持,让我们快速的开发应用,开发更多复杂的应用,复杂的检索功能,聚合分析的功能,根据地理位置的检索 1、Elasticsearch的功能 (1)分布式的搜索引擎和数据分析引擎 搜索:百度,网站的站内搜索,IT系统的检索 数据分析:电商网站,最近7天牙膏这种商品销量排名前10的商家有哪些;新闻网站,最近1个月访问量排名前3的新闻版块是哪些 功能:分布式,搜索,数据分析 (2)全文检索,结构化检索,数据分析 全文检索:我想搜索商品名称包含牙膏的商品,select * from products

分布式Session一致性简介

左心房为你撑大大i 提交于 2019-12-02 05:04:32
Session简介 是什么? Session在网络中表示“会话控制”,用于存储特定用户所需的属性和其他的配置信息; Session表示一个特定的时间间隔,可以指用户从登陆系统到注销退出系统之家的时间。 为什么出现? 因为http 是一种无状态协议,如果没有Session的话,服务器无法识别请求是否来自同一个用户! 在一些业务场景中需要知道前面的操作和后台的操作是不是同一个用户的行为,即业务之间是有关联性的。 怎么用? 使用Session结合浏览器Cookie,将服务器Session保存到浏览器cookie中,这样可以保持http会话状态。 Session服务器创建,如Tomcat,浏览器发起请求到Tomcat服务器,然后Tomcat服务器生成SessionId保存在内存中,并将SessionId返回给浏览器,浏览器通过Cookie保存SessionId信息,用户每次通过浏览器访问服务器都会带上SessionId信息,这样就可以判断每次的请求是不是同一个用户,解决http协议无状态问题。 什么是Session一致性问题 单机版的系统,比如一个Tomcat部署,是不存在Session一直性的问题,因为Session保存在一个Tomcat容器中。 Session一致性问题是由架构演进或者业务的演进中发生,从单机演进到集群或者分布式的架构 用户—> 浏览器 ----> Nginx(轮询)

Redis 分布式锁的正确实现方式(Java版)(抄)

江枫思渺然 提交于 2019-12-02 04:43:59
前言 分布式锁一般有三种实现方式: 数据库乐观锁; 基于Redis的分布式锁; 基于ZooKeeper的分布式锁 本篇博客将介绍第二种方式,基于Redis实现分布式锁。 虽然网上已经有各种介绍Redis分布式锁实现的博客,然而他们的实现却有着各种各样的问题,为了避免误人子弟,本篇博客将详细介绍如何正确地实现Redis分布式锁。 可靠性 首先,为了确保分布式锁可用,我们至少要确保锁的实现同时满足以下四个条件: 互斥性 。在任意时刻,只有一个客户端能持有锁。 不会发生死锁 。即使有一个客户端在持有锁的期间崩溃而没有主动解锁,也能保证后续其他客户端能加锁。 具有容错性 。只要大部分的Redis节点正常运行,客户端就可以加锁和解锁。 解铃还须系铃人 。加锁和解锁必须是同一个客户端,客户端自己不能把别人加的锁给解了。 代码实现 组件依赖 首先我们要通过Maven引入Jedis开源组件,在pom.xml文件加入下面的代码: <dependency> <groupId>redis.clientsgroupId> <artifactId>jedisartifactId> <version>2.9.0version> > 加锁代码 正确姿势 Talk is cheap, show me the code。先展示代码,再带大家慢慢解释为什么这样实现: public class RedisTool {

大数据导论

吃可爱长大的小学妹 提交于 2019-12-02 03:18:07
01-大数据导读  01) javaEE与大数据的区别(参考:附件资料\JavaEE大数据区别.txt) 01) javaEE业务开发(品优购电商) 电商系统架构.png 02) 大数据的体系说明(抖音推荐系统 电商精准推荐系统) 大数据架构处理流程.jpg 02) 大数据学习的建议: 01) 理解框架的功能和使用场景 02) 熟练使用(集群安装 编程开发 API使用 问题解决) 03) 框架内部的运行机制(原理) 04) 分析源码(验证运行原理) 05) 给开源贡献代码: apache committer : fink github 02-大数据离线课程介绍 01) 围绕hadoop生态圈 02) 围绕大数据处理主线 01) 数据采集 02) 数据存储 03) 数据预处理 04) 数据分析(数据仓库hive) 05) 数据应用 03) 学习技术路线: 01) hadoop中的HDFS(分布式文件存储系统) 02) hadoop中的MapReduce(分布式计算框架) 03) hive (使用sql进行数据分析的数据仓库) hbase(基于hadoop的分布式数据库) zookeeper(大数据中的基础组件,分布式协调服务) 04) 离线项目--电商网站日志分析系统: 05) 离线辅助工具集(flume sqoop oozie azkaban等技术) 06) spark基于内存计算

集群

主宰稳场 提交于 2019-12-02 03:01:58
集群是个物理形态,分布式是个工作方式。(业务分部到集群上,分布式处理业务) 集群最大的特点是物理集中、统一管理的( 一个宕机照常用,性能降一点 ),而分布式系统则不强调这一点( 服务宕机,业务就废了 )。 分布式:不同的业务模块部署在不同的服务器上或者同一个业务模块分拆多个子业务,部署在不同的服务器上,解决高并发的问题 集群:同一个业务部署在多台机器上,提高系统可用性 分布式是指将不同的业务分布在不同的地方。 而集群指的是将几台服务器集中在一起,实现同一业务。 分布式中的每一个节点,都可以做集群。 而集群并不一定就是分布式的。 只要是一堆机器,就可以叫集群,他们是不是一起协作着干活,这个谁也不知道;一个程序或系统,只要运行在不同的机器上,就可以叫分布式,嗯,C/S架构也可以叫分布式。 所以,集群可能运行着一个或多个分布式系统,也可能根本没有运行分布式系统;分布式系统可能运行在一个集群上,也可能运行在不属于一个集群的多台(2台也算多台)机器上。 布式是相对中心化而来,强调的是任务在多个物理隔离的节点上进行。中心化带来的主要问题是可靠性,若中心节点宕机则整个系统不可用,分布式除了解决部分中心化问题,也倾向于分散负载,但分布式会带来很多的其他问题,最主要的就是一致性。(nginx宕机全部GG) 集群就是逻辑上处理同一任务的机器集合,可以属于同一机房,也可分属不同的机房

详细解读分布式锁原理及三种实现方式

狂风中的少年 提交于 2019-12-01 23:48:15
目前几乎很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题。分布式的 CAP理论告诉我们“任何一个分布式系统都无法同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance),最多只能同时满足两项。”所以,很多系统在设计之初就要对这三者做出取舍。在互联网领域的绝大多数的场景中,都需要牺牲强一致性来换取系统的高可用性,系统往往只需要保证“最终一致性”,只要这个最终时间是在用户可以接受的范围内即可。 在很多场景中,我们为了保证数据的最终一致性,需要很多的技术方案来支持,比如分布式事务、分布式锁等。有的时候,我们需要保证一个方法在同一时间内只能被同一个线程执行。在单机环境中, Java中其实提供了很多并发处理相关的API,但是这些API在分布式场景中就无能为力了。也就是说单纯的Java Api并不能提供分布式锁的能力。所以针对分布式锁的实现目前有多种方案。 针对分布式锁的实现,目前比较常用的有以下几种方案: 基于数据库实现分布式锁 基于缓存( redis,memcached,tair)实现分布式锁 基于Zookeeper实现分布式锁 在分析这几种实现方案之前我们先来想一下,我们需要的分布式锁应该是怎么样的?(这里以方法锁为例,资源锁同理) 可以保证在分布式部署的应用集群中