分布式架构

HDFS-分布式文件系统

大兔子大兔子 提交于 2020-03-05 05:51:36
HDFS Hadoop分布式文件系统(HDFS[Hadoop Distributed File System])是指被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统(Distributed File System)。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。 设计思想:分而治之:将大文件、大批量文件,分布式存放在大量服务器上,以便于采取分而治之的方式对海量数据进行运算分析 应用:为各类分布式运算框架(如:mapreduce,spark,tez,……)提供数据存储服务 HDFS Architecture HDFS采用Master/Slave主从结构,每个HDFS集群包括一个单独的NameNode,用作管理文件系统的命名空间以及控制客服端访问权限的Master服务端,集群中包含一定数量的DataNode,并且至少含有一个。用于节点存储数据。HDFS就是一个文件系统并允许存储用户数据。在内部,一个文件并划分为一个或多个的块,并存储于这些DateNode集合中。NameNode执行文件系统的操作,例如打开,关闭,重命名文件和生成文件目录,并生成集群中DataNode的映射关系

京东架构深度讲解:分布式Java应用基础与实践

不想你离开。 提交于 2020-03-04 21:37:46
【推荐】2020年最新Java电子书集合.pdf(吐血整理) >>> 前言 本书介绍分布式Java应用涉及的知识点,分为基于Java实现网络通信、RPC:基于SOA实现大型分布式Java应用:编写高性能Java应用:构建高可用、可伸缩的系统4个部分,共7章内容。作者结合自己在淘宝网的实际工作经验展开论述,既可作供初学者学习,也可供同行参考。 目标读者 本书涵盖了编写高性能、高可用以及可伸缩的分布武Java应用所需的知识点,适合希望掌握这些知识点的读者。 在介绍各个知识点时,作者尽量结合自己的工作,分享经验与心得,希望能够对那些有相关工作经验的读者有所帮助。 内容导读 本书按照介绍的知识点分为五个部分:第一部分 介绍基于Java实现系统间交互的相关知识,这些知识在第1章中进行介绍:第二部分为基于SOA构建大型分布式Java应用的知识点,这些在第2章中介绍:第三部分为高性能Java应用的相关知识,这些在第3、4、5章中介绍:第四部分介绍高可用Java应用的相关知识,这些在第6章中介绍:第五部分介绍可伸缩Java应用,这些在第7章介绍,读者也.可根据自己的兴趣选择相应的章节进行阅读。 分布式Java应用 大型分布式Java应用与SOA 深入理解JVM 分布式Java应用与Sun JDK类库 性能调优 构建高可用系统 构建可伸缩的系统 来源: oschina 链接: https://my

Scrapy分布式原理

蓝咒 提交于 2020-03-04 05:14:58
scrapy架构 首先我们先看一下Scrapy的单机架构 也就是说scrapy的单机架构实际上实在本机维护一个爬取队列,用Scheduler进行调度,如果我们要实现scarpy的分布式,就需要多台主机协同操作,那么问题来了 多台主机协作的关键是什么? 实际上就是共享爬取队列:核心就是将这个队列进行共享,让多台主机都能访问,然后让各个主机的Scheduler进行调度,这样就可以共享requests,进行统一的抓取。 单主机爬虫架构: 主机从Queue中抓取队列,然后由Scheduler调度 分布式爬虫架构: 由多个Scheduler从同一个Queue中调度,这样就可以完成协同的抓取 前面写到的这些,都离不开队列,那么怎么维护队列呢 队列用什么维护? 可能大家会想到使用数据库,使用文件或者一些特定的数据结构来进行维护,这里推荐 redis队列 ,那么redis有什么好处呢? Redis是非关系型数据库,以Key-Value形式进行存储,相对于其他数据库来说,结构跟灵活 是内存中的数据结构存储系统,处理速度快,性能好。 提供队列,集合等多种存储结构,分辨队列维护。 怎么去重? 在进行抓取中,因为有多台主机访问一个队列,所以他们请求到的url可能会相同,那么抓取到的数据可能会一样,那么我们要怎么保证各个主机拿到的requests队列是不重复的呢? 这里我们可以使用 Redis集合

集群,分布式,微服务

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

Spring Cloud 是什么

房东的猫 提交于 2020-03-02 10:33:33
   概念定义      Spring Cloud 是一个服务治理平台,提供了一些服务框架。包含了:服务注册与发现、配置中心、消息中心 、负载均衡、数据监控等等。   Spring Cloud 是一个微服务框架,相比 Dubbo 等 RPC 框架,Spring Cloud 提供了全套的分布式系统解决方案。   Spring Cloud 对微服务基础框架 Netflix 的多个开源组件进行了封装,同时又实现了和云端平台以及 Spring Boot 框架的集成。   Spring Cloud 是一个基于 Spring Boot 实现的云应用开发工具,它为开发中的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。   Spring Cloud 为开发者提供了快速构建分布式系统的工具,开发者可以快速的启动服务或构建应用、同时能够快速和云平台资源进行对接。微服务是可以独立部署、水平扩展、独立访问(或者有独立的数据库)的服务单元,Spring Cloud 就是这些微服务的大管家,采用了微服务这种架构之后,项目的数量会非常多,Spring Cloud 做为大管家需要管理好这些微服务,自然需要很多小弟来帮忙。    子项目      Spring Cloud 包含了很多子项目:    Spring Cloud

在分布式微服务架构应用中如何实现最终一致性?

