- 博客(231)
- 资源 (5)
- 收藏
- 关注
原创 Kafka架构概述
Kafka是由Apache软件基金会管理的一个开源的分布式数据流处理平台。Kafka具有支持消息的发布/订阅模式、高吞吐量与低延迟、持久化、支持水平扩展、高可用性等特点。可以将Kafka应用于大数据实时处理、高性能数据管道、流分析、数据集成和关键任务应用等场景。
2024-04-02 23:47:04 1611 1
原创 Kafka简介
Kafka是由Apache软件基金会管理的一个开源数据流处理平台。Kafka最初由LinkedIn公司开发,用来作为一个分布式的基于发布/订阅模式的消息队列,主要应用于大数据实时处理领域,之后被捐赠并成为Apache项目的一部分。随着Kafka的不断发展,Kafka现在被更广泛地看作是一个分布式事件流平台,被数千家公司用于高性能数据管道、流分析、数据集成和关键任务应用。
2024-03-25 14:51:08 998
原创 Redis与数据库的一致性
在使用Redis作为应用缓存来提高数据的读性能时,经常会遇到Redis与数据库的数据一致性问题。简单来说,就是同一份数据同时存在于Redis和数据库,如何在数据更新的时候,保证两边数据的一致性。首先,如果期望Redis与数据库保持强一致性,则必须额外引入分布式事务组件,通过一致性协议(如2PC、3PC等)来保证缓存和数据库的一致性。这里讨论的一致性是最终一致性,即Redis中的数据将最终和数据库中的数据保持一致。
2024-03-24 13:30:59 841
原创 Java枚举类型
枚举类型是Java 1.5中新增的类型。Java在类型划分时,将枚举类型作为独立的数据类型,用于表述一组常量。本质上,枚举就是特殊的类,只是域成员均为常量,且构造方法被默认强制为私有。枚举类型使得代码更加清晰和易于维护,因为它限制了变量的取值范围。
2024-03-17 23:19:41 899
原创 深入联合文件系统
Union File System(联合文件系统,UnionFS)是一种轻量级的高性能分层文件系统,它支持将文件系统中的修改信息作为一次提交,并层层叠加,同时可以将不同目录挂载到同一个虚拟文件系统下,应用看到的是挂载的最终结果。联合文件系统将多个文件系统层以一种有效的方式组合在一起,形成了一个单一的可读写的文件系统。联合文件系统是实现Docker镜像的技术基础。
2024-03-13 10:09:40 873
原创 平衡二叉树
在关键字排列随机的情况下,二叉排序树的平均查找长度和log n是等数量级的。在某些情况下,尚需在构成二叉排序树的过程中进行“平衡化”处理,使其成为平衡二叉树。
2024-03-10 22:19:17 937
原创 Dockerfile指令大全
Dockerfile文件由一系列指令和参数组成。指令的一般格式为INSTRUCTION arguments。具体来说,包括"配置指令"(配置镜像信息)和"操作指令"(具体执行操作)。每条指令,如FROM,都是大小写不敏感的。但是为了区分指令和参数,强烈建议统一使用大写字母。Dockerfile中的指令会按顺序从上到下执行,所以应根据需要合理安排指令的顺序。一个Dockerfile文件以FROM指令作为构建开始的第一个指令。每条指令都会创建一个新的镜像层并对镜像进行提交。
2024-03-10 21:53:29 882
原创 Dockerfile编写实践篇
Dockerfile是一个文件,它由构建镜像的指令组成,用户可以使用Dockerfile来快速创建自定义的镜像。指令由Docker镜像构建者自上而下排列,能够被用来修改镜像的任何信息。 Dockerfile具有信息表达性,且易于理解,这些都要归功于Dockerfile支持注释的简洁语法。开发者可以使用任何版本控制工具来跟踪Dockerfile文件的变动。维护多个版本的镜像就和管理多个Dockerfile一样简单。
2024-03-10 21:52:43 1433
原创 Docker常见命令使用
Docker命令是使用Docker的基础。这里记录下Docker日常运维过程中经常使用到的一些命令,更全面的命令还请参考Docker官网。
2024-03-05 20:03:43 1265
原创 容器化技术
容器化技术并不是由Docker引入,而是有其发展历程。容器有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资惊使用需求。容器可以在核心CPU运行指令,而不需要任何专门的解释机制。容器避免了准虚拟化(para-virtualization)和系统调用替换中的复杂性。
2024-03-05 10:58:38 918
原创 Docker架构概述
Docker是基于Go语言实现的开源容器项目,能够把开发的应用程序自动部署到容器的开源的应用容器引擎。Docker的构想是要实现"Build, Ship and Run Any App, Anywhere",即通过对应用的封装(Packaging)、分发(Distribution)、部署(Deployment)、运行(Runtime)生命周期进行管理,达到应用组件级别的"一次封装,到处运行"。可以说,Docker首次为应用的开发、运行和部署提供了"一站式"的实用解决方案。
2024-03-03 21:22:01 951
原创 Docker与虚拟机比较
在对比Docker和虚拟机前,先简单了解下虚拟化,明确Docker和虚拟机分别对应的虚拟化级别,然后对Docker和虚拟机进行比较。需要注意的是,Docker和虚拟机并没有什么可比性,而是Docker使用的容器技术和虚拟机使用的虚拟化技术的比较。
2024-03-01 16:15:45 1151
原创 Docker概述
Docker是基于Go语言实现的开源容器项目,由Docker公司的团队编写,能够把开发的应用程序自动部署到容器的开源的应用容器引擎。使用Docker后,开发人员只需要关心容器中运行的应用程序,而运维人员只关心如何管理容器,Docker的设计目的就是要加强开发人员写代码的开发环境与应用程序要部署的生产环境的一致性,从而降低那种"开发时一切都正常,肯定是运维的问题"的风险。
2024-03-01 16:15:22 1202
原创 Kubernetes编排概述
Kubernetes是由谷歌开源的面向应用的容器集群部署和管理的系统,为容器化应用提供了资源调度、部署运行、服务发现、扩缩容等一整套功能。Kubernetes最主要的设计思想就是,以统一的方式抽象底层基础设施能力,定义任务编排的各种关系,将这些抽象以声明式API的方式对外暴露,从而允许平台构建者基于这些抽象进一步构建自己的PaaS乃至任何上层平台。Kubernetes的目标旨在消除编排物理/虚拟计算、网络和存储等基础设施的负担,并使应用程序运营商和开发人员完全将重点放在以容器为中心的原语上进行自助运营。
2024-02-27 11:40:27 830
原创 Kubernetes 声明式API
声明式API践行了"将简单留给用户,将复杂流程系统"的设计理念。对于用户来说,只需掌握API对象的使用,无需关心内部的实现细节。系统会使用控制器模式将资源对象调谐到API对象指定的"期望状态"。声明式API是Kubernetes最核心的设计理念,正因为实现了对声明式API的支持,才可在基于Kubernetes构建的上层平台使用一致的编程范式和交互编程界面,才使得今天整个云原生生态中诞生了如此多的Kubernetes插件能力和扩展。
2024-02-23 15:45:59 1033
原创 Kubernetes 控制器
在Kubernetes中,所有的控制器都是由Kubernetes Controller Manager统一管理。可以将Kubernetes Controller Manager看成一系列控制器的集合。在Kubernetes中,每一个控制器都以独有的方式负责某种编排功能,并遵循一种通用的编排模式————控制循环(Control Loop,也称控制回路)或调谐循环(Reconcile Loop)或同步循环(Sync Loop)。
2024-02-23 13:22:52 956
原创 Kubernetes API对象
API对象(也常被称作对象)是Kubernetes中的管理操作单元。Kubernetes系统每支持一项新功能,引入一项新技术,一定会新引入对应的API对象,支持对该功能的管理操作。也就是说,API对象可以帮助实现特定功能的管理操作。如Kubernetes最常用的Pod负责一个或多个容器的管理,Deployment负责Pod副本的部署、升级和回滚、扩容和缩容等自动化运维。API对象是一种"意向表达(Record of Intent)"。
2024-02-03 18:52:45 874
原创 Kubernetes Pod使用
Pod是Kubernetes中可以创建、调度和部署的最小,也是最简单的单元。Pod是基于Kubernetes部署和运维应用的基础。本文重点介绍下Pod各字段的含义及Pod的使用。
2024-02-03 18:51:54 1039
原创 Kubernetes Service详解
Service是Kubernetes实现微服务架构的核心概念,通过创建Service,可以为一组具有相同功能的容器应用提供一个统一的入口地址,并且将请求以负载均衡的方式分发到后端的各个容器应用上。
2024-01-30 17:21:17 929
原创 Kubernetes HPA使用
在生产环境中,经常会遇到由于业务发展迅速需要增加某个服务实例数量的场景,也可能会遇到由于资源紧张或者工作负载降低而需要减少服务实例数量的场景。Kubernetes对Pod的扩缩容操作提供了手动和自动两种模式,手动模式通过运行kubectl scale命令或通过修改ReplicaSet中Pod副本数量的方式实现。自动模式则需要用户根据某个性能指标或者自定义业务指标,并指定Pod副本数量的范围,系统将自动在这个范围内根据性能指标的变化进行调整。这里介绍下自动模式,也即Kubernetes HPA的使用。
2024-01-30 17:19:37 1050
原创 Kubernets Deployment详解
Deployment自动化的完成了Pod副本的部署、升级和回滚、扩容和缩容等运维能力。开发者只需在 Deployment声明文件中描述期望状态,然后 Deployment Controller 就会自动将 Pod 从实际状态改变到期望状态。Deployment提供了运行Pod的能力,并且为Pod提供副本管理、升级和回滚、水平扩容和缩容等功能,一般用于运行无状态的应用。
2024-01-25 20:10:47 859
原创 Kubernetes Pod详解
如果说容器是未来云计算系统中的进程,容器镜像是这个系统里的安装包,那么Kubernetes就是云计算系统的操作系统。而Pod就是基于容器技术的操作系统里的"进程组",负责一个或多个容器的管理。Pod 是Kubernetes中可以创建、调度和部署的最小也是最简单的单元。一个Pod里可以封装一个容器或多个容器(多个容器间可能存在拓扑关系–也即依赖关系),Pod里的容器共享存储、网络、容器运行配置等。同一个Pod里的所有容器都被统一安排和调度,所以可将Pod看成是对容器的编排。
2024-01-25 09:30:00 982
原创 Kubernetes架构概述
Kubernetes 是由谷歌开源的面向应用的容器集群部署和管理的系统,为容器化应用提供了资源调度、部署运行、服务发现、扩缩容等一整套功能。Kubernetes 最初来源于谷歌内部的Borg。Kubernetes 的目标旨在消除编排物理/虚拟计算,网络和存储基础设施的负担,并使应用程序运营商和开发人员完全将重点放在以容器为中心的原语上进行自助运营。
2024-01-19 10:57:00 854
原创 Kubernetes网络模型概述
Kubernetes网络模型设计的一个基础原则是:每个Pod都拥有一个独立的IP地址,并假定所有Pod都在一个可以直接连通的、扁平的网络空间中。所以不管这些Pod是否运行在同一个Node中,都要求它们可以直接通过对方的IP进行访问。由于Kubernetes的网络模型假设Pod之间访问时使用的是对方Pod的实际地址,所以一个Pod内部的应用程序看到的自己的IP地址和端口与集群内其他Pod看到的一样。
2024-01-17 17:44:39 1092
原创 kubectl命令行工具用法简介
kubectl作为客户端CLI工具,可以让用户通过命令行对Kubernetes集群进行操作。本节对kubectl的子命令和用法进行详细说明。
2024-01-05 17:39:34 1029
原创 设计模式常见面试题
简单梳理下二十三种设计模式,在使用设计模式的时候,不仅要对其分类了然于胸,还要了解每个设计模式的应用场景、设计与实现,以及其优缺点。同时,还要能区分功能相近的设计模式,避免出现误用的情况。
2023-11-19 22:24:37 412
原创 Spring Bean循环依赖问题及解决
类与类之间的依赖关系形成了闭环,就会导致循环依赖问题的产生。举例来说,假设存在两个服务类A和服务类B,如果A通过依赖注入的方式引用了B,且B通过依赖注入的方式引用了A,那么A和B之间就存在循环依赖。推广来说,如果涉及多个类,也存在这种依赖关系,那么也是循环依赖问题。循环依赖问题比较严重,有时会影响服务启动,有时会导致死循环调用(如果线上环境出现循环调用,会导致程序进入死循环,然后服务崩溃,进而导致用户请求无法响应,造成生产事故),应引起足够的重视。
2023-11-12 14:04:46 1106
原创 二叉排序树
二叉排序树(Binary Sort Tre)或者是一棵空树,或者是具有如下性质的二叉树:(1) 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;(2) 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;(3) 它的左右子树也分别为二叉排序树。简单来说,二叉排序树是指根结点大于左子树,小于右子树的二叉树。根据使用目的,二叉排序树也常被称为二叉查找树二叉搜索树。
2023-10-27 15:00:37 149
原创 Java并发编程常见面试题总结
梳理Java并发编程相关的面试题,主要参考《JAVA并发编程实战》(Brian Goetz, Joshua Bloch, David Holmes, Tim Peierls, Joseph Bowbeer, Doug Lea 著, 韩锴, 方妙 译)一书,其余部分整合网络相关内容。
2023-10-21 19:19:37 262
原创 Java虚拟机常见面试题总结
梳理Java虚拟机相关的面试题,主要参考《深入理解Java虚拟机 JVM高级特性与最佳实践》(第2版, 周志明 著)一书,其余部分整合网络相关内容。
2023-10-20 20:07:15 364
原创 Java基础常见面试题总结
梳理Java基础相关的面试题,主要参考《Java编程思想》(第四版, Bruce Eckel 著, 陈昊鹏 译)一书,其余部分整合网络相关内容。注意,关于JVM和Java并发编程的面试题因为内容较多,单独整理。
2023-10-18 16:09:21 506
原创 Redis常见面试题总结
Redis是由Salvator Sanfilippo在2009年开源的使用 ANSI C 语言编写、高性能、遵守 BSD 协议、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API 的非关系型数据库。
2023-10-16 13:29:28 229 1
原创 MySQL锁概述
数据库锁是一种机制,用于管理并发访问数据库的方式。当多个用户或事务同时访问数据库时,可能会导致数据不一致或冲突的问题。数据库锁的作用是确保数据的一致性和完整性,同时允许多个用户并发地访问数据库。 需要注意的是,加锁是消耗资源的,锁的各种操作,包括获取锁、校验锁是否已解除、释放锁等,都会增加系统的开销。
2023-10-12 18:01:58 363 1
原创 数据库常见面试题--MySQL
梳理面试过程中数据库相关的常见问题,需要说明的是,这篇文章主要是基于MySQL数据库,其他类型的数据库还请自行参考使用。
2023-10-11 10:07:11 389
原创 HTTPS协议概述
HTTPS是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,通过 SSL证书来验证服务器的身份,并为浏览器和服务器之间的通信进行加密。
2023-09-27 16:23:41 210
原创 服务网格概述
服务网格是一种在分布式(如微服务)软件系统内管理所有服务对服务(东西向)流量的基础设施层。服务网格负责构成现代云原生应用的复杂服务拓扑来可靠地交付请求。服务网格既提供以业务为重点的功能操作,如路由,也提供非功能支持,如执行安全策略、服务质量和速率限制。它通常(尽管不是唯一的)使用 sidecar 代理来实现,所有服务都通过 sidecar 代理进行通信。sidecar 作为轻量级网络代理,与应用程序代码部署在一起,对应用程序来说无需感知其存在。
2023-09-26 11:49:52 129
原创 Spring MVC常见面试题
Spring MVC框架是以请求为驱动,围绕Servlet设计,将请求发给控制器,然后通过模型对象,分派器来展示请求结果视图。简单来说,Spring MVC整合了前端请求的处理及响应。Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
2023-09-21 13:34:51 356
原创 Spring Boot常见面试题
Spring Boot 是由 Pivotal 团队提供,用来简化 Spring 应用创建、开发、部署的框架。它提供了丰富的Spring模块化支持,可以帮助开发者更轻松快捷地构建出企业级应用。Spring Boot通过自动配置功能,降低了复杂性,同时支持基于JVM的多种开源框架,可以缩短开发时间,使开发更加简单和高效。
2023-09-19 16:14:30 629 1
Representation of Events in Nerve Nets and Finite Automata.pdf
2021-12-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人