这几天学习了MapReduce,我参照资料,自己又画了两张MapReduce的架构图. 这里我根据架构图以及对应的源码,来解释一次分布式MapReduce的计算到底是怎么工作的. ​话不多说,开始! 首先,结合我画的架构图来进行解释. 上图是MapReduce的基本运行逻辑.把图从中间切分,左边为Map任务,右边为Reduce任务.Map的输出是Reduce的输入.因此Map执行完毕Reduce才能执行,两者的执行顺序是一个线性关系,即输入输出的关系为:HDFS->Map->Reduce-&g…
学习目标: 学习Soul 网关 Nacos 数据同步源码解析 学习内容: 环境配置 Soul 网关 Nacos 数据同步基本概念 源码分析 学习时间:2020年1月28号 早7点 学习产出: 环境配置: 引入依赖在 soul-bootstrap项目的 pom.xml 文件中引入了 soul-spring-boot-starter-sync-data-nacos 这个 starter . <dependency> <groupId>org.dromara</groupId>…
今天的主角是HashSet,Set是什么东东,当然也是一种java容器了.      现在再看到Hash心底里有没有会心一笑呢,这里不再赘述hash的概念原理等一大堆东西了(不懂得需要先回去看下HashMap了),需要在啰嗦一句的是hash表是基于快速存取的角度设计的,也是一种典型的空间换时间的做法(这个在分析HashMap中都有讲过).那么今天的HashSet它又是怎么一回事的,他的存在又是为了解决什么问题呢?      先来看下Set的特点:Set元素无顺序,且元素不可以重复. .想到了什么…
此文章是这个专题的开篇,由于初入 C++ 的大门,所以想着拿个项目来看看,凑巧有点基础,又想学习一下在unix上的编程,所以就找了 aria2 这个库来看看源码,希望能学到一些东西. 言归正传,今天把源码下载下来,直接检出了它的第一版源码,我打算从头看起.检出源码之后,我将它的代码性质大致分为 6 个模块,如下图所示. 这六个模块分别是: Commad 目前来看,应该是命令行接口,因为 aria2 是一个命令行应用程序,所以需要这个东西 Exception 这个是它自己实现的异常类 Logger…
在之前的EurekaClient自动装配及启动流程解析一文中我们提到过,在构造DiscoveryClient类时,会把自身注册到服务端,本文就来分析一下这个注册流程 客户端发起注册 boolean register() throws Throwable { logger.info(PREFIX + "{}: registering service...", appPathIdentifier); EurekaHttpResponse<Void> httpResponse;…
一.Producer整体架构 Kafka Producer端的架构整体也是一个生产者-消费者模式 Producer线程调用send时,只是将数据序列化后放入对应TopicPartition的Deque尾部的ProducerBatch数据结构中 Sender线程每次扫描所有Deque的尾部,得到需要发送的readyNodes,并确认所有的readyNodes都已建立好连接. 遍历readyNodes,再遍历每个Node上所有partition的Deque的队头,直到凑齐max.request.si…
概述 Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用.Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建.简单来说,Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架.   spring的整体架构 Spring框架是一个分层架构,它包含一系列的功能要素,并被分为大约20个模块,如下图所示: 从上图spring framework整…
前面了解了jdk容器中的两种List,回忆一下怎么从list中取值(也就是做查询),是通过index索引位置对不对,由于存入list的元素时安装插入顺序存储的,所以index索引也就是插入的次序. Map呢是这样一种容器,它可以存储两个元素键和值,根据键这个关键字可以明确且唯一的查出一个值,这个过程很像查字典,考虑一下使用什么样的数据结构才能实现这种效果呢?   1.自己实现一个Map        先来看一下jdk中map的定义:      public interface Map<K,V>…
前面分析了HashMap的实现,我们知道其底层数据存储是一个hash表(数组+单向链表).接下来我们看一下另一个LinkedHashMap,它是HashMap的一个子类,他在HashMap的基础上维持了一个双向链表(hash表+双向链表),在遍历的时候可以使用插入顺序(先进先出,类似于FIFO),或者是最近最少使用(LRU)的顺序.      来具体看下LinkedHashMap的实现.       1.定义  public class LinkedHashMap<K,V> extends H…
先看一张图 0 这个图是Eureka官方提供的架构图,整张图基本上把整个Eureka的核心功能给列出来了,当你要阅读Eureka的源码时可以参考着这个图和下方这些文章 EurekaServer EurekaServer就是我们常说的服务端 Eureka服务端的启动可参考这篇文章EurekaServer自动装配及启动流程解析 它维护了一张服务注册表,在这个服务注册表中包含了所有的客户端信息 当服务端启动时会做这么几个事情: 向集群中的其他服务端发起数据同步请求:Eureka应用注册与集群数据同步源…