- 博客(31)
- 收藏
- 关注
原创 Tomcat组成与工作原理
开源的 Java Web 应用服务器,实现了 Java EE(Java Platform Enterprise Edition)的部 分技术规范,比如 Java Servlet、Java Server Page、JSTL、Java WebSocket。Java EE 是 Sun 公 司为企业级应用推出的标准平台,定义了一系列用于企业级开发的技术规范,除了上述的之外,还有 EJB、Java Mail、JPA、JTA、JMS 等,而这些都依赖具体容器的实现。
2023-10-10 22:43:18
188
原创 限流的场景和应用
1. 防止流量过大导致系统崩溃:当流量突然增大时,限流可以确保系统不会因为过大的流量导致资源耗尽和系统崩溃。2. 防止恶意请求:限流可以用来针对一些恶意请求进行限制,避免这些请求对系统造成损害。3. 避免线程池耗尽:当请求很多时,后端的线程池可能会耗尽,导致许多请求得不到响应。加上限流可以避免这种情况的发生。4. 防止缓存击穿:当缓存失效时,后端系统会接收大量的请求。限流可以确保后端系统不会因为缓存失效而被打垮。
2023-06-25 15:36:34
1012
原创 Prometheus监控K8S
Cadvisor + node-exporter + prometheus + grafana是一套非常流行的Kubernetes监控方案。它们的功能如下:- Cadvisor:容器资源监控工具,可以实时监控CPU、内存、存储、网络等容器指标,并暴露Metrics接口。- node-exporter:节点级指标导出工具,可以监控节点的CPU、内存、磁盘、网络等指标,并暴露Metrics接口。
2023-06-16 23:48:13
8196
10
原创 Kubernetes master集群高可用
Kubernetes master高可用一般有三种实现方案:1. kubeadm 高可用安装使用kubeadm工具安装Kubernetes集群,通过增加master节点数量和指定vip实现master高可用。具体步骤如下:- 安装一主两备master节点(由kubeadm完成)- 配置vip(使用keepalived或haproxy等工具)
2023-06-01 17:21:12
1619
2
原创 kubernetes环境搭建
1.一个主多个工作节点: 一台Master节点和多台Node节点,搭建简单,但是有单机故障风险,适合用于测试环境。在kubernetes中service有两种代理模型,-种是基于iptables的, - -种是基于ipvs的。2.多主节点多工作节点:多台Master节点和多台Node节点,搭建麻烦,安全性高,适合用于生产环境。
2023-05-20 18:16:24
834
转载 Docker
docker run -i(保持容器一直运行)-t(给容器一个伪终端)-d(后台运行,不直接进入容器) --name=tomcat9.2(给启动容器起名字)-p 8080:8080(宿主:docker容器)tomcat:9.2(启动的容器) 【参数】(加入容器初始化命令)而docker就是基于他的基础上发展过来的。2. Docker的主要目标是‘build ,ship and run any app,anywhere’,也就是说通过对应用程序组件的封装,分发,部署,运行等生命周期的管理。
2023-03-26 16:52:57
1529
1
转载 分布式日志采集(elk+kafka)
分布式系统的日志,每个服务器节点web服务都会产生各自的日志文件,如果想要整合或者排查日志,就需要到每个节点下逐一查看日志文件这样会比较麻烦。所以需要一个方案将日志采集放到一个位置进行存储和查询。这里就可以使用elk+kafka的方式解决。
2023-03-24 23:15:22
2507
2
原创 MYSQL-性能优化篇
索引的建立是表中比较有指向性的字段,相当于目录,比如说行政区域代码,同一个地域的行政区域代码都是相同的,那么给这一列加上索引,避免让它重复扫描,从而达到优化的目的!增加索引会有利于查询效率,但会降低insert,update,delete的效率,但实际上往往不是这样的,过多的索引会不但会影响使用效率,同时会影响查询效率,这是由于数据库进行查询分析时,首先要选择使用哪一个索引进行查询,如果索引过多,分析过程就会越慢,这样同样的减少查询的效率,因此我们要知道如何增加,有时候要知道维护和删除不需要的索引。
2023-03-20 21:00:38
2088
原创 HBase详解
HBase 是一种分布式、可扩展、支持海量数据存储的 NoSQL 数据库。逻辑上,HBase 的数据模型同关系型数据库很类似,数据存储在一张表中,有行有列。但从 HBase 的底层物理存储结构(K-V)来看,HBase 更像是一个 multi-dimensionalmap。
2023-02-12 20:54:44
1290
原创 SparkStreaming
SparkStreaming用于流式数据的处理。SparkStreaming支持的数据输入源有很多,例如:KafKa、Flume和简单的TCP套接字等等。数据输入后可以用Spark的高度抽象原语如:map、reduce、join、window等进行运算。而结果也能保存在很多地方,如HDFS,数据库等
2023-02-06 17:24:47
472
原创 SparkSQL详解
Spark SQL是 Spark 用来处理结构化数据的一个模块,它提供了 2 个编程抽象:DataFrame 和DataSet,并且作为分布式 SQL 查询引擎的作用。
2023-02-06 17:00:19
2630
原创 Spark详解
Spark 是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。在之前的学习中,Hadoop的 MapReduce 是大家广为熟知的计算框架,那为什么咱们还要学习新的计算框架 Spark 呢,这里就不得不提到 Spark 和 Hadoop 的关系。
2023-02-06 15:47:39
7163
原创 Hive详解
1)hive简介Hive:由 Facebook 开源用于解决海量结构化日志的数据统计工具。Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件 映射为一张表,并提供类SQL 查询功能。
2023-02-06 11:50:49
3732
原创 Hadoop 简介
Hadoop 生态圈是指围绕 Hadoop 软件框架为核心而出现的越来越多的相关软件框架,这些软件框架和 Hadoop 框架一起构成了一个生机勃勃的 Hadoop 生态圈
2023-02-05 18:11:13
53629
1
转载 如何更好地使用Kafka
要确保Kafka在使用过程中的稳定性,需要从kafka在业务中的使用周期进行依次保障。主要可以分为:事先预防(通过规范的使用、开发,预防问题产生)、运行时监控(保障集群稳定,出问题能及时发现)、故障时解决(有完整的应急预案)这三阶段。事先预防即通过规范的使用、开发,预防问题产生。主要包含集群/生产端/消费端的一些最佳实践、上线前测试以及一些针对紧急情况(如消息积压等)的临时开关功能。Kafka调优原则:1.确定优化目标,并且定量给出目标(Kafka 常见的优化目标是吞吐量、延时、持久性和可用性)。
2022-12-01 17:31:05
389
转载 RocketMQ介绍
今天和大家一起深入生产级别消息中间件 - RocketMQ 的内核实现,来看看真正落地能支撑万亿级消息容量、低延迟的消息队列到底是如何设计的。这篇文章我会先介绍整体的架构设计,然后再深入各核心模块的详细设计、核心流程的剖析。还会提及使用的一些注意点和最佳实践。对于消息队列的用处和一些概念不太清楚的同学强烈建议先看消息队列面试连环问,这篇文章介绍了消息队列的使用场景、基本概念和常见面试题。
2022-11-10 17:36:17
413
转载 RocketMQ与kafka的区别
kafka和RocketMQ的总体区别是,kafka设计初衷是用于日志传输,而RocketMQ的设计用于解决各类应用可靠的消息传输,阿里云官网承诺RocketMQ数据可靠性为10个9,服务可靠性为99.95%。kafka相比RocketMQ的优势1、单机吞吐量TPS可上百万,远高于RocketMQ的TPS7万每秒,适用于日志类消息。2、kafka支持多语言的客户端RocketMQ相比kafka的优势**1、保证消息不丢( 数据可靠性达10个9)2、可严格保证消息有序。
2022-11-10 17:13:06
4307
转载 kafka的rebalance机制
Reblance就像他的名称一样,意思是再平衡,平衡什么?平衡和之间的对应关系。本质上来讲,Reblance是一种协议,规定了一个Consumer Group下所有Consumer如何达成一致,来分配订阅Topic的每个分区,尽量让每个消费者分配到相对均匀的分区,使Consumer的资源都能得到充分利用,防止有些Consumer比较忙,有的Consumer比较闲。
2022-11-10 16:01:25
5781
原创 HashMap底层原理
HashMap 基于键 HashCode 值唯一标识一条数据,根据hashCode定位到数组的具体下标,然后对存储的链表进行遍历查找到需要的数据,复杂度O(n).其中链表中每个元素都是一个Entry实例,包换4个属性,key,value,hash,next指向。为了减小链表遍历的开销,java8改成数组+链表+红黑树的方式,当链表元素超过8后会将链表结构转化成红黑树,提高查询效率。时间复杂度为O(logN),长度小于8的话会重新转化成链表。
2022-10-18 16:56:52
289
原创 Spring加载流程
tomcat在启动ServletContext容器的时候会发布ServletContextEvent事件,Spring就通过实现ServletContextListener接口,监听该事件来监听ServletContext的生命周期。
2022-10-18 16:43:29
2904
1
原创 springMVC介绍
我们使用springMVC的时候,它的主要入口时dispatcherServlet类它最总实现了Servlet接口。Servlet初始化执行init()方法,其中springMVC子容器初始化的时候会调用DispatcherServlet的onRefresh()方法,而在onRefresh()方法中只做了一件事,就是调用initStrategies()方法来初始化springMVC的九大组件。
2022-10-18 14:59:27
182
转载 java中的锁
Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。本文旨在对锁相关(本文中的源码来自JDK 8)、使用场景进行举例,为读者介绍主流锁的知识点,以及不同的锁的适用场景。Java中往往是按照是否含有某一特性来定义锁,我们通过特性将锁进行分组归类,再使用对比的方式进行介绍,帮助大家更快捷的理解相关知识。
2022-10-14 23:40:19
118
原创 简单介绍Kafka
Kafka 是一种高吞吐量、分布式、基于发布/订阅的消息系统,最初由 LinkedIn 公司开发,使用Scala 语言编写,目前是 Apache 的开源项目。
2022-10-13 23:38:26
135
原创 java并发关键字
CountDownLatch类位于java.util.concurrent包下,是一个同步工具类 ,允许一个或多个线程一直等待其他线程的操作执行完后再执行相关操作。CountDownLatch 基于线程计数器来实现并发访问控制,主要用于主线程等待其他子线程都执行完毕后执行相关操作。
2022-10-11 11:27:15
324
原创 什么是AQS
AQS ( Abstract Queued Synchronizer )是一个抽象的队列同步器,通过维护一个共享资源状态( Volatile Int State )和一个先进先出( FIFO )的线程等待队列来实现一个多线程访问共享资源的同步框架。
2022-10-10 23:35:06
27786
1
原创 什么是 CAS
CAS (Compare And Swap)指比较并交换。CAS算法 CAS(V,E,N)包含3个参数,V表示要更新的变量,E表示预期的值,N表示新值。在且仅在V值等于E值时,才会将V值设为N,如果V值和E值不同,则说明已经有其他线程做了更新,当前线程什么都不做。最后CAS返回当前V的真实值。
2022-10-10 22:58:41
185
原创 Java阻塞队列
队列是种只允许在表的前端进行删除操作,而在表的后端进行插入操作的线性表。阻塞队列和一般队列的不同之处在于阻塞队列是“阻塞”的,这里的阻塞指的是操作队列的线程的一种状态。
2022-10-10 17:52:53
919
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人