- 博客(45)
- 收藏
- 关注
原创 dubbo的集群容错和负载均衡机制
Dubbo提供了4种负载均衡机制: 权重随机算法:RandomLoadBalance 最少活跃调用数算法:LeastActiveLoadBalance 一致性哈希算法:ConsistentHashLoadBalance 加权轮询算法:RoundRobinLoadBalance dubbo mock配置 基于服务降级 dubbo自身是支持mock服务的,在reference标签里,有一个参数mock,该参数有四个值,false,default,true,或者Mock类的类名。 分别代表如下含..
2021-01-04 13:38:10
266
原创 springcloud ribbon
Spring cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它是基于Netflix的Riboon实现的。Ribbon是客户端负载均衡器,这有别语例如Nginx服务端负载均衡器。Ribbon本身提供了不通负载均衡策略使用不通的应用场景。bibbon负载均衡源码流程图如下 ...
2020-11-04 18:12:55
229
原创 手写springboot starter
starter会把所有用到的依赖都给包含进来,避免了开发者自己去引入依赖所带来的麻烦。 虽然不同的starter实现起来各有差异,但是他们基本上都会使用到两个相同的内容:ConfigurationProperties和AutoConfiguration。 Starters 是一组可以让你很方便在应用增加的依赖关系描述符的集合。或者可以这样理解,平时我们开发的时候很多情况下都会有一个模块依赖另一个模块,这个时候我们一般都是采用 maven 的模块依赖,进行模块的依赖 pom 依赖 ..
2020-10-29 10:41:44
211
原创 elasticsearch服务器 上创建索引库
1 构建工程 2public class HtmlBean { private int id; private String title; private String content; private String url; public int getId() { return id; } public void setId(int id) {...
2020-10-26 22:36:24
288
原创 搭建elasticsearch服务器
1 lucene简介 1.1 什么是lucene Lucene是一个全文搜索框架,而不是应用产品。因此它并不像http://www.baidu.com/或者google Desktop那么拿来就能用,它只是提供了一种工具让你能实现这些产品。 Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Ela.
2020-10-18 14:53:43
756
原创 spring中bean的生命周期以及初始化过程 以及IOC AOP 2.0版本
在之前1.0版本做了优化处理之后,对AOP做了详细补充以及底层 源码的实现。 spring 中是我们常见的bean bean的生命周期以及初始化过程 Spring ioc(控制反转) 1ClassPathXmlApplicationContext类 容器加载配置文件bean.xml 文件 通过构造方法 2AbstractApplicationContext 在这个类中初始化refresh()方法 调用obtainFreshBeanFactory() 加...
2020-09-28 22:41:26
510
原创 Spark 操作hive
spark 读取hive数据 在 hive的目录下 启动hive 服务hive --service metastore object CreateDateFrameFromHive { def main(args: Array[String]):Unit = { val spark = SparkSession.builder().appName("CreateDataFrameFromHive").enableHiveSuppo...
2020-09-24 22:34:34
444
原创 Zookeeper watcher源码底层分析
Zookeeper的Watcher机制 Zookeeper提供了数据的发布/订阅功能,多个订阅者可同时监听某一特定主题对象,当该主题对象的自身状态发生变化时(例如节点内容改变、节点下的子节点列表改变等),会实时、主动通知所有订阅者。 watcher架构 Watcher实现由三个部分组成: Zookeeper服务端; Zookeeper客户端; 客户端的ZKWatchManager对象; 客户端首先将Watcher注册到服务端,同时将Watcher对象保存到客户端的Watch管理器中。当ZooK
2020-09-23 17:54:28
270
原创 Zookeeper 选举底层分析
zookeeper入口类 QuorumPeerConfig 解析zookeeper conf 文件下的 zoo.cfg配置文件 涉及到网络通信 (1选举 多个zk节点之间的通信,2 客户端请求(应用程序连接到zkserver) 3 leader follower 之间的数据同步) 进入 loadDataBase() 加载数据 cnxnFactory.start()(暴露端口给别人访问) 通信 startLeaderElection() 选举机制 NIOServer...
2020-09-22 18:00:33
207
原创 基于zookeeper ApI 操作实例
zooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。 1 首先启动本地zookeeper 2 构建zookeeper案例 public class ZookeepperDemo { public static void main(String[] args) throws Exception { .
2020-09-17 15:18:13
234
原创 Jmap
jmap作为jvm 的使用方式 查看内存使用情况 jstack 查看线程使用情况 查看内存使用情况, 导出dump文件 启动jvisualvm 监控
2020-09-11 16:03:23
711
原创 基于Netty版本的RPC框架
netty是由JBOSS提供的一个java开源框架,现为Github上的独立项目。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。 也就是说,Netty 是一个基于NIO的客户、服务器端的编程框架,使用Netty 可以确保你快速和简单的开发出一个网络应用,例如实现了某种协议的客户、服务端应用。Netty相当于简化和流线化了网络应用的编程开发过程,例如:基于TCP和UDP的socket服务开发。 1 构建工程 目录 api pub...
2020-09-02 13:46:33
265
原创 手写mini版本tomcat
搭建工程 netty http包下的 GpRequest GpResponse GpServlet 类 public class GpRequest { private String method; private String url; public GpRequest(InputStream inputStream) { //拿到http协议的内容 String content =""; byte [] bu...
2020-08-31 18:01:32
291
原创 Spark宽窄依赖之间的案例
1 正常spark 算子之间的转换关系 def main(args: Array[String]):Unit = { val conf =new SparkConf() conf.setAppName("day03") conf.setMaster("local") val sc =new SparkContext(conf) sc.setLogLevel("error"); val rdd1 = sc.parallelize(List[Strin...
2020-08-27 21:47:00
301
原创 搭建spark集群
SPARK(计算引擎) Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是——Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法 Spark 是在S..
2020-08-16 22:12:50
208
原创 dubbo服务消费
Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,并且本质上是个服务调用的东东,说白了就是个远程服务调用的分布式框架(告别Web Service模式中的WSdl,以服务者与消费者的方式在dubbo上注册) 前面讲到服务发布 这里主主要讲dubbo消费端 主体流程如下: ReferenceConfig 类中
2020-07-02 17:37:01
247
原创 dubbo服务发布 2.0版本
Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,并且本质上是个服务调用的东东,说白了就是个远程服务调用的分布式框架(告别Web Service模式中的WSdl,以服务者与消费者的方式在dubbo上注册) 前面讲到dubbo spi机制 这篇主要将如何发布服务 配置文件 DubboBeanDefin..
2020-07-01 17:41:15
522
原创 spring中bean的生命周期以及初始化过程 细化版
spring 中是我们常见的bean bean的生命周期以及初始化过程 Spring ioc(控制反转) 1ClassPathXmlApplicationContext类 容器加载配置文件bean.xml 文件 通过构造方法 2AbstractApplicationContext 在这个类中初始化refresh()方法 调用obtainFreshBeanFactory() 加载loadBeanDefinitions()方法 加载配置文件路径 XmlB...
2020-06-22 10:33:49
579
原创 手写springmvc 2.0版本
springmvc 2.0版本在之前的基础上 添加了模板引擎的配置,添加了 aop 配置 实现了springmvc 和 springaop的动态分离 工程结构如下 由于工程代码多这里不过多展示 具体参见源码 随后会放在github上、参考地址 https://github.com/wxwSmile/springdemo 演示效果如下 ...
2020-06-17 11:04:51
227
原创 搭建sqoop 工程
Sqoop(发音:skup)是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。 1 搭建步骤: 2 修改配置环境变量 3 将mysql 中的数据导入到hadoop hdfs 上 在 dirsqoop 新建文件option 执行命令 执行结果
2020-06-14 21:02:22
151
原创 手写springmvc 框架1.0版
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建Web应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts 2(一般老项目使用)等。 springmvc工作流程图 搭建项目 pom 依赖 项目启动配置jet..
2020-06-03 15:41:09
204
原创 如何搭建Flume日志收集框架
Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。 当前Flume有两个版本Flume 0.9X版本的统称Flume-og,Flume1.X版本的统称Flume-ng。由于Flume-ng经过重大重构,与Flume-og有很大不同,使用时请注意区分。 具体可以参考官网http://flume.apache.org/ ..
2020-05-25 22:02:34
303
原创 springcloud eureka 源码解读
springcloud 作为微服务框架 eureka作为注册中心 f注解 EnableEurekaServer 1 通过@Import({EurekaServerMarkerConfiguration.class}) 找到EurekaServerAutoConfiguration InstanceRegistry 作为注册类 2EurekaClientAutoConfiguration 加载Eureka配置信息 获取yml的配置信息 默认的心跳检测是 30s 3 拉取注...
2020-05-20 09:58:50
271
原创 手写jedis mini版
上篇文章中讲到redis 并且如何搭建redis集群参考链接 这篇讲如何更加深入了解jedis源码并手写jedis新建工程 包 api (操作redis) connection(连接通道) protocol(传输协议) package api; import connection.Connection; import protocol.Protocol; import java.io.IOException; //api操作层 public class Client { ...
2020-05-12 22:47:46
253
原创 java 创建Excel工具
一 导入对应的excel jar包 import jxl.Workbook; import jxl.write.Label; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; import jxl.write.WriteException; 二 动态创建excel public class CreateExcelUtil { /** * 将list集合转成Excel文件 * @param l...
2020-05-11 17:44:36
271
原创 搭建redis集群
Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。” 搭建一个redis.
2020-05-10 22:51:54
137
原创 Tomcat性能优化
tomcat是常用的web容器,tomcat架构 两大核心组件 Connector组件:连接器,主要负责Tomcat与客户端的通讯 Container组件:Servlet容器 一个请求的处理流程 httpConnector就是链接器 httpProcessor是具体的处理类 Container是容器(servlet) 下载源码(8.0版本):http://mir...
2020-05-06 11:52:35
175
原创 简单rpc 框架的实现
RPC(Romote Procedure Call):远程过程调用,允许一台计算机程序远程调用另外一台计算机的子程序,不用关心底层,网络通信,在socket基础上实现,比socket需要更多资源。 先看demo实现 如下 分为client端和server端 Client实现如下: 接口 package com.gupao.rmi.Demo.rpcClient; p...
2020-04-30 16:04:56
176
原创 Java 中的tcp协议
传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793[1]定义。 建立2个类TcpServerTcpClient public class TcpServer { public static void main(String[] args)throws IOException...
2020-04-29 17:25:25
477
原创 Java 中的网络传输模型
Java中的网络传输模型通常是七层 网络传输通常分为 应用层 :为应用程序提供服务 表示层 : 数据格式转化 数据加密 会话层 :建立连接 管理和维护会话 传输层 :建立管理和维护端对端的连接 网络层 :IP地址及路由选择 链路层 :提供介质访问和路由管理 物理层 :物理传输 下面主要是基于Tcp协议 控制传输协议 Tcp的三次握手 建立Tcp的三次握手主要建...
2020-04-29 14:13:46
322
原创 Java中的常见设计原则
Java中设计原则分6大类 分别是 1 单一职责原则 :一个类只负责一个项目原则,不要参与其他类功能进来 2 里氏替换原则 : 子类可以扩展父类的功能,但是不要修改父类原有的功能 3 依赖倒置原则: 面向接口编程 4 接口隔离原则:设计接口功能尽量细粒度 最小功能单元 5 迪米特法则:降低耦合 (局部变量不要引入新的类) 6 开闭原则:对外扩展 对修改关闭 ...
2020-04-28 17:05:09
173
原创 dubbo种spi机制
Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,并且本质上是个服务调用的东东,说白了就是个远程服务调用的分布式框架(告别Web Service模式中的WSdl,以服务者与消费者的方式在dubbo上注册)...
2020-04-26 18:52:44
191
原创 spring中bean的生命周期以及初始化过程
1ClassPathXmlApplicationContext类 容器加载配置文件bean.xml 文件 通过构造方法 2AbstractApplicationContext 在这个类中初始化refresh()方法 3 在finishBeanFactoryInitialization() 中完成bean的 初始化 AbstractAutowireCapableB...
2020-04-26 14:44:18
542
原创 Spring aop的具体实现
spring源码框架中用到了很多ioc aop现在具体对aop 的实现、aop更多的运用于日志类的切面编程 1 定义一个切面类 @Aspect public class LogAspect { @Before("pointCut()") public void start() { System.out.println("开始执行start() 方法"); } @...
2020-04-23 14:59:22
142
原创 Java手动版线程池实现
线程池是我们常用的对象主要用于在开发中减少频繁创建对象减少cpu 等资源的性能损耗 下面简单的实现一个线程池的实现 定义一个线程池的实现类MyThreadPool 具体代码如下: public class MyThreadPool { //默认初始化线程数 private static int WORK_NUM =5; //默认队列任务数 privat...
2020-04-20 18:05:31
282
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1