秒杀项目
秒杀项目笔记
Spring的特性
Spring是什么?
Spring 是一个轻量级、非入侵式的控制反转 (IoC) 和面向切面 (AOP) 的框架。
Spring有哪些特性呢?(优点)1. IOC 和 DI 的支持
Spring 的核心就是一个大的工厂容器,可以维护所有对象的创建和依赖关系,Spring 工厂用于生成 Bean,并且管理 Bean 的生命周期,实现高内聚低耦合的设计理念。
2. AOP 编程的支持
Spring 提供了面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等切面功能。
3. 声明式事务的支持
支持通过配置就来完成对事务的管理,而不需要通过硬编码的方式,以前重复的一些事务提交、回滚的JDBC代码,都可以不用自己写了。
4. 快捷测试的支持
Spring 对 Junit 提供支持,可以通过注解快捷地测试 Spring 程序。
5. 快速集成功能
方便集成各种优秀框架,Spring 不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、MyBatis、Quartz 等)的直接支持。
6. 复杂API模板封装
Spring 对 Ja ...
Zookeeper
概述Zookeeper是一个开源的分布式的,为分布式应用提供协调的Apache项目。
工作机制Zookeeper从设计模式⻆度来理解:是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper就将负责通知已经在Zookeeper上注册的那些观察者做出相应的反应。
特点
Zookeeper:一个领导者(Leader),多个跟随者(Follower)组成的集群;
集群中只要有半数以上节点存活,Zookeeper集群就能正常服务;
全局数据一致:每个Server保存一份相同的数据副本,client无论连接到哪个S erver,数据都是一致的;
更新请求顺序进行,来自同一个Client的更新请求按其发送顺序依次执行;
数据更新原子性,一次数据更新要么成功,要么失败;
实时性,在一定时间范围内,Client能得到最新数据;
数据结构Zookeeper数据模型的结构与Unix文件系统很类似,整体上可以看作是一颗树,每个节点称作一个 ZNode。每一个ZNode默认能够存储1MB的数据,每个ZNode都 ...
HA高可用
HA高可用HA概述
所谓HA(HighAvailable),即高可用(7*24小时不中断服务)。
实现高可用最关键的策略是消除单点故障。HA严格来说应该分成各个组件的HA机制:Hadoop2.之前,在HDFS集群中NameNode存在单点故障(SPOF)。
NameNode主要在以下两个方面影响HDFS集群NameNode机器发生意外,如宕机,集群将无法使用,直到管理员重启NameNode机器需要升级,包括软件、硬件升级,此时集群也将无法使用
HDFSHA功能通过配置Active/Standby两个NameNodes实现在集群中对NameNode的热备来解决上述问题。如果出现故障,如机器崩溃或机器需要升级维护,这时可通过此种方式将NameNode很快的切换到另外一台机器。
工作要点1.元数据管理方式需要改变
内存中各自保存一份元数据;Edits日志只有Active状态的NameNode节点可以做写操作;两个NameNode都可以读取Edits;共享的Edits放在一个共享存储中管理(qjournal和NFS两个主流实现);
2. 需要一个状态管理功能模块实现了一个zkfai ...
NameNode的工作机制
工作机制NameNode中元数据的存储介质?磁盘?内存?如果存储在NameNode节点的磁盘中,因为经常需要进行随机访问,还有响应客戶请求,必然是效率过低。因此,元数据需要存放在内存中。但如果只存在内存中,一旦断电,元数据丢失,整个集群就无法工作了。因此产生在磁盘中备份元数据的FsImage。
这样又会带来新的问题,当在内存中的元数据更新时,如果更新FsImage,就会导致效率过低,但如 果不更新,就会发生一致性问题,一旦NameNode节点断电,就会产生数据丢失。因此,引入Edits文 件(只进行追加操作,效率高)。每当元数据有更新或者添加元数据时,修改内存中的元数据并追加到 Edits中。这样,一旦NameNode节点断电,可以通过FsImage和Edits的合并,合成元数据。
但是,如果⻓时间添加到Edits中,会导致该文件数据过大,效率降低,而且一旦断电,恢复元数据需要的时间很⻓。因此,需要定期进行FsImage和Edits的合并,如果这个操作由NameNode节点完成,又回效率过低。因此引入一个新的节点SecondearyNamenode,专⻔用于FsImage和Edits的 ...
hdfs架构及读写数据流程
架构
Namenode是HDFS集群主节点,负责管理整个文件系统的元数据,以树形结构维护者集群中所有的文件和目录,所有的读写请求都要经过Namenode。
a. 处理客戶端请求(读,写,管理);
b. 管理数据块映射信息;
c. 管理HDFS的映射空间;
Datanode将HDFS数据以文件的形式存储在本地的文件系统中,它并不知道有关HDFS文件的信息。它把每个HDFS数据块存储在本地文件系统的一个单独的文件中。
a. 存储实际的数据块;
b. 进行数据块读写操作;
Client:客戶端
a. 文件切分。文件上传HDFS的时候,client将文件切成一个个Block,然后进行上传;
b. 和NameNode交互,获取文件的位置信息;
c. 和datanode交互,读写数据;
d. client提供命令来管理HDFS,例如进入安全模式、退出安全模式,格式化等;
SecondaryNameNode:不是NameNode的热备节点,当NameNode退出服务状态时,并不替换NameNode提供服务。
a. 分担NameNode工作量,定期合并Fsimage和EditsLog,并 ...
hdfs的产生
HDFS产生背景HDFS(Hadoop分布式文件系统)是Apache Hadoop项目的一个重要组成部分,用于存储和处理大规模数据集。在过去的几十年中,数据量呈指数级增⻓,传统的存储和处理方法已经无法应对这些大规模数据的挑战。在此背景下,Google公司在 2003 年发表了一篇关于Google文件系统(GFS)的论文,介绍了他们自主开发的分布式文件系统。这篇论文引起了广泛的关注,并促进了分布式文件系统研究的发展。随后,Apache软件基金会在 2006 年创建了Hadoop项目,旨在实现可靠、可扩展、高效的分布式计算平台,其中包括了HDFS作为其默认的分布式文件系统。HDFS受到GFS的启发,在设计上采用了类似的思想和架构。
HDFS的产生背景主要有以下几个方面:
数据爆炸:随着互联网的普及和各种应用程序的快速发展,人们创造和收集的数据量不断增加。从社交媒体、移动应用到物联网设备,各种渠道都在不断产生大量的数据。传统的存储系统已经无法满足如此庞大的数据规模和处理需求。
数据分析:大数据分析已经成为企业和科研机构的重要工具。传统的数据存储和处理方法无法满足对大规模数据集进行高效处理 ...
存储架构的发展
存储架构的发展单机存储单机存储是最早的存储方式,将数据保存在单个计算机的本地存储设备中,如硬盘或固态硬盘。
优点:存取速度快,简单易用。
缺点:容量有限,可靠性低,不具备横向扩展能力。
集中式存储随着数据量的增⻓,人们开始将数据集中存储在专用服务器或存储设备上。通过网络连接,多个客戶端可以同时访问和共享存储设备上的数据。
优点:提供了更高的存储容量和可靠性,实现了更好的数据管理和共享。
缺点:单点故障⻛险较高,不适合大规模分布式应用。
分布式存储分布式存储将数据分散存储在多个节点上,每个节点都具有自己的存储资源。 数据可以通过分片和冗余备份来提高可靠性和容错性。 通过分布式协调和数据一致性机制,实现数据的高可用性和负载均衡。
优点:具备良好的可扩展性、容错性和性能。
缺点:复杂度较高,需要解决一致性、并发和故障处理等挑战。
云存储云存储是一种基于云计算模式的存储方式,将数据存储在云服务提供商的服务器上,并通过网络进行访问。 用戶可以根据需求弹性地扩展存储容量,并享受高可用性、灵活性和成本效益等优势。提供了多种存储服务模型,如对象存储、块存储和文件存储,满足不同应用场 ...
Mysql的存储引擎
MySQL 支持哪些存储引擎?
MySQL 支持的引擎包括:InnoDB、MyISAM、MEMORY、Archive、Federate、CSV、BLACKHOLE 等;
MySQL5.5 之前的默认存储引擎是 MyISAM,5.5 之后就改为了 InnoDB。
MyISAM 和 InnoDB 的区别有哪些?MyISAM 存储引擎:
特点:不支持事务和外键;
索引:MyISAM 是非聚簇索引,索引文件和数据文件是分离的,索引保存的是数据的地址;
检索:MyISAM 支持全文索引,查询效率上 InnoDB 要高;
锁:MyISAM 支持表级锁,每次操作对整个表加锁,一个更新语句会锁住整张表,导致其他查询和更新都会被阻塞,因此并发访问受限;
存贮方式: 存贮表的总行数,执行 select count(*) from table 时只需要读出该变量即可,速度很快;
应用场景:查询和插入操作为主,只有很少更新和删除操作,并对事务的完整性、并发性要求不高。 因为MyISAM管理非事务表。它提供高速存储和检索,以及全文搜索能力。
InnoDB 存储引擎:
特点:支持事务和外键操作,支持并发 ...