分布式开发

还不理解“分布式事务”?这篇给你讲清楚!

二次信任 提交于 2019-11-29 04:43:14
这篇文章将介绍什么是分布式事务,分布式事务解决什么问题,对分布式事务实现的难点,解决思路,不同场景下方案的选择,通过图解的方式进行梳理、总结和比较。相信耐心看完这篇文章,谈到分布式事务,不再只是有“2PC”、“3PC”、“MQ的消息事务”、“最终一致性”、“TCC”等这些知识碎片,而是能够将知识连成一片,形成知识体系。 什么是事务 介绍分布式事务之前,先介绍什么是事务。 事务的具体定义 事务提供一种机制将一个活动涉及的所有操作纳入到一个不可分割的执行单元,组成事务的所有操作只有在所有操作均能正常执行的情况下方能提交,只要其中任一操作执行失败,都将导致整个事务的回滚。 简单地说,事务提供一种“ 要么什么都不做,要么做全套(All or Nothing)”机制。 数据库事务的 ACID 属性 事务是基于数据进行操作,需要保证事务的数据通常存储在数据库中,所以介绍到事务,就不得不介绍数据库事务的 ACID 特性。 ACID 指数据库事务正确执行的四个基本特性的缩写,包含: 原子性(Atomicity) 整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。 事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。 例如:银行转账,从 A 账户转 100 元至 B 账户,分为两个步骤:从 A 账户取 100 元。存入

【git】------git的基本介绍及linux的基本命令

假如想象 提交于 2019-11-29 02:33:20
【git】------git的基本介绍及linux的基本命令 001、git简介 git是一款开源的分布式版本控制工具 在世界上所有的分布式版本控制工具中,git是最快、最简单、最流行的 git的起源 作者是Linux之父:Linus Benedict Torvalds 当初开发git仅仅是为了辅助Linux内核的开发(管理源代码) git的现状 在国外已经非常普及,国内并未普及(在慢慢普及) 越来越多的开源项目已经转移到git 002、git和svn的简单对比 速度 在很多情况下,git的速度远远比SVN快 结构 SVN是集中式管理,git是分布式管理 其他 SVN使用分支比较笨拙,git可以轻松拥有无限个分支 SVN必须联网才能正常工作,git支持本地版本控制工作 旧版本的SVN会在每一个目录置放一个.svn,git只会在根目录拥有一个.git 分布式和集中式的最大区别在于:在分布式下 开发者可以本地提交 每个开发者机器上都有一个服务器的数据库 备份文件 记录历史 回到过去 多端共享 003、git的工作流 工作区:在工作中编写的代码 暂存区:暂存,帮我们保存代码 作为过渡层 避免误操作 保护工作区和版本区 分支处理 版本区:管理版本,版本库中的代码操作产生版本 004、linux的一些基本命令 1、pwd:查看路径 2、cd/f:打开某个文件夹 3、touch 文件名

分布式技术-Zookeeper-概述

我怕爱的太早我们不能终老 提交于 2019-11-29 01:12:28
ZooKeeper是一种 分布式协调服务 ,用于管理大型主机。在分布式环境中协调和管理服务是一个复杂的过程。ZooKeeper通过其简单的架构和API解决了这个问题。ZooKeeper允许开发人员专注于核心应用程序逻辑,而不必担心应用程序的分布式特性。 ZooKeeper框架最初是在“Yahoo!"上构建的,用于以简单而稳健的方式访问他们的应用程序。 后来,Apache ZooKeeper成为Hadoop,HBase和其他分布式框架使用的有组织服务的标准。 例如,Apache HBase使用ZooKeeper跟踪分布式数据的状态。 分布式的相関概念 分布式应用:分布式应用可以在给定时间(同时)在网络中的多个系统上运行,通过协调它们以快速有效的方式完成特定任务。 集群:分布式应用正在运行的一组系统称为集群 节点:在集群中运行的每台机器被称为节点 分布式应以由两部分组成,分别是客户端和服务器。服务器应用程序实际上是分布式的,并具有通用接口,客户端访问任意一台服务器都可以获得相同的结果。 什么是ZooKeeper ZooKeeper是由集群(节点组)使用的 一种服务 ,用于在 自身之间协调 ,并通过稳健的 同步技术维护共享数据 。ZooKeeper本身是一个分布式应用程序,为写入分布式应用程序 提供服务 。 ZooKeeper的特点: 简单、同步、有序、序列化、可靠性、原子性

分布式锁02--zookeeper