て烟熏妆下的殇ゞ 提交于 2020-03-01 18:01:33
在分布式系统中,实现强一致性并不容易。即使2PC、3PC阶段提交,也无法保证绝对的强一致性。 我们也不能因为极小的不一致性概率,导致系统整体性能低下,或者扩展性受到影响,并且架构也变得极其复杂。因此,在2PC/3PC提交缺乏大规模应用的情况下,最终一致性是一个较好的方案,在业界得到了大量使用。 一、重试机制 如下图所示,Service Consumer 同时调用 Service A 和 Service B,如果Service A 调用成功,Service B 调用识别,为了保证最终一致性,最简单的办法是重试。 重试的时候,要注意设置Service Consumer 的超时时间, 避免长时间等待或卡死,耗尽资源。 Consumer 重试时,需要注意如下几个方面: 超时时间; 重试的次数; 重试的间隔时间; 重试间隔时间的衰减度; 具体实现细节,可以参考《 基于Spring-tryer 优雅的重试方案》。 二、本地记录日志 通过本地记录日志,然后收集到分布式监控系统或者其他后端系统中,启动一个定期检查的工具。根据实际情况,可以选择人工处理。 日志格式:TranID-A-B-Detail TransID为事务ID,可以生成一个随机序列号; Detail 为数据的详细内容; 如果调用A成功,则记录 A success; 如果调用B失败,或者出现故障,没有记录等等,也就是日志中没有B

Zookeeper(一)简介

老子叫甜甜 提交于 2020-03-01 16:04:34
个人认为,zookeeper,总就会被nacos取代,就像已经被抛弃的eureka一样。 无奈,面试造飞机。 Zookeeper两大作用: 1、服务注册与发现,类似于Eureka,nacos。 2、用作分布式锁,也就是分布式协调 Zookeeper简介: ZooKeeper 是一种分布式协调服务,用于管理大型主机。 在分布式环境中协调和管理服务是一个复杂的过程。 ZooKeeper 通过其简单的架构和 API 解决了这个问题。 ZooKeeper 允许开发人员专注于核心应用程序逻辑,而不必担心应用程序的分布式特性。 来源: CSDN 作者: 子 ★ 诚 链接: https://blog.csdn.net/qq_40634246/article/details/104591738

Kubernetes集群操作系统进阶指南

北战南征 提交于 2020-03-01 02:50:02
一、基本概念 二、安装 1、基本安装 2、深入安装 3、工具安装 三、快速使用 四、日志监控 监控面板,预警设置,日志收集与统计分析,实时监控与故障恢复。 五、运维管理 1、系统迁移 平台迁移与服务迁移、节点迁移。 2、规模伸缩 集群伸缩,滚动升级。 3、容错 容错设计,容错测试。 4、备份 日常备份与灾难备份。对于分布式系统,重建是非常复杂的,仅有数据备份是不够的。 灾备实施,灾难演习。 六、持续交付 开发基础设施,流程,交付。 来源: oschina 链接: https://my.oschina.net/u/2306127/blog/1605888

springcloud微服务实战_07_分布式配置

只愿长相守 提交于 2020-02-29 15:09:42
7.1 spring cloud config 简介 spring cloud config 是用来为分布式系统中的基础设施和微服务应用提供集中化的外部配置支持, 它分为服务端和客户端两部分. 服务端也称为分布式配置中心,它是一个独立的微服务应用,用来连接配置仓库并为客户端提供获取配置信息,加密/解密信息等访问接口. 客户端则是微服务架构中的各个微服务或基础设施,它们通过指定的配置中心来管理应用资源与业务相关的配置内容,并在启动的时候从配置中心获取和加载配置信息. spring cloud config 实现了对服务端和客户端中环境变量和属性配置的抽象映射,所以它除了适用于 spring 构建的应用之外,也可以在任何其他语言运行的应用程序中使用. 由于 spring cloud config 实现的配置中心默认采用 git 来存储配置信息,所以使用 spring cloud config 构建配置服务器,天然就支持对微服务应用配置信息的版本管理, 并且可以通过 git 客户端工具轻松方便的访问与管理配置内容. 快速入门 准备配置仓库 准备一个git仓库,可以在码云或Github上创建都可以。比如本文准备的仓库示例: https://gitee.com/kaisesai/springcloud/config-repo 假设我们读取配置中心的应用名为commonspace

GitHub上整理的一些工具

我与影子孤独终老i 提交于 2020-02-29 09:19:37
技术站点 Hacker News:非常棒的针对编程的链接聚合网站 Programming reddit:同上 MSDN:微软相关的官方技术集中地,主要是文档类 infoq:企业级应用,关注软件开发领域 OSChina:开源技术社区,开源方面做的不错哦 cnblogs,51cto,csdn:常见的技术社区,各有专长 stackoverflow:IT技术问答网站 GitHub:全球最大的源代码管理平台,很多知名开源项目都在上面,如Linux内核, OpenStack等免费的it电子书: http://it-ebooks.info/ DevStore:开发者服务商店 不错的书籍 人件 人月神话 代码大全2 计算机程序设计艺术 程序员的自我修养 程序员修炼之道 高效能程序员的修炼(成为一名杰出的程序员其实跟写代码没有太大关系) 深入理解计算机系统 软件随想录 算法导论(麻省理工学院出版社) 离线数学及其应用 设计模式 编程之美 黑客与画家 编程珠玑 C++ Prime Effective C++ TCP/IP详解 Unix 编程艺术 《精神分析引论》弗洛伊德 搞定:无压力工作的艺术 平台工具(都是开源的好东东哦) Redmine/Trac:项目管理平台 Jenkins/Jira(非开源):持续集成系统(Apache Continuum,这个是Apache下的CI系统,还没来得及研究)