- 博客(22)
- 资源 (2)
- 收藏
- 关注

原创 Spring Cloud Eureka源码分析
Eureka总体概览我们先看一段官网的介绍:服务发现是基于微服务架构的关键原则之一。试图手工配置每个客户端或某种约定俗成的形式,可能很难做到,而且会很脆。Eureka就是Netflix服务发现服务端和客户端。服务端可以被配置和部署成高可用,每个服务器都可以将注册服务的状态复制到其他服务器上。Eureka的关键核心概念Eureka服务治理有一些核心概念,今天将从源码中剖析Eure...
2020-05-06 18:50:00
879
翻译 jdk为什么用元空间取代永久代
目录Motivation(动机)Description参考Motivation(动机)This is part of the JRockit and Hotspot convergence effort. JRockit customers do not need to configure the permanent generation (since JRockit does not have a permanent generation) and are accustomed to
2020-06-07 22:31:07
397
2
原创 Idea启动Hadoop NameNode
修改配置当我们用Idea直接启动Hadoop NameNode是启动不了的,我们需要修改一些东西才能通过Idea的编译,要不然是会报错的。然后修改配置:1.core-site.xml 修改ip为local host.2.hdfs-site.xml 修改ip为local host.3.hdfs-default.xml增加配置.4.拷贝webapps到resouces目录下面.常见的错误1Caused by: java.lang.ClassNotFoundExce..
2020-06-06 08:03:57
617
1
原创 Hadoop DataNode启动和初始化过程
目录简介源码解析总结简介我们先看DataNode的doc文档的介绍,DataNode是一个类,用于存储一组块,用于DFS部署。 单个部署可以有一个或多个DataNode。 每个DataNode通信定期与单个NameNode进行通信。 它还可以与客户端和其他的DataNodes通信。DataNode存储一系列命名的块。 DataNode允许客户端代码读取这些块,或者写新的块数据。 DataNode也可以响应于以下指令从其NameNode中删除区块或将区块复制到/从其他的Da..
2020-05-30 22:47:29
1221
原创 循环内为啥不提倡字符串拼接?
阿里规约先来看阿里java开发手册的第22条,循环体内,字符串的连接方式,使用 StringBuilder 的 append 方法进行扩展。说明:下例中,反编译出的字节码文件显示每次循环都会 new 出一个 StringBuilder 对象,然后进行 append操作,最后通过 toString 方法返回 String 对象,造成内存资源浪费。反例:String str = "start";for (int i = 0; i < 100; i++) { str = str +
2020-05-26 20:02:09
234
翻译 JournalNode 和 Secondary NameNode
在一个典型的HA集群中,两个或更多的独立机器被配置为NameNodes。在任何时间点上,正好有一个NameNode处于活动状态,其他的NameNode处于待机状态。Active NameNode 负责集群中的所有客户机操作,而Standbys 只是作为worker,保持足够的状态,以便在必要时提供快速故障切换。为了让Standby 节点与Active节点保持状态同步,这两个节点都会与一组独立的守护进程进行通信,这些守护进程被称为 "JournalNodes"(JNs)。当Active节点执行任何命名空间
2020-05-25 19:19:19
1297
原创 Spring Cloud Feign源码分析
代码实现我们从@EnableFeignClients这个配置进入,通过这个配置我们就开启了Feign客户端。从上面@Import导入的方式实现把实例FeignClientsRegistrar加入spring的IOC容器中,扫描声明@FeignClient接口,FeignClientsRegistrar实现了ImportBeanDefinitionRegistrar并且重写了registerBeanDefinitions方法。ImportBeanDefinitionR...
2020-05-19 23:15:43
264
1
转载 深入了解HBase的架构
HBase组件在物理上,HBase是由三种类型的servers组成的主从型架构。Region servers服务于数据的读取和写入。客户端在访问数据时,直接与HBase Region servers 进行通信。区域分配、DDL(创建、删除表)操作由HBase主进程处理。Zookeeper是HDFS的一部分,它维护着一个活的集群状态。Hadoop DataNode存储的是 Region servers 管理的数据。所有HBase的数据都存储在HDFS文件中。 Region servers 与HDFS
2020-05-19 00:49:49
288
原创 透过字节码理解synchronized关键字
我们知道synchronied是java排它锁的一种实现,支持可重入性,基于此我们可以实现多线程的一个同步。synchronied是怎么实现的呢?其实synchronied关键字是基于对象的监视器即Monitor对象实现同步。一次只有一个线程可以锁定监视器,试图锁定该监视器的任何其它线程都会被阻塞,知道他们可以获取该监视器上的锁定为之。同步代码块采用monitorenter、monitorexit指令实现。看下面的一个简单的例子然后执行javap -v TestSynchronized.cla
2020-05-18 23:46:28
140
转载 精通java并发
目录10_多线程同步关系实例剖析与讲解.mp411_synchronized关键字原理详解.mp412_透过字节码理解synchronized关键字.mp413_同步方法访问标志与synchronized关键字之间的关系.mp414_自旋对于synchronized关键字的底层意义与价值分析.mp415_互斥锁属性详解与Monitor对象特性解说.mp416_通过openjdk源码分析ObjectMonitor底层实现.mp417_透过openjdk源码分析wait与notify方法的本地
2020-05-16 21:48:09
289
原创 Spring Cloud Ribbon源码分析
配置我们知道Ribbo有两种结合使用的方式,一种是与RestTemplate结合使用,另外一种是与Feign结合使用,下面是结合RestTemplate的配置。源码分析根据自动装配的原理,自动装配了LoadBalancerAutoConfiguration这个类。看一下这个注解,当我们配置了RestTemplate这个时才会被装配重要的是LoadBalancerAutoConfiguration向Spring容器注入了这个拦截器所有的请求都要经过LoadBalan
2020-05-15 18:25:47
177
原创 Hadoop NameNode启动的资源检查
回顾上一篇分析了Hadoop的Rpc服务,这一篇将接着往下分析startCommonServices这个方法,先看代码整体的流程。startCommonServices主要是两步: namesystem.startCommonServices rpcServer.start(); FSNamesystemFSNamesystem是NameNode核心成员变量用来管理元数据(实现对DataNode、Block的管理以及读写日志),FSNamesystem的st.
2020-05-11 16:17:14
396
原创 java线程到底有多少种状态?
https://mbd.baidu.com/newspage/data/landingshare?pageType=1&isBdboxFrom=1&context=%7B%22nid%22%3A%22news_10102019803368222001%22%2C%22sourceFrom%22%3A%22bjh%22%7D
2020-05-10 18:41:26
247
转载 Hadoop 如何创建RPC服务,接受客户端的请求
https://mbd.baidu.com/newspage/data/landingshare?pageType=1&isBdboxFrom=1&context=%7B%22nid%22%3A%22news_9587568878193481221%22%2C%22sourceFrom%22%3A%22bjh%22%7D
2020-05-10 10:49:24
689
转载 Hadoop元数据的加载流程
https://mbd.baidu.com/newspage/data/landingshare?pageType=1&isBdboxFrom=1&context=%7B%22nid%22%3A%22news_9638348929454989516%22%2C%22sourceFrom%22%3A%22bjh%22%7D
2020-05-09 21:08:19
522
转载 Spark SQL解析过程以及Antlr4入门
https://mbd.baidu.com/newspage/data/landingshare?pageType=1&isBdboxFrom=1&context=%7B%22nid%22%3A%22news_9050605825996607263%22%2C%22sourceFrom%22%3A%22bjh%22%7D
2020-05-08 14:00:32
459
转载 深入理解Kafka源码中Producer的发送流程
转发:https://mbd.baidu.com/newspage/data/landingshare?pageType=1&isBdboxFrom=1&context=%7B%22nid%22%3A%22news_8990661495852064661%22%2C%22sourceFrom%22%3A%22bjh%22%7D
2020-05-08 09:07:50
209
原创 Kafka生产者源码分析
从一个Demo入手我们Kafka源码的doc文档拿下来一个Demo,这个Demo用于向服务端发送消息,从这个例子我们可以知道发送消息是通过生产者的KafkaProducer来完成的,这一篇文章将先完成KafkaProducer的分析 Properties props = new Properties(); props.put("bootstrap.servers", "localhos...
2020-05-07 18:23:25
272
原创 教你一步一步分析Hadoop NameNode启动流程
NameNode服务端的启动过程不知道大家是否自己搭建过Hadoop集群,如果搭建过是否还记得Hadoop NameNode的启动命令呢?下面是Linux服务器上启动NameNode的命令。[root@hadoop01 sbin]# hadoop-daemon.sh start namenode既然是通过hadoop-daemon.s进行启动,那么我们可以看看这个shell脚本是怎么启...
2020-05-06 19:44:30
698
原创 Spring Cloud Eureka Server源码分析
总览昨天文章分析介绍可Eureka Client的流程,今天接着昨天的将分析Eureka Server的一个流程。EurekaServer 是服务的注册中心,负责Eureka Client的相关信息注册,主要职责:服务注册 接受心跳服务 服务剔除 服务下线 集群同步@EnableEurekaServer通过向Spring容器注入EurekaServerMarkerConfi...
2020-05-06 18:58:06
235
Java开发手册(泰山版)
2020-05-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人