MVC 框架

MVC 模式是软件工程中的一种软件架构模式,可以把软件系统分为三个基本部分:

模型(Model),编写程序应有的功能(实现算法等等)、进行数据管理和数据库设计,。
视图(View),界面设计人员进行图形界面设计。
控制器(Controller),负责转发请求,对请求进行处理。
比较知名的 MVC 框架有 SpringMVC,是一种基于请求驱动类型的轻量级 Web 框架,目的是帮助我们后端程序员简化开发。

我个人喜欢的还有一个更轻量级的 JFinal,国人开发的,基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful,小型项目我都会选择使用 JFinal,很方便。
-----------------------------

搜索框架

目前用得比较多的开源软件有 Solr 和 Elasticsearch,主要用于全文检索和各种数据维度的查询,后者逐渐成为搜索引擎的主流开源方案。

Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。作为 Elastic Stack 的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外的情况。

消息队列

目前使用得比较普遍的消息队列有,基于日志设计的 Kafka,重事务的 RabbitMQ。对消息丢失不是特别敏感的话,选择 Kafka 可以获得更高的性能。

Kafka 由 Scala 和 Java 编写,目的是为处理实时数据提供一个统一、高吞吐、低延迟的平台。其持久化层本质上是一个“按照分布式事务日志架构的大规模发布/订阅消息队列”,使得它作为企业级基础设施来处理流式数据非常有价值。

RabbitMQ 的主要特点在于健壮性好、易于使用、高性能、高并发、集群易扩展,以及强大的开源社区支持。

文件存储

文件存储需要满足的特性有:可靠性、容灾性、稳定性,能够保证文件不轻易丢失,还能在出现事故的时候提供回滚方案。Hadoop 的 HDFS 是目前最常用的分布式文件存储方案。

除此之外,还有一个开源的轻量级分布式文件系统——FastDFS,可以解决大数据量存储和负载均衡等问题。特别适合以中小文件(建议范围:4KB < file_size <500MB)为载体的在线服务,如相册网站、视频网站等等。

单点登录

简称为 SSO,目前很多网站都实现了单点登录,当用户登录时,就可以获取所有系统的访问权限,不用对每个单一系统都逐一登录。

推荐一个还不错的分布式单点登录框架——xxl-sso,开源的。

统一配置中心

常见的有 properties、YAML 文件,就是可以不修改代码只修改配置文件就能够让整个项目区分开发、测试、生产环境。

YAML 语言(发音 /ˈjæməl/ )的设计目标,就是方便人类读写。它实质上是一种通用的数据串行化格式。

对于较复杂的数据结构来说,YAML 远远优于 properties,可以使用冒号加缩进的方式代表层级(属性)关系,使用短横杠(-)代表数组元素。

服务治理框架

随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。
 

Dubbo 是一款高性能、轻量级的开源 Java RPC 框架,提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。

统一调度中心

定时调度是一个非常普遍的场景,比如说定时去备份数据库,刷新订单状态等。可以依赖 Linux 的 Cron 机制,以及 Java 的 Quartz 框架。

工具型软件 Cron 是一款类 Unix 操作系统下的基于时间的任务管理系统。用户可以通过 Cron 在固定时间、日期、间隔下,运行定期任务(可以是命令和脚本)。我最经常用的,就是通过 Cron 来备份 MySql 数据库。

Quartz 可以用来创建或简单或复杂的调度时间表,执行 Java 下任意数量的作业。

日志服务

日志是生产环境不可缺少的产物,能够为线上服务提供快速记录、定位、排查问题的来源。常用的日志框架有 Log4j 和 LogBack。

Log4j 通常和 SLF4J 配合起来一起使用,SLF4J 是简单日记门面(simple logging Facade for Java)的意思,为各种 log API 提供了一个简单的统一接口,从而使得 Java 后端程序员能够在部署的时候配置自己希望的日志实现。

LogBack 和 Log4j 是同一个大神写的(作者对 Log4j 的性能不满意),Spring Boot 默认使用的日志框架是LogBack。

 

总结了很多有关于java面试的资料,希望能够帮助正在学习java的小伙伴。由于资料过多不便发表文章,创作不易,望小伙伴们能够给我一些动力继续创建更好的java类学习资料文章,
请多多支持和关注小作,别忘了点赞+评论+转发。右上角私信我回复【03】即可领取免费学习资料谢谢啦!
 

 

更多推荐

Java 后端程序员必须要懂的几种框架分享