分布式部署

版本控制介绍以及常用的版本控制工具

旧街凉风 提交于 2020-01-28 20:02:12
IT这个行业的小伙伴们分享一下个人对版本控制工具的理解: 作用一,备份用 是的,代码需要备份的,这可能是版本控制工具的一个比较弱的功能,但真的很管用。程序员每做一步功能性的更新和迭代,都需要备份一次,这是一个很好的习惯,而在版本控制工具中你不需要再复制和粘贴,产生大量的代码冗余,你只需要提交一次到服务器中就可以了, 注意,千万别写好几个功能后再一次提交,这并不是一个非常好的习惯,刚入行的程序员往往很容易范这个问题,一提交就好几个功能集中在一起提交。之前小编范过这个问题,提交的功能,有几个要留下有几个要弃用返回到之前的一个时间点,而这些功能错综复杂的交互数据,使这项工作施行起来要多复杂有多复杂。吃了这次教训后,才知道版本控制的重要性。 按功能提交代码的好处很多,一来,可以知道哪次提交的具体功能,方便测试的同学单元功能测试。二来,是业务上的需求,可以方便找回之前的代码,因为可能需求改来改去,感觉还是以前写的功能好,需要回到以前某个时间点上,你只需要找一找那次提交的状态码,一条命令就可以回到那个时间点,而这个场景在实际开发中是经常遇到的。这时的版本控制工具就类似时间机器,可以让你的代码和网站很方便地返回去。 作用二,协调开发用 这个功能算是版本控制器的主要功能,开发一般很少有像ruby语言一样,一个人做一套系统,大部分的公司的开发团队少则十几个人,多则上百。当多个人共同开发一套系统的时候

Dubbo 开源的分布式服务框架

人走茶凉 提交于 2020-01-27 15:24:59
Dubbo(读音[ˈdʌbəʊ])是阿里巴巴公司开源的一个高性能优秀的 服务框架 ,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 [1] Spring 框架无缝集成。 Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。 主要核心部件: Remoting: 网络通信框架,实现了 sync-over-async RPC: 一个 远程过程调用 的抽象,支持 负载均衡 、 容灾 和 集群 功能 Registry: 服务目录框架用于服务的注册和服务事件发布和订阅 工作原理: Provider 暴露服务方称之为“服务提供者”。 Consumer 调用 远程服务 方称之为“服务消费者”。 Registry 服务注册与发现的中心目录服务称之为“服务注册中心”。 Monitor 统计服务的调用次数和调用时间的日志服务称之为“服务监控中心”。 (1) 连通性: 注册中心负责服务地址的注册与查找,相当于 目录服务 ,服务提供者和消费者只在启动时与注册中心交互,注册中心不转发请求,压力较小 监控中心负责统计各服务调用次数,调用时间等,统计先在内存汇总后每分钟一次发送到监控中心服务器,并以报表展示 服务提供者向注册中心注册其提供的服务,并汇报调用时间到监控中心,此时间不包含网络开销。

分布式锁 原理及实现方式

纵饮孤独 提交于 2020-01-27 00:03:47
一、原理 分布式锁是控制分布式系统之间同步访问共享资源的一种方式。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要通过一些互斥手段来防止彼此之间的干扰,以保证一致性,在这种情况下,就需要使用分布式锁了。 在平时的实际项目开发中,我们往往很少会去在意分布式锁,而是依赖于关系型数据库固有的排他性来实现不同进程之间的互斥,但大型分布式系统的性能瓶颈往往集中在数据库操作上。 在单机环境中,Java中其实提供了很多并发处理相关的API,但是这些API在分布式场景中就无能为力了。也就是说单纯的Java Api并不能提供分布式锁的能力。 其实秒杀类场景最主要的是执行秒杀操作要单线程的,提到单线程,肯定会想到synchronized关键字,但是他有两个致命缺点:1、无法做到细粒度控制,2、只适合单点不适用集群。 所以大多数项目只能采用分布式锁的实现方式。 针对分布式锁的实现,目前比较常用的有以下几种方案:     基于数据库实现分布式锁     基于缓存(redis,memcached,tair)实现分布式锁     基于Zookeeper实现分布式锁 分布式锁主要有基于缓存如redis、基于zookeeper、基于数据库的实现。 在分析这几种实现方案之前我们先来想一下,我们需要的分布式锁应该是怎么样的?(这里以方法锁为例,资源锁同理)     

弄懂什么是分布式和微服务