家住魔仙堡 提交于 2019-11-29 01:11:55
一.简介 Zookeeper 是Google 的 Chubby一个开源的实现,是 Hadoop 的分布式协调服务。 它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。 为什么使用Zookeeper : 大部分分布式应用需要一个主控、协调器或控制器来管理物理分布的子进程(如资源、任务分配等) 目前,大部分应用需要开发私有的协调程序,缺乏一个通用的机制 协调程序的反复编写浪费,且难以形成通用、伸缩性好的协调器 ZooKeeper:提供通用的分布式锁服务,用以协调分布式应用 ZooKeeper能帮我们做什么? Hadoop2.0,使用Zookeeper的事件处理确保整个集群只有一个活跃的NameNode,存储配置信息等。 HBase,使用Zookeeper的事件处理确保整个集群只有一个HMaster,察觉HRegionServer联机和宕机,存储访问控制列表等。 二.分布式锁 分布式锁,这个主要得益于ZooKeeper为我们保证了数据的强一致性。锁服务可以分为两类,一个是保持独占,另一个是控制时序。 所谓保持独占 ,就是所有试图来获取这个锁的客户端,最终只有一个可以成功获得这把锁。通常的做法是把zk上的一个znode看作是一把锁,通过 create znode的方式来实现。所有客户端都去创建 /distribute_lock 节点

Zookeeper 分布式协调服务介绍

巧了我就是萌 提交于 2019-11-29 01:11:36
公众号原文: Zookeeper 分布式协调服务介绍 博客原文: Zookeeper 分布式协调服务介绍 分布式系统 分布式系统的简单定义:分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。 分布式系统的特征: 分布性:系统中的计算机在空间上随意分布和随时变动 对等性:系统中的计算机是对等的,没有主从之分 并发性:并发性操作是非常常见的行为 缺乏全局时钟:系统中的计算机具有明显的分布性,且缺乏一个全局的时钟序列控制,所以很难比较两个事件的先后 故障总是会发生:任何在设计阶段考虑到的异常情况,一定会在系统实际运行中发生,并且还会遇到很多在设计时未考虑到的异常故障 随着分布式架构的出现,越来越多的分布式应用会面临数据一致性问题。 选择Zookeeper Zookeeper是一个典型的分布式数据一致性解决方案,分布式应用程序可以基于它实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、master选举、分布式锁和分布式队列等功能。 Zookeeper致力于提供一个高性能、高可用,具有严格的顺序访问控制能力的分布式协调服务;其主要的设计目标是简单的数据模型、可以构建集群、顺序访问、高性能。Zookeeper已经成为很多大型分布式项目譬如Hadoop、HBase、Storm、Solr等中的核心组件,用于分布式协调。

小D课堂 - 新版本微服务springcloud+Docker教程_2_01传统架构演进到分布式架构

让人想犯罪 __ 提交于 2019-11-29 00:17:41
笔记 第二章 架构演进和分布式系统基础知识 1、传统架构演进到分布式架构 简介:讲解单机应用和分布式应用架构演进基础知识 (画图) 高可用 LVS+keepalive :负载均衡的知识点 1、单体应用: 开发速度慢 启动时间长 依赖庞大 等等 2、微服务 易开发、理解和维护 独立的部署和启动 等 不足: 分布式系统-》分布式事务问题 需要管理多个服务-》服务治理 开始 一般是ngix做负载均衡 来源: https://www.cnblogs.com/wangjunwei/p/11434407.html

【须弥SUMERU】分布式安全服务编排实践

纵然是瞬间 提交于 2019-11-28 22:34:57
一、概要 1.分布式安全服务编排概念 2.须弥(Sumeru)关键实现思路 3.应用场景 二、前言 在笔者看来,安全防御的本质之一是增加攻击者的攻击成本,尤其是时间成本。那么从防御的角度来说,如何尽早和及时地发现潜在的安全风险变得尤为重要,因此安全扫描对时效性要求很高。在进行自身检测的同时,数以万计攻击者也在时刻探测着你的安全风险。乐观者可能不以为然,但事实上做安全就是木桶原理,短板是攻击者的首选。如果加上验证程序开发和落地的时间开销,可能又会造成一定的发现时延。有时候出了问题,就要与时间赛跑,及时避损或止损。 另外,分布式技术一直以来被用于解决单机性能瓶颈,而且像漏洞扫描器这类安全产品开发者对分布式这个概念也一直有着很深的执念,因为在漏报率和误报率达到某种瓶颈之后,扫描速度成为了另外一个突破口。 安全扫描周期较长也是我们在之前实际工作中遇到的痛点,加上安全防御是整个面而不是单个点,所以想要形成面,需求真的是不要太多,所以扫描工具研发和运维成本较高的问题也同样令人头秃,借此,本文为大家介绍宜信安全团队应用分布式安全服务编排的实践经验,虽说依然存在许多不足之处,但也达成了不少预期效果,总之,希望大家能有所收获或参考。 三、需求简述 3.1 缩短安全扫描周期 举例:端口扫描周期较长,目标:10000+个IP ,全端口+服务指纹扫描,从7小时优化到30分钟内。Masscan

