分布式技术

企业级分布式 HTAP 数据库管理系统 TBase

两盒软妹~` 提交于 2019-12-04 22:01:41
TBase 是腾讯数据平台团队在开源的 PostgreSQL 基础上研发的企业级分布式 HTAP 数据库管理系统: 具备高性能可扩展的分布式事务能力,支持 RC 和 RR 两种隔离级别; 通过安全、管理、审计三权分立体系,提供全方位的数据安全保证机制; 支持高性能分区表,可使得数据检索效率成倍提升; SQL 方面兼容 2003 标准、PostgreSQL 语法和常用 Oracle 函数&数据类型、窗口函数等; 提供大小商户数据分离、冷热数据分离等高效的数据治理能力 TBase 架构: 集群中有三种节点类型,各自承担不同的功能,通过网络连接成为一个系统。这三种节点类型分别是: Coordinator:协调节点,对外提供接口,负责数据的分发和查询规划,多个节点位置对等,每个节点都提供相同的数据库视图,CN 存储系统的全局元数据。 Datanode:处理存储本节点相关的元数据,每个节点还存储数据的一个分片。在功能上,DN 节点负责完成执行协调节点分发的执行请求。 GTM: 全局事务管理器(Global transaction manager.),负责管理集群事务信息,同时管理集群的全局对象,比如序列,除此之外 GTM 上不提供其他的功能。 TBase 功能介绍: 分布式事务全局一致性能力:通过拥有自主专利的分布式事务一致性技术,包括两阶段提交(Two Phase Commit

基于Hadoop架构下的FineBI大数据引擎技术原理

老子叫甜甜 提交于 2019-12-04 20:57:49
随着各个业务系统的不断增加,以及各业务系统数据量不断激增,业务用户的分析诉求越来越多且变化很快,IT数据支撑方的工作变得越来越复杂。 1、数据来自多个不同的系统,存在需要跨数据源分析,需要对接各种不同数据源等问题。 2、需要分析的数据体量越来越大,并且要快速获得分析结果的问题。 3、部分数据还需要二次加工处理的问题。 供数支撑方在业务系统的前端看起来基本没有任何操作,但背后的逻辑十分复杂,实现难度也很大。就像看得到的是冰山一角,看不到的是海水下绝大部分的支撑。 为了解决日益激增的大数据量分析诉求,大部分公司会通过搭建Hadoop、Spark等大数据架构,配以BI工具做数据层面的分析,来搭建这样一整套大数据分析平台。 大数据分析很关键的一个点在于性能:取数快不快,分析响应快不快,能否实时? 这个问题除了平台的底层架构,BI( 商业智能 )的运行性能也有很大相关。 大家可能普遍认为的BI,就是一个数据展现工具,在前端看起来没有太多有技术含量的操作,但背后的逻辑十分复杂,实现难度也很大。就像看得到的是冰山一角,看不到的是海水下绝大部分的支撑。 好的BI工具都有与之依赖的数据引擎,数据引擎的作用一方面是数据响应的性能(数据量、速率),还有很重要的一点是能否适应企业不同业务情况的模式/方案。比如小数据快速读取,大数据分布式并行运算,节点数据实时展现等等..... FineBI V5

分布式中几种服务注册与发现组件的原理与比较

ε祈祈猫儿з 提交于 2019-12-04 20:11:06
Eureka、Consul、Zookeeper的基本原理与比较。 前言 在云计算和容器化技术发展火热的当下,对于微服务架构,服务注册与发现组件是必不可少的。在传统的服务架构中,服务的规模处于运维人员的可控范围内。当部署服务的多个节点时,一般使用静态配置的方式实现服务信息的设定。在微服务应用中,服务实例的数量和网络地址都是动态变化的,这对系统运维提出了巨大的挑战。因此,动态的服务注册与发现就显得尤为重要。 解决的问题 在一个分布式系统中,服务注册与发现组件主要解决两个问题:服务注册和服务发现。 服务注册:服务实例将自身服务信息注册到注册中心。这部分服务信息包括服务所在主机IP和提供服务的Port,以及暴露服务自身状态以及访问协议等信息。 服务发现:服务实例请求注册中心获取所依赖服务信息。服务实例通过注册中心,获取到注册到其中的服务实例的信息,通过这些信息去请求它们提供的服务。 除此之外,服务注册与发现需要关注监控服务实例运行状态、负载均衡等问题。 监控:微服务应用中,服务处于动态变化的情况,需要一定机制处理无效的服务实例。一般来讲,服务实例与注册中心在注册后通过心跳的方式维系联系,一旦心跳缺少,对应的服务实例会被注册中心剔除。 负载均衡:同一服务可能同时存在多个实例,需要正确处理对该服务的负载均衡。 CAP CAP原则,指的是在一个分布式系统中,Consistency(一致性)

区块链和分布式数字账本正火?如何在7天内快速掌握这些必备的知识

时光毁灭记忆、已成空白 提交于 2019-12-04 16:27:06
前言 读研期间,几次被问到:“什么是区块链?”“我怎么学习区块链”。甚至跟“上至九十九”(爷爷奶奶),“下至刚会走的”(小学生的弟弟妹妹)解释过我的研究内容。因此想总结一份7天的学习计划(大量资料警告),让那些对区块链感兴趣的人快速入门。区块链技术的被运用到各行各业,尤其是各界(商界和政府)都对区块链技术创新高度重视。本文总结了诸多入门区块链的主要资源,博客、书籍和视频,希望帮你用7天时间获取必要的区块链基础知识。 作者 : 宇宙之一粟 ,转载请先声明出处 公众号 : 宇宙之一粟 ,关注公众号获取更多相关资源 介绍 区块链,刚开始听起来会很新颖,因为是一个英文组合词汇( Block + Chain )。区块:存放数据的载体(想象成箱子),链:把这些箱子首尾相连(类似数据结构中的单链表)。 区块链的本质:一个去中心化的分布式账本数据库。其本身是一串使用密码学相关联所产生的数据块,每一个数据块中包含了多次比特币网络交易有效确认的信息。 区块链技术从比特币中发展而来,是比特币的底层技术,和比特币是 相伴相生 的关系。目前这项技术已经不仅仅限于比特币——青出于蓝而胜于蓝。各行各业开始利用这项技术寻求突破。 2019年6月,Facebook宣布了其加密货币项目—— Libra 。 我们国家央行也将发行自己的数字货币—— DCEP ( Digital Currency Electronic

分布式文件系统---GlusterFS

十年热恋 提交于 2019-12-04 08:42:53
分布式文件系统   相对于本机端的文件系统而言,分布式文件系统(英语: Distributed file system , DFS ),或是网络文件系统(英语: Network File System ),是一种允许文件通过网络在多台主机上分享的文件系统,可让多机器上的多用户分享文件和存储空间   在这样的文件系统中,客户端并非直接访问底层的数据存储区块,而是通过网络,以特定的通信协议和服务器沟通。借由通信协议的设计,可以让客户端和服务器端都能根据访问控制清单或是授权,来限制对于文件系统的访问。 glusterfs是什么   Gluster是一个分布式文件系统。它是各种不同的存储服务器之上的组合,这些服务器由以太网或无限带宽技术Infiniband以及远程直接内存访问RDMA互相融汇,最终所形成的一个大的并行文件系统网络。   它有包括云计算在内的多重应用,诸如:生物医药科学,文档存储。Gluster是由GNU托管的自由软件,证书是AGPL。Gluster公司是Gluster的首要商业赞助商,且提供商业产品以及基于Gluster的解决方案。 来源: https://www.cnblogs.com/liujunjun/p/11850512.html

spring cloud微服务分布式云架构 - Spring Cloud简介

我的梦境 提交于 2019-12-04 06:43:27
Spring Cloud是一系列框架的有序集合。利用Spring Boot的开发模式简化了分布式系统基础设施的开发,如 服务发现、注册、配置中心、消息总线、负载均衡、断路器、数据监控 等(这里只简单的列了一部分),都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud将目前比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装,屏蔽掉了复杂的配置和实现原理,最终整合出一套简单易懂、易部署和易维护的分布式系统架构平台。 有spring cloud b2b2c电子商务需求的朋友可以加企鹅求求:三五三六二四七二五九 Spring Cloud组成 Spring Cloud的子项目,大致可分成两类: 一类是对现有成熟框架Spring Boot的封装和抽象,也是数量最多的项目; 第二类是开发了一部分分布式系统的基础设施的实现,如Spring Cloud Stream就是kafka, ActiveMQ这样的角色。开发人员进行 微服务 的实践,第一类子项目就已经足够使用,如: Spring Cloud Netflix   是对Netflix开发的一套分布式服务框架的封装,包括服务的发现和注册,负载均衡、断路器、REST客户端、请求路由等。 Spring Cloud Config   将配置信息中央化保存, 配置Spring Cloud

用消息队列和消息应用状态表来消除分布式事务 (转)

↘锁芯ラ 提交于 2019-12-04 05:53:42
由于数据量的巨大,大部分Web应用都需要部署很多个数据库实例。这样,有些用户操作就可能需要去修改多个数据库实例中的数据。传统的解决方法是使用分布式事务保证数据的全局一致性,经典的方法是使用两阶段提交协议。 长期以来,分布式事务提供的优雅的全局ACID保证麻醉了应用开发者的心灵,很多人都不敢越雷池一步,想像没有分布式事务的世界会是怎样。如今就如MySQL和PostgreSQL这类面向低端用户的开源数据库都支持分布式事务了,开发者更是沉醉其中,不去考虑分布式事务是否给系统带来了伤害。 事实上,有所得必有所失,分布式事务提供的ACID保证是以损害系统的可用性、性能与可伸缩性为代价的。只有在参与分布式事务的各个数据库实例都能够正常工作的前提下,分布式事务才能够顺利完成,只要有一个工作不正常,整个事务就不能完成。这样,系统的可用性就相当于参加分布式事务的各实例的可用性之积,实例越多,可用性下降越明显。从性能和可伸缩性角度看,首先是事务的总持续时间通常是各实例操作时间之和,因为一个事务中的各个操作通常是顺序执行的,这样事务的响应时间就会增加很多;其次是一般Web应用的事务都不大,单机操作时间也就几毫秒甚至不到1毫秒,一但涉及到分布式事务,提交时节点间的网络通信往返过程也为毫秒级别,对事务响应时间的影响也不可忽视。由于事务持续时间延长,事务对相关资源的锁定时间也相应增加

浅谈Redis分布式锁的进化史

南笙酒味 提交于 2019-12-04 01:24:20
近两年来微服务变得越来越热门,越来越多的应用部署在分布式环境中,在分布式环境中,数据一致性是一直以来需要关注并且去解决的问题,分布式锁也就成为了一种广泛使用的技术,常用的分布式实现方式为Redis,Zookeeper,其中基于Redis的分布式锁的使用更加广泛。 但是在工作和网络上看到过各个版本的Redis分布式锁实现,每种实现都有一些不严谨的地方,甚至有可能是错误的实现,包括在代码中,如果不能正确的使用分布式锁,可能造成严重的生产环境故障,本文主要对目前遇到的各种分布式锁以及其缺陷做了一个整理,并对如何选择合适的Redis分布式锁给出建议。 各个版本的Redis分布式锁 V1.0 tryLock(){ SETNX Key 1 EXPIRE Key Seconds } release(){ DELETE Key } 这个版本应该是最简单的版本,也是出现频率很高的一个版本,首先给锁加一个过期时间操作是为了避免应用在服务重启或者异常导致锁无法释放后,不会出现锁一直无法被释放的情况。 这个方案的一个问题在于每次提交一个Redis请求,如果执行完第一条命令后应用异常或者重启,锁将无法过期,一种改善方案就是使用Lua脚本(包含SETNX和EXPIRE两条命令),但是如果Redis仅执行了一条命令后crash或者发生主从切换,依然会出现锁没有过期时间,最终导致无法释放。 另外一个问题在于

Redis 分布式锁进化史(解读 + 缺陷分析)

喜你入骨 提交于 2019-12-04 01:18:04
Redis分布式锁进化史 近两年来微服务变得越来越热门,越来越多的应用部署在分布式环境中,在分布式环境中,数据一致性是一直以来需要关注并且去解决的问题,分布式锁也就成为了一种广泛使用的技术,常用的分布式实现方式为Redis,Zookeeper,其中基于Redis的分布式锁的使用更加广泛。 但是在工作和网络上看到过各个版本的Redis分布式锁实现,每种实现都有一些不严谨的地方,甚至有可能是错误的实现,包括在代码中,如果不能正确的使用分布式锁,可能造成严重的生产环境故障,本文主要对目前遇到的各种分布式锁以及其缺陷做了一个整理,并对如何选择合适的Redis分布式锁给出建议。 各个版本的Redis分布式锁 V1.0 tryLock(){ SETNX Key 1 EXPIRE Key Seconds } release(){ DELETE Key } 这个版本应该是最简单的版本,也是出现频率很高的一个版本,首先给锁加一个过期时间操作是为了避免应用在服务重启或者异常导致锁无法释放后,不会出现锁一直无法被释放的情况。 这个方案的一个问题在于每次提交一个Redis请求,如果执行完第一条命令后应用异常或者重启,锁将无法过期,一种改善方案就是使用Lua脚本(包含SETNX和EXPIRE两条命令),但是如果Redis仅执行了一条命令后crash或者发生主从切换,依然会出现锁没有过期时间,最终导致无法释放

对比各类分布式锁缺陷,抓住Redis分布式锁实现命门

允我心安 提交于 2019-12-04 01:17:41
近两年来微服务变得越来越热门,越来越多的应用部署在分布式环境中,在分布式环境中,数据一致性是一直以来需要关注并且去解决的问题,分布式锁也就成为了一种广泛使用的技术。 常用的分布式实现方式为Redis,Zookeeper,其中基于Redis的分布式锁的使用更加广泛。 但是在工作和网络上看到过各个版本的Redis分布式锁实现,每种实现都有一些不严谨的地方,甚至有可能是错误的实现,包括在代码中,如果不能正确的使用分布式锁,可能造成严重的生产环境故障。 本文主要对目前遇到的各种分布式锁以及其缺陷做了一个整理,并对如何选择合适的Redis分布式锁给出建议。 一、各个版本的Redis分布式锁 1、V1.0 tryLock(){ SETNX Key 1 EXPIRE Key Seconds } release(){ DELETE Key } 这个版本应该是最简单的版本,也是出现频率很高的一个版本,首先给锁加一个过期时间操作是为了避免应用在服务重启或者异常导致锁无法释放后,不会出现锁一直无法被释放的情况。 这个方案的一个问题在于每次提交一个Redis请求,如果执行完第一条命令后应用异常或者重启,锁将无法过期,一种改善方案就是使用Lua脚本(包含SETNX和EXPIRE两条命令),但是如果Redis仅执行了一条命令后crash或者发生主从切换,依然会出现锁没有过期时间,最终导致无法释放。