一笑奈何 提交于 2020-01-26 09:35:08
转自: https://blog.csdn.net/zhonglunsheng/article/details/83153451 简单的说,微服务是架构设计方式,分布式是系统部署方式,两者概念不同 微服务是啥? 这里不引用书本上的复杂概论了,简单来说微服务就是很小的服务,小到一个服务只对应一个单一的功能,只做一件事。这个服务可以单独部署运行,服务之间可以通过RPC来相互交互,每个微服务都是由独立的小团队开发,测试,部署,上线,负责它的整个生命周期。 微服务架构又是啥? 在做架构设计的时候,先做逻辑架构,再做物理架构,当你拿到需求后,估算过最大用户量和并发量后,计算单个应用服务器能否满足需求,如果用户量只有几百人的小应用,单体应用就能搞定,即所有应用部署在一个应用服务器里,如果是很大用户量,且某些功能会被频繁访问,或者某些功能计算量很大,建议将应用拆解为多个子系统,各自负责各自功能,这就是微服务架构。 那么分布式又是啥? 分布式服务顾名思义服务是分散部署在不同的机器上的,一个服务可能负责几个功能,是一种面向SOA架构的,服务之间也是通过rpc来交互或者是webservice来交互的。逻辑架构设计完后就该做物理架构设计,系统应用部署在超过一台服务器或虚拟机上,且各分开部署的部分彼此通过各种通讯协议交互信息,就可算作分布式部署,生产环境下的微服务肯定是分布式部署的

微服务、分布式、中间件学习链接大全

我的梦境 提交于 2020-01-26 03:03:14
一、分布式 1.1、分布式-事务 (1)产生背景/基本思想Base和CAP理论: https://blog.csdn.net/RuiKe1400360107/article/details/102711821 (2)分布式事务常见解决方案: https://blog.csdn.net/RuiKe1400360107/article/details/102730601 (3)RabbitMQ解决分布式事务: https://blog.csdn.net/RuiKe1400360107/article/details/102882978 1.2、分布式-分布式协调框架Zookeeper (1)基础概念及常用命令: https://blog.csdn.net/RuiKe1400360107/article/details/103709430 (2)集群搭建与代码整合: https://blog.csdn.net/RuiKe1400360107/article/details/103774721 (3)Zookeeper实现分布式锁: https://blog.csdn.net/RuiKe1400360107/article/details/103796419 (4)解决分布式Session一致性问题、实现哨兵机制(Master选举): https://blog.csdn.net

jmeter分布式部署

感情迁移 提交于 2020-01-26 01:48:39
参考资料 https://www.cnblogs.com/beginner-boy/p/7836276.html 1.Jmeter分布式执行原理:   1、Jmeter分布式测试时,选择其中一台作为控制机(Controller),其它机器做为代理机(Agent)。   2、执行时,Controller会把脚本发送到每台Agent上,Agent 拿到脚本后开始执行,Agent执行时不需要启动Jmeter,只需要把jmeter-server.bat文件打开,它应该是通过命令行模式来执行的。   3、执行后,Agent会把结果回传给Controller,Controller会收集所有Agent的信息并汇总。 本文分三个部分: 1、windows下负载机的配置 2、Linux下负载机的配置 3、遇到的问题 ******************************************************************************** JMeter分布式执行原理如下图所示: 前提: 在调度机上安装JDK(我们这里使用1.8版本的)+Jmeter(3.3) 参考文档:http://www.cnblogs.com/beginner-boy/p/7707255.html 一、windows下负载机的配置(执行机) 1、在执行机上安装相同版本的JDk和Jmeter

MinIO 分布式集群搭建

送分小仙女□ 提交于 2020-01-25 04:19:27
MinIO 分布式集群搭建 分布式 Minio 可以让你将多块硬盘(甚至在不同的机器上)组成一个对象存储服务。由于硬盘分布在不同的节点上,分布式 Minio 避免了单点故障。 Minio 分布式模式可以搭建一个高可用的对象存储服务,你可以使用这些存储设备,而不用考虑其真实物理位置。 (1)数据保护 分布式 Minio 采用纠删码(erasure code)来防范多个节点宕机和位衰减(bit rot)。 分布式 Minio 至少需要 4 个节点,使用分布式 Minio 就自动引入了纠删码功能。 纠删码是一种恢复丢失和损坏数据的数学算法, Minio 采用 Reed-Solomon code 将对象拆分成 N/2 数据和 N/2 奇偶校验块。 这就意味着如果是 12 块盘,一个对象会被分成 6 个数据块、6 个奇偶校验块,你可以丢失任意 6 块盘(不管其是存放的数据块还是奇偶校验块),你仍可以从剩下的盘中的数据进行恢复。 纠删码的工作原理和 RAID 或者复制不同,像 RAID6 可以在损失两块盘的情况下不丢数据,而 Minio 纠删码可以在丢失一半的盘的情况下,仍可以保证数据安全。 而且 Minio 纠删码是作用在对象级别,可以一次恢复一个对象,而RAID 是作用在卷级别,数据恢复时间很长。 Minio 对每个对象单独编码,存储服务一经部署,通常情况下是不需要更换硬盘或者修复

