分布式部署

分布式原理与算法--概述

旧时模样 提交于 2020-03-06 12:49:47
分布式技术地图 按照业务的架构层次栈,我自底向上按照资源、通信、数据与计算的维度,梳理出了 4 个技术层次:分布式资源池化、分布式通信、分布式数据存储与管理、分布式计算 符合了架构设计的规律,在一定资源上,进行一定通信,通过一定计算,完成一定数据的加工和处理,从而对外提供特定的服务. 因为在分布式架构下需要去解决:协同、调度、追踪高可用,还有部署的问题.那么就可以从横向的技术层次,提炼出分布式协同、分布式调度、分布式追踪与高可用、分布式部署 4 个纵向技术线. 分布式的发展 1单兵模式:单机模式 比如: 所有的模块都在一台机器上,请求处理和数据部署都可能在一台机器上 好处:功能、代码和数据集中,便于维护、管理和执行 缺点:硬件系能提升是有限的,不可能无限的提高cpu等硬件性能.性价比也需要考虑. 除此之外,还会有单点失效的问题,一台机崩溃,所有的服务都不能用 2游击队模式:数据并行或数据分布式 在单兵模式下,进行数据的拆分,执行的步骤: 一 将应用与数据分离,分别部署到不同的服务器上 二 把数据按照系统进行拆分 拆分以后系统就开始变的稍微复杂一些,需要相应的解决一些问题: 1要考虑负载均衡的问题,让每台机器的处理都比较均衡 2请求量大了,数据库的io就变成了瓶颈,那么就要进行数据库的读写分离,同时要考虑读写数据库的数据同步问题就要 3某些系统的数据库会成为热点服务器