用分布式存储VSAN实现Harbor Registry的高可用方案

寵の児 提交于 2019-11-28 21:38:07
用分布式存储VSAN实现Harbor Registry的高可用方案 陈实 张海宁 不久前,VMware发布了Docker容器数据卷的驱动(Docker Volume Driver for vSphere)1.0 beta版本,使得Docker宿主机能够直接在vSphere的数据存储(VSAN,VMFS,NFS等)中创建卷,并直接挂载到Docker容器中,可以解决Docker容器的数据持久化存储的问题。不仅可以提供存储,这些卷还能利用vSphere的“基于存储策略的管理(SPBM, Storage Policy Based Management)”, 按需设置更高的“可容忍主机故障数(FTT)”、设置更大的“条带数(SW)”等,以获得更高级别的数据保护和更好的性能。此驱动为开源项目,下载地址: https://github.com/vmware/docker-volume-vsphere 在容器应用架构中,Registry(容器镜像仓库)是必不可少的组件,负责保存和发布容器镜像,高效可靠的Registry是确保容器应用运行的基础。本文通过详细的步骤,来说明如何在分布式存储Virtual SAN (VSAN)中创建数据卷,并以开源企业级Harbor Registry为例,把镜像和数据库数据持久化到数据卷中,从而达到更好的数据保护和高可用性(HA)的目的。本文涉及的Harbor

分布式配置中心Apollo——QuickStart

本小妞迷上赌 提交于 2019-11-28 20:59:21
分布式配置中心 剥离配置文件,实现动态修改,自动更新。 【假设没有分布式配置中心,修改配置文件后都需要重启服务,对于数量庞多的微服务开发来说,就会非常繁琐】 分布式配置中心有哪些 disconf(依赖zookeeper) zookeeper diamond (阿里巴巴) Apollo Redis xxl-job 为什么选择Apollo Apollo除了功能完备之外,在国内的普及度也相当广泛,也就意味着国内Apollo的生态非常活跃。虽然中国式过马路的行为并不提倡,但群众的眼睛有时还是雪亮的。 实战 环境准备: 阿里云CentOS7.6 jdk1.8 安装jdk1.8 yum search jdk yum install java-1.8.0-openjdk.x86_64(可选) java -version 安装MySQL 配置yum源 wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm yum localinstall mysql57-community-release-el7-8.noarch.rpm 安装mysql yum install mysql-community-server 启动mysql systemctl start mysqld systemctl restart

分布式RPC框架

不想你离开。 提交于 2019-11-28 18:01:13
分布式RPC框架Apache Dubbo 学习目标 了解软件架构的演进过程 掌握Dubbo框架的架构 能够使用命令启动和停止Zookeeper 掌握Dubbo服务提供者和消费者开发 了解Dubbo管理控制台dubbo-admin 第一章-软件架构的演进过程 知识点-软件架构的演进过程 1.目标 ​ 软件架构的发展经历了由单体架构、垂直架构、【SOA架构,微服务】架构的演进过程.我们需要对软件架构的演进过程有一定的了解. 2.路径 单体架构 垂直架构 SOA架构 微服务架构 3.讲解 3.1单体架构 架构说明 全部功能集中在一个项目里面(All in one). 架构优点 项目架构简单,前期开发成本低,周期短,小型项目的首选。 架构缺点 ​ 耦合度比较高,不好维护和扩展 ​ 对于大项目,部署后性能比较低 ​ 技术栈受限,只能使用一种语言开发 ​ 解决高并发只能通过集群,成本高 3.2垂直架构 ​ 随着互联网的发展,用户越来越多,软件技术也得到了很大的发展,人们开始研究一些技术使其与底层硬件交互会更加友好等。及某系统流量访问某模块占比很高,而其他模块没有什么流量访问,如果都部署到一起占用的资源就浪费了,如果分开部署,流量高的部署到一台高性能服务器,而流量低的部署到一台普通的服务器,两个模块之间的交互用WebService、RPC等方式进行访问。那样就可以解决上述传统架构的缺点问题.