- 博客(40)
- 问答 (2)
- 收藏
- 关注
原创 Reactor线程模型
单个线程负责处理连接请求,一个或者多个线程负责处理读写请求,业务处理会提交到线程池进行处理。客户端与服务器进行通信需要经过建立连接、请求、返回、关闭连接等步骤,而服务器需要监听客户端发起的创建连接、读取数据、业务处理、返回数据、关闭连接等步骤。主从Reactor模型主要是利用一个主Reactor监控连接请求就绪、一个或者多个子Reactor监控读请求就绪,业务请求还是通过线程池处理。一个线程需要处理连接请求、读写请求、业务处理,处理业务请求会想对较慢。需要等待业务处理完成,才能对其他请求进行处理。
2024-03-19 17:00:20
1358
原创 网络通信与IO多路复用
网络IO通信涉及到硬件网卡以及操作系统内核态与用户态。其中网卡与内核态数据交互主要是通过DMA来进行传输并且由内核进行控制。用户态不需要感知网卡数据的情况,用户态主要是需要知晓内核态socket缓冲区数据是否就绪、并且将数据复制到用户缓冲区。IO模型是指用户态和内核态对IO数据交互处理方式。模型共有5种方式,可以根据连接数量和系统资源进行IO模型的选择,选择合适的IO模型可以加快系统效率节约资源。
2024-03-11 23:44:03
1093
1
原创 RocketMQ-存储与弹性伸缩
主要是对RocketMQ的存储与弹性伸缩做一个学习和总结、加深印象。内容参考RocketMQ官方文档。RocketMQ采用的是混合存储,将Broker上的所有Topic信息主体保存到同一个文件中。特别适合内部消息队列的场景,即Topic数量多、但是每个Topic的消息量较少的场景。采用多种集群部署模式,可以适用多种可靠性场景。具有很强的弹性伸缩能力来满足业务波动的场景。
2024-03-09 22:32:17
1056
原创 RocketMQ-架构与设计
RocketMQ是阿里巴巴开发的纯Java的分布式、队列模型的开源消息中间件,其架构简单、业务场景丰富,支持分布式事务、是一款金融级别可靠业务消息中间件。
2024-02-21 20:17:27
1598
原创 Pulsar-架构与设计
下一代云原生分布式消息流平台单实例支持多集群,支持跨机房在集群间消息复制,极低的发布延迟和端到端延迟支持超过百万的消息主题
2024-02-18 20:04:58
1975
2
原创 消息队列-简介与基础概念
消息队列是一个常用的中间件。目前有很多常用的消息队列可供选择,本文仅仅是罗列了消息队列的一些特性,可以根据以上特性和具体业务场景来进行消息队列的选型。
2024-02-17 13:49:59
981
原创 浅谈设计模式
设计模式就是面对一些问题的最佳解决方案。众多软件开发人员在软件的开发过程中面临一些常见问题给出的解决方案,经过长期的验证和总结修正,形成了相对比较固定并且具有广泛适用性的解决模式。设计模式主要是为了提高代码的重用性、让代码跟容易理解、保证代码的可靠性。设计模式的原则是面向接口编程而不是面向实现编程,优先使用组合对象而不是继承,尽可能复用已有类和对象。设计模式是在代码实践过程中总结出来应对特定问题的最佳解决方案。这些模式可以帮助开发者实现代码的复用、解耦和易于理解。
2024-02-15 17:30:11
1510
1
原创 浅谈业务场景中缓存的使用
缓存是提高系统响应和吞吐量的一个方法,但是使用过程中需要解决缓存穿透、缓存击穿、缓存雪崩等问题,并且需要考虑缓存和数据库的数据一致性问题。如果考虑到程序的可靠性,建议程序对缓存是弱依赖,也就是即使缓存系统完全不可用,也可以保证程序在响应速度和吞吐量降低的情况下,运行的正确性和数据的完整性。
2024-02-14 23:21:59
1488
原创 Impala-架构与设计
Impala是一款基于Hive的大数据分析查询引擎,直接使用Hive的元数据Metastore,因此如果使用Impala需要先安装Hive并启动Metastore服务。Impala不依赖MapReduce而是将执行计划树进行并行计算,使用拉的方式获取结果数据,把结果数据按执行树流是传递汇集,减少中间结果落盘。Impala是大数据进行实时交互式分析查询的一个工具,没有依赖MapReduce执行任务,而是将任务分配到各个Impala节点进行计算和汇总,从而避免了MapReduce的启动时间。
2024-02-12 20:16:46
1660
原创 Hive-架构与设计
支持通过SQL对数据仓库中数据进行访问,比如提取、转化、加工、分析等支持将不同数据格式添加数据结构可以直接访问大数据存储系统中的文件,比如HDFS、HBase等Hive是一个基于Hadoop的数仓分析工具,将分布式系统中的数据映射成结构化数据。提供丰富的SQL查询方式对数仓中的数据进行访问。一般不会存储数据、只会保存元数据到Hive中。Hive根据元数据信息将查询语句转化成执行计划,此执行计划由stage组成的DAG图,调用Hadoop中的MapReduce运行执行计划得到对应结果。
2024-02-10 23:16:00
2701
2
原创 Kudu-架构与设计
Apache Kudu是由Cloudera开源的存储引擎,是一个满足随机读写、又支持OLAP分析的大数据存储引擎,同时避免上述组合架构缺点。Kudu是一个满足随机读写又满足大规模数据分析的大数据存储引擎,是HDFS和HBase两者性能的一个中和。一个引擎就可以满足之前需要HDFS和HBase两个组合的场景。架构采用极简模式没有引入其他组件,主要采用Raft进行协调,采用多副本保证可靠性。数据更新和修改时会在原有DiskRowSet中操作,并采用定期合并减少文件个数,提高读性能。
2023-12-11 11:37:47
1327
原创 HBase-架构与设计
HBase的底层存储引擎是基于LSM-Tree数据结构设计的,存储是基于HDFS。而针对数据的更新和删除,不是修改原有记录而是新增一条记录,这样可以充分发挥顺序写的性能,但是查询的时候就需要查询磁盘中的文件和内存中的操作,读取所有数据版本。因此HBase写性能比读性能提高了两个数量级。HBase是基于分布式文件系统HDFS构建的一个大数据、NoSQL、可拓展分布式数据库。采用Master/Slave架构、用Zookeeper进行元数据保存和协调工作。
2023-12-06 19:47:00
1819
1
原创 Flink-状态流与容错
主要介绍了flink算子分为有状态算子和无状态算子。状态存储实现一个是直接保存对象,另一个保存字节数组。容错机制主要是将实时流逻辑分段进行所有算子的状态保存和恢复来实现容错。
2023-12-04 15:48:15
1433
原创 Flink-简介与基础
主要介绍了Flink背景和以流处理为主的设计理念,Flink的运行时架构、Flink作业的编程以及Flink的高级特性。
2023-11-24 15:51:10
1436
原创 Hadoop-HDFS架构与设计
硬件错误是比软件异常更容易出现的情况,HDFS由成千上百台廉价服务器组成、每个保存整个文件系统的部分数据。如果任意一台服务器出现硬件错误都会导致HDFS部分不可用,所以针对错误的快速检测和自动修复是HDFS框架需要解决核心问题。本文对Hadoop中的HDFS分布式文件系统的架构设计进行了解。hdfs采用常见的主从架构,由集中元数据存储Namenode和分散的数据存储Datanode节点组成,支持高可靠性高吞吐量的批量读取大文件海量数据。
2023-11-14 20:25:19
973
原创 Git-团队协作工作流
开发人员通过Git可以记录和追踪代码的变化,包括添加、删除和修改文件。如果是单人进行开发,可以很方便进行研发和发布等工作。但是实际工作中都是团队协作进行多功能点并行开发,还涉及测试环境、集成环境和生产环境的打包发布,以及线上bug修复等,如何将以上工作进行协调,这就需要一套完整的代码管理和版本控制的流程规范。而在团队中使用Git进行协作开发时,各个成员遵循的一套代码管理和版本控制的规范流程就是Git工作流。
2023-11-13 17:13:31
211
原创 Maven-依赖管理机制
dependency在同一个dependencies或dependencyManagement中,如果出现相同{groupId,artifactId},则后出现的会覆盖先出现。比如在Project B中dependencies和dependencyManagement中重复定义了依赖a,所以在各自节点中,起作用的都是后定义的版本。按照目前Pom,依赖a会是3.7,如果删除dependencies对依赖a的定义,则依赖a会采用版本2.5。
2023-11-10 18:17:34
896
1
原创 Maven-构建生命周期与插件
如果以上插件不能满足开发者需求,开发者可以通过开发自定义插件来满足需求。自定义插件开发主要介绍了Maven的三种构建生命周期以及每种生命周期phase的组成,maven是通过插件执行具体的操作,将插件与phase进行绑定,来提高整个构建过程的拓展性。用户可以通过maven命令行来启动构建过程,寻找与phase绑定的插件并执行来完成整个构建过程。
2023-11-08 14:41:00
581
1
原创 Maven-构建工具
Maven是一个软件工程的项目管理工具,基于工程对象模型(POM)。Maven可以依据统一的模版对项目进行构建、生成报告和文档等操作
2023-11-07 17:43:49
514
原创 网络安全通信HTTPS原理
HTTPS并不是一个全新的协议,而是为了保证网络通信的数据安全,在HTTP的基础上加上了安全套件SSL的一个数据通信协议。HTTP协议全称为HyperText Transfer Protocol即超文本传输协议,是客户端浏览器与Web服务器之间的应用层通信协议。HTTPS协议全称为HyperText Transfer Protocol over Secure Socket Layer即基于SSL层的超文件传输协议,HTTPS的安全是通过SSL实现的,数据传输是依赖HTTP。
2023-06-05 20:07:59
1558
原创 网络通信与密码相关概念流程
随着科技的发展,人们的通信都转化成电子通信,由于信息需要通过一个公有的网络进行传输,信息在网络传输的过程中很容易被截取篡改。所以对一些重要信息的传递需要保证其安全性,由此需要一系列的机制来保证。系统预制CA证书解决了CA机构的公钥获取问题,数字证书和数字签名解决了对公钥的传递和验证问题【无篡改无伪造】,非对称加密解决了通信中对称加密密钥的传递问题。通过以上机制在互联网中解决了安全通信问题。
2023-04-28 16:57:41
1072
原创 大数据-三驾马车与hadoop起源
Google成立于1998年是全球最大的搜索引擎公司,主要业务为搜索、云计算、广告技术等,主要利润来自于广告等服务。在21世纪初互联网刚刚兴起,每个企业保存和生产的数据量并不大,已有的技术对数据的保存和处理完全满足业务上的需求。作为搜索引擎公司,google需要保存爬虫所获取的大量网页数据,还要对海量的数据进行快速的搜索、计算、排名等处理。
2023-04-25 10:41:24
1724
原创 大数据-概览
最近由于工作变动,有非常多的关于大数据的知识。针对自己的学习过程进行一下记录,对自己也起到一个督促。针对大数据的来源、作用、价值、概念进行一些初步的了解,对其中一些术语进行介绍,为接下来的学习奠定一点基础。
2023-04-21 19:25:33
740
原创 Sqlite 防止插入重复数据
在SQLITE中,可以用以下方法防止插入重复数据,1.设置表的联合主键2.在INSERT语句中添加OR IGNORE,即可(重复数据会跳过,且不影响后续数据插入)示例如下:insert OR IGNORE into PDA_Test (DeviceID,MethodName) values('1112','测试原有');
2013-09-24 15:35:03
29233
1
空空如也
java ReentrantLock 构造函数问题
2016-05-11
volatile重排序 null值
2015-12-11
TA创建的收藏夹 TA关注的收藏夹
TA关注的人