分布式任务调度框架ApiBoot Quartz内的两种任务存储方式

可紊 提交于 2020-01-25 00:38:36
知识改变命运,撸码使我快乐,2020继续游走在开源界!!! 点赞再看,养成习惯 开源框架ApiBoot源码仓库(您的Star是对我最大的支持): https://gitee.com/minbox-projects/api-boot 前言 Quartz 是一款比较优秀的分布式任务调度框架, ApiBoot 对其封装之前就有两种任务存储方式,分别是: memory (内存方式)、 jdbc (数据库方式),不过我们需要编写一些繁琐的代码配置, ApiBoot 实现了集成后,可快速应用到项目中,而且还提供了 ApiBootQuartzService 接口用于操作任务的状态、有效性、新任务创建等,提供了一些常用方法,使用时只需要注入即可,因为该类在 ApiBootQuartzAutoConfiguration 自动化配置类中已经做了实例化。 任务存储 之前有提到 Quartz 提供了两种任务存储的方式,这两种存在什么区别呢? 内存方式 :将任务临时存储到内存中,仅支持单项目部署,项目重启后任务会失效,不支持由调度器控制任务漂移,不建议使用。 数据库方式 : Quartz 提供了多种数据库的所需表结构脚本,它内部通过 DataSource 来操作数据,支持分布式方式部署、支持任务漂移,项目重启后任务不会丢失,直到任务执行完成后才会被从数据库内清除。 默认方式 ApiBoot 在整合

zookeeper集群部署

和自甴很熟 提交于 2020-01-24 14:39:38
1.Zookeeper概念简介: Zookeeper是一个分布式协调服务;就是为用户的分布式应用程序提供协调服务 A、zookeeper是为别的分布式程序服务的 B、Zookeeper本身就是一个分布式程序(只要有半数以上节点存活,zk就能正常服务) C、Zookeeper所提供的服务涵盖:主从协调、服务器节点动态上下线、统一配置管理、分布式共享锁、统一名称服务…… D、虽然说可以提供各种服务,但是zookeeper在底层其实只提供了两个功能: 管理(存储,读取)用户程序提交的数据; 并为用户程序提供数据节点监听服务; Zookeeper常用应用场景: 《见图》 Zookeeper集群的角色: Leader 和 follower(Observer) 只要集群中有半数以上节点存活,集群就能提供服务 2.zookeeper集群机制 半数机制:集群中半数以上机器存活,集群可用。 zookeeper适合装在奇数台机器上!!! 3.安装 3.1. 安装 3.1.1.机器部署 安装到3台虚拟机上 安装好JDK 3.1.2.上传 上传用工具。 3.1.3.解压 su – hadoop(切换到hadoop用户) tar -zxvf zookeeper-3.4.5.tar.gz(解压) 3.1.4.重命名 mv zookeeper-3.4.5 zookeeper(重命名文件夹zookeeper-3

主流分布式文件系统对比:区块链分布式技术引发云存储革命?HDFS,GFS,GPFS,FusionStorage,IPFS

依然范特西╮ 提交于 2020-01-24 05:57:32
https://blog.csdn.net/weixin_45494421/article/details/98760782 概要:常见的分布式文件系统有GFS、HDFS等,也有新兴的基于区块链IPFS/Filecoin等。有的广泛应用,有的开始挑战,有的是闭源,有的开源。在不同的领域和不同的计算机发展阶段,它们都对数据存储起到了各自的作用。那么这些分布式文件系统都有什么优缺点?我们应该怎样选择适合自己的解决方案? 一、HDFS:被雅虎开源的分布式文件系统 Hadoop分布式文件系统(HDFS),是一个分布式、可扩展的Hadoop框架,具有高容错、低成本部署优势。HDFS提供对应用程序数据的高吞吐量访问,适用于具有大型数据集的应用程序。HDFS最初是作为Apache Nutch网络搜索引擎项目的基础设施而构建的,现在是Apache Hadoop子项目。 HDFS如何工作?HDFS支持计算节点之间的数据快速传输,文件系统多次复制或复制每个数据,并将副本分发到各个节点,将至少一个副本放在与其他服务器机架不同的服务器上。因此,崩溃的节点上的数据可以在群集中的其他位置找到。这可确保在恢复数据时继续处理。这使得HDFS高容错性。简单来说,HDFS将文件拆分为块,并将它们分布在集群中的节点上。 架构分析:HDFS采用的是主/从架构(master/slave )