时间序列数据库(TSDB)初识与选择(InfluxDB、OpenTSDB、Druid、Elastic

放肆的年华 提交于 2020-03-06 10:07:50
背景 这两年互联网行业掀着一股新风,总是听着各种高大上的新名词。大数据、人工智能、物联网、机器学习、商业智能、智能预警啊等等。 以前的系统,做数据可视化,信息管理,流程控制。现在业务已经不仅仅满足于这种简单的管理和控制了。数据可视化分析,大数据信息挖掘,统计预测,建模仿真,智能控制成了各种业务的追求。 “所有一切如泪水般消失在时间之中,时间正在死去“,以前我们利用互联网解决现实的问题。现在我们已经不满足于现实,数据将连接成时间序列,可以往前可以观其历史,揭示其规律性,往后可以把握其趋势性,预测其走势。 于是,我们开始存储大量时间相关的数据(如日志,用户行为等),并总结出这些数据的结构特点和常见使用场景,不断改进和优化,创造了一种新型的数据库分类——时间序列数据库(Time Series Database). 时间序列模型 时间序列数据库主要用于指处理带时间标签(按照时间的顺序变化,即时间序列化)的数据,带时间标签的数据也称为时间序列数据。 每个时序点结构如下: timestamp: 数据点的时间,表示数据发生的时间。 metric: 指标名,当前数据的标识,有些系统中也称为name。 value: 值,数据的数值,一般为double类型,如cpu使用率,访问量等数值,有些系统一个数据点只能有一个value,多个value就是多条时间序列。有些系统可以有多个value值

Docker快速部署Ceph分布式集群

≡放荡痞女 提交于 2020-03-06 00:12:14
最近工作上需要熟悉了解Ceph分布式存储,所以本地搭建一套Ceph来做测试。本文主要内容是使用Docker部署Ceph集群。 1.Ceph Ceph 是一个可靠、自动重均衡、自动恢复的分布式存储系统,根据场景划分可以将Ceph分为三大块,分别是对象存储、块设备和文件系统服务。块设备存储是Ceph的强项。 RADOS 是一个完整的分布式对象存储系统,它具有可靠、智能、分布式等特性,Ceph的高可靠、高可拓展、高性能、高自动化都是由这一层来提供的,用户数据的存储最终也都是通过这一层来进行存储的,RADOS可以说就是Ceph的核心组件。 一个Ceph存储集群至少需要一个Ceph Monitor和两个OSD守护进程。 Ceph OSDs 负责存储数据,处理数据的的复制、恢复、回填、再均衡,并通过检查其他OSD守护进程的心跳来向Ceph Monitors提供一些监控信息。 Ceph Monitors 维护者展示集群状态的各种图表 Mgr 管理进程。 2.环境准备 2.1 虚机准备 准备3台 Centos7 虚拟机,各挂载一个2G的虚拟硬盘,用于存储osd数据,例如:/dev/sdb hostname ip 部署 master 10.211.55.4 mon osd mgr node1 10.211.55.5 mon osd node2 10.211.55.6 mon osd 2.2

时间序列数据库(TSDB)初识与选择

拥有回忆 提交于 2020-03-05 23:53:43
背景 这两年互联网行业掀着一股新风,总是听着各种高大上的新名词。大数据、人工智能、物联网、机器学习、商业智能、智能预警啊等等。 以前的系统,做数据可视化,信息管理,流程控制。现在业务已经不仅仅满足于这种简单的管理和控制了。数据可视化分析,大数据信息挖掘,统计预测,建模仿真,智能控制成了各种业务的追求。 “所有一切如泪水般消失在时间之中,时间正在死去“ ,以前我们利用互联网解决现实的问题。现在我们已经不满足于现实,数据将连接成时间序列,可以往前可以观其历史,揭示其规律性,往后可以把握其趋势性,预测其走势。 于是,我们开始存储大量时间相关的数据(如日志,用户行为等),并总结出这些数据的结构特点和常见使用场景,不断改进和优化,创造了一种新型的数据库分类——时间序列数据库(Time Series Database). 时间序列模型 时间序列数据库主要用于指处理带时间标签(按照时间的顺序变化,即时间序列化)的数据,带时间标签的数据也称为时间序列数据。 每个时序点结构如下: timestamp: 数据点的时间,表示数据发生的时间。 metric: 指标名,当前数据的标识,有些系统中也称为name。 value: 值,数据的数值,一般为double类型,如cpu使用率,访问量等数值,有些系统一个数据点只能有一个value,多个value就是多条时间序列。有些系统可以有多个value值

ELK分布式日志平台搭建及其简单应用

柔情痞子 提交于 2020-03-05 23:31:34
文章目录 一、ELK简介 1、认识ELK 2、ELK架构图 3、ELFK架构 ELFK架构图 二、ELK分布式日志平台搭建 搭建流程 1、在相应容器下载所需要软件 2、安装Elasticsearch 3、解决Elasticsearch启动报错 4、安装Kibana 5、安装Logstash 三、ELK收集标准输入日志,并在web界面显示 作为运维人员,其价值不在于部署大量服务,而在于排错及服务性能优化,优化主要是考的是对服务配置及其参数的理解,而排错我们主要是借助日志文件,来完成的,早期我们借助sed、awk、grep三剑客在一般中小企业还是有很大的作用。但是在大企业的集群架构中,三剑客已经略显疲态,日志收集与处理的非常难,而且不方便。于是ELK分布式日志平台就应运而生! 大家可以用三剑客尝试模拟千万级别pv的日志分析,完全就是不可行的!百万级别的pv就已经很吃力了! 一、ELK简介 1、认识ELK ELK并不是一款独立的软件服务,而是三个软件的统称,它们分别是Elasticserach、Logstash、Kibana。ELK主要用于对大量服务器的各种日志进行集中化管理,同时可以对日志进行分析。 Elasticsearch是基于JAVA语言开发的,是分布式存储、搜索引擎,底层是使用lucene检索机制,主要是用于集中化管理日志、对日志内容进行分析和统计,实时、快速展示结果

Pinpoint 分布式请求跟踪系统的搭建

痴心易碎 提交于 2020-03-05 15:02:51
Pinpoint 是用 Java 编写的大规模分布式系统性能管理工具, 可以跟踪请求, 硬件信息收集, 请求时间统计等等 项目主页: https://github.com/naver/pinp... 前提 有分布式部署的项目可供测试 至少一台服务器 Java、Hbase、Zookeeper、Tomcat 环境 说明 个人不喜欢 hbase 自带的 zk ,如无癖好, 可随意 本文不讲解基础环境的搭建, 如不会,请自行搜索或者参考博客的其他文章 为避免部分端口不通等可疑问题, 建议关闭防火墙 下载 wget https://github.com/naver/pinpoint/releases/download/1.6.2/pinpoint-agent-1.6.2.tar.gz wget https://github.com/naver/pinpoint/releases/download/1.6.2/pinpoint-collector-1.6.2.war wget https://github.com/naver/pinpoint/releases/download/1.6.2/pinpoint-web-1.6.2.war wget https://raw.githubusercontent.com/naver/pinpoint/master/hbase/scripts/hbase

简单了解分布式系统

て烟熏妆下的殇ゞ 提交于 2020-03-05 07:58:34
随着大型网站的各种高并发访问、海量数据处理等场景越来越多,如何实现网站的高可用、易伸缩、可扩展、安全等目标就显得越来越重要。为了解决这样一系列问题,大型网站的架构也在不断发展。提高大型网站的高可用架构,不得不提的就是分布式。本文主要简单介绍了分布式系统的概念、分布式系统的特点、常用的分布式方案以及分布式和集群的区别等。 一、集中式系统 在学习分布式之前,先了解一下与之相对应的集中式系统是什么样的。 集中式系统用一句话概括就是:一个主机带多个终端。终端没有数据处理能力,仅负责数据的录入和输出。而运算、存储等全部在主机上进行。现在的银行系统,大部分都是这种集中式的系统,此外,在大型企业、科研单位、军队、政府等也有分布。集中式系统,主要流行于上个世纪。 集中式系统的最大的特点就是部署结构非常简单,底层一般采用从IBM、HP等厂商购买到的昂贵的大型主机。因此无需考虑如何对服务进行多节点的部署,也就不用考虑各节点之间的分布式协作问题。但是,由于采用单机部署。很可能带来系统大而复杂、难于维护、发生单点故障(单个点发生故障的时候会波及到整个系统或者网络,从而导致整个系统或者网络的瘫痪)、扩展性差等问题。 二、分布式系统(distributed system) 在《分布式系统概念与设计》一书中,对分布式系统做了如下定义: 分布式系统是一个硬件或软件组件分布在不同的网络计算机上

集群,分布式,微服务

為{幸葍}努か 提交于 2020-03-03 03:53:57
今天有个朋友问了我这么几个概念,我就总结了下。 集群个物理形态,分布式是个工作方式。 分布式是讲一个业务拆分成多个字业务(积分,支付,物流等等);集群把相同的一个业务部署在多台机器上。 1,分布式是将不同的业务分布在不同的地方,集群多台机器实现同一个业务。 分布式的每一个点都可以做集群,而集群不一定是分布式的 2,好的设计应该是分布式与集群的结合。先分布式再集群,对于没个单体服务都实现集群部署。这样可以保证高可用,每个子任务挂掉也不会影响整个业务的运行。 3,微服务是什么?分布式强掉的是服务化以及服务的分散化。微服务是强调的是服务的专业化和精细分工;微服务的架构通常是分布式,反之不成立。例如,一个大型的系统拆分成五个大应用,但是还是很庞大,虽然分布式了,但是不是微服务。 微服务的核心是要小。 微服务架构是分布式架构的子集。 微服务重在解耦合,使得每个模块独立。 分布式重在资源共享与加快计算速度。 分布式:分散压力;微服务:分散能力。 每个人都被大数据,分布式,微服务冲昏了头脑。过去的单体架构不一定不好,小公司没有那么多的人力去维护单体服务,也没有那么多的钱去买服务器。 来源: CSDN 作者: 冯俊伟 链接: https://blog.csdn.net/zxjgo_to_sky/article/details/104620356

分布式锁专题

那年仲夏 提交于 2020-03-02 14:26:10
分布式锁 如果你觉得我写的不错, 或者想和我多交流, 就扫一扫关注我吧, 本人公众号: stormling 1. 什么是分布式锁 分布式锁是控制分布式系统之间同步访问共享资源的一种方式。在 分布式系统 中,常常需要协调他们的动作。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要互斥来防止彼此干扰来保证 一致性 ,在这种情况下,便需要使用到分布式锁。 2. 为什么要使用分布式锁 为了保证一个方法或属性在高并发情况下的同一时间只能被同一个线程执行,在传统单体应用单机部署的情况下,可以使用Java并发处理相关的API(如ReentrantLock或Synchronized)进行互斥控制。在单机环境中,Java中提供了很多并发处理相关的API。但是,随着业务发展的需要,原单体单机部署的系统被演化成分布式集群系统后,由于分布式系统多线程、多进程并且分布在不同机器上,这将使原单机部署情况下的并发控制锁策略失效,单纯的Java API并不能提供分布式锁的能力。为了解决这个问题就需要一种跨JVM的互斥机制来控制共享资源的访问,这就是分布式锁要解决的问题! 举个例子: 机器A , 机器B是一个集群, A, B两台机器上的程序都是一样的, 具备高可用性能. A, B机器都有一个定时任务, 每天晚上凌晨2点需要执行一个定时任务,

如何使用 Redis 实现分布式锁

感情迁移 提交于 2020-03-01 07:41:33
锁是我们在设计和实现大多数系统时绕不过的话题。一旦有竞争条件出现,在没有保护的操作的前提下,可能会出现不可预知的问题。 而现代系统大多为分布式系统,这就引入了分布式锁,要求具有在分布各处的服务上保护资源的能力。 而实现分布式锁,目前大多有以下三种方式: 使用数据库实现。 使用 Redis 等缓存系统实现。 使用 Zookeeper 等分布式协调系统实现。 其中 Redis 简便灵活,高可用分布式,且支持持久化。本文即介绍基于 Redis 实现分布式锁。 SETNX 语义 使用 Redis 实现分布式锁,根本原理是 SETNX 指令。其语义如下: SETNX key value 命令执行时,如果 key 不存在,则设置 key 值为 value(同set);如果 key 已经存在,则不执行赋值操作。并使用不同的返回值标识。命令描述文档 还可以通过 SET 命令的 NX 选项使用: SET key value [expiration EX seconds|PX milliseconds] [NX|XX] NX - 仅在 key 不存在时执行赋值操作。命令描述文档 而如下文所述,通过SET的NX选项使用,可同时使用其它选项,如EX/PX设置超时时间,是更好的方式。 SETNX 实现分布式锁 下面我们对比下几种具体实现方式。 方案1:SETNX + delete 伪代码如下: setnx