Java项目框架搭建系列(Java学习路线)-博客提纲

Java项目框架搭建系列(Java学习路线)-博客提纲

前言:

已经毕业两年,真是时间飞逝。

其实当你在一间公司工作一两年之后,公司用到的开发框架的基本使用你应该都会了。

你会根据一个现有项目A复制一下搭建出另外一个类似框架的项目B,然后在项目B上进行业务逻辑开发。

如果你更努力一点,你可能有去摸索一些配置的作用,一些问题的排查会更有经验和自己的想法。

如果你好奇心更强一点,可能会去了解一些框架的原理,各个框架之间是怎么相互协助工作的。自己能否从无到有将这些框架串联起来。

小宝鸽想写一系列这样的文章:将Java项目开发过程中的一些框架,如何一步步串联起来,并且结合源码探索其核心部分原理。以及项目从小项目演变到大项目的过程中,需要开发框架以及结构变化。以及特定业务场景设计。具体概请见下文。

大概使用的开发框架及工具:

基本工具:Eclipse、Maven、Tomcat

前端:Jquery、Vue.js、 Element

后台核心框架:Spring、SpringMVC、MyBatis

后台辅助框架:日志框架Logback、安全框架Shiro、任务调度框架Quartz

分布式框架:Dubbo、RabbitMQ、Redis…………..

除了这些框架还有一些特定业务场景,以及高扩展高可用的架构演变过程等等。
主要分为下面三个阶段博客提纲。

阶段一:集中式基本架构

一、基本工具:Eclipse、Maven、Tomcat(此篇不写博客,关于Maven猿友可自行网上安装教程及博客)

二、Spring介绍及探索:主要就是依赖注入以及AOP原理,Spring使用大多以配置为主,因此从配置入手,结合源码探索其原理。

三、SpringMVC:以实例入手,结合源码探索其主要原理。

四、Mybatis:以实例入手,结合源码以及分页插件拓展探索其用法及原理。

五、日志框架Logback:结合实例、配置、源码了解其原理,并对Logback封装,使得更加符合实际业务需求。

六、前端框架Vue.js+Element使用,Jquery默认猿友已经会用了。

七、安全框架Shiro:主要登录及权限认证实例入手,探索其用法。

八、任务调度框架Quartz:实例+配置+源码探索用法及基本原理。

九、异步线程池使用及业务场景。

十、数据库事务实例及应用场景

十一、ehcache本地缓存实例及应用场景。

之所以阶段一叫集中式基本架构,是因为这种结构适合前端代码,后台代码在一个工程,部署到一台服务器上里面。带来的问题有:性能问题、工程十分臃肿、风险很大、不好迭代。

当然性能问题可以通过集群方式,就是部署到多台机器上,然后根据用户访问的ip进行分流到不同机器响应。目前web项目大多采用这种做法。

但是一旦业务及功能模块多了起来,需要快速迭代,必然要模块拆分。因此必须采用分布式架构。
分布式架构一般根据功能进行划分模块,以电商为例:对外web端一个模块、管理web端、商品后台一个模块、订单支付后台等一个模块、用户信息后台一个模块。各个模块之间通过接口服务实时通信,异步通过MQ方式通信、缓存也需要使用分布式缓存框架。

接下来我们看下阶段二的博客提纲。

阶段二:高扩展、高性能、高可用、快速迭代分布式架构

一、分布式服务框架Dubbo:主要实例以及原理探索。

二、日志流水透传:让同一个请求经过的多个模块的日志流水保持一致。

三、分布式消息框架RabbitMQ:实例+配置+源码理解其原理。

四、任务调度框架Quartz改造:将所有模块的JOB任务集中管理,以服务调用形式触发。

五、分布式缓存框架Redis:了解其原理并规范使用,各个模块定义系统码,共享缓存内存资源,但是已系统码隔离。

六、前后端分离:对性能以及用户体验较高的web模块进行前后端分离,前端模块全部为静态资源,部署待静态资源服务器,与controller拆分开。

七、session共享:之前也提到根据功能划分模块,多个web模块对外提供请求相应,那么就会涉及session共享,一次登录即可。主要采用tomcat-redis技术实现session共享。

八、OAuth2.0认证和授权:这是扩展外部合作渠道的毕竟之路,如授权给外部商户获取你的用户信息。如微信公众号就是这种做法,很多可以使用微信登录以及QQ登录也是这种做法。

九、封装常用的业务工具类:如批量导入导出,ftp上传及下载文件、json处理等等。

十、将框架集成部分抽出形成一个基础框架:这个非常有意义,可以简化配置,对框架升级等等。

阶段三:适配大数据、高并发以及自动化要求(可能更偏向运维)

一、日志监控,自动告警:将ERROR日志通过邮件或短信方式发给对应的开发人员,可以起到很好的提醒作用。

二、自动化部署以及持续集成:模块多了,上线部署变得更加频繁的时候,就需要简化部署流程。

三、代理与负载均衡&集群:根据阶段二,一般web项目通过ip进行负载分流,后台可以使用Dubbo的负载均衡。

四、资源服务器搭建

五、数据读写分离

六、分库分表

七、秒杀设计

八、非关系型数据库使用

九、大数据工具的使用

期望:

一、写此系列文章,主要是希望比较深入探索一下框架原理,不然仅限会使用,很难有实质性的提高。

二、更希望把一些框架基础串联起来,形成一套与业务无关的基础框架。

三、之前阅读过小宝鸽的博客的猿友应该都知道,小宝鸽喜欢将工程代码分享出来,让大家可以动手边运行,边看看其原理。

四、对博客提纲有什么建议的猿友欢迎提出,一个人未必能思考周全。

五、有兴趣一起参与本系列博客书写的猿友,非常欢迎,请私信我,我一起交流探讨,也可以将源码放到git上一起维护。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/2262.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(1)


相关推荐

  • Hibernate查询方式之:HQL查询(需要使用的类是:Query)

    Hibernate查询方式之:HQL查询(需要使用的类是:Query)

  • c++实现登录注册功能(用Javaweb制作登录注册页面)

    这两天c#大作业要求做一个简单的通讯录系统,我就先做了登录和注册的功能,在网上看了一些代码,自己再做,终于做出来了。做的不是很美观,但是可以简单实现。首先用sqlserver建表。我建了一个名为user_info的表,添加username和passdword两个字段。创建登录页面,改了一些控件的名称,效果如下图:登录界面代码如下:privatevoidbtn_Login…

  • 用C语言写一个查单词的小demo「建议收藏」

    用C语言写一个查单词的小demo「建议收藏」用C语言写一个查单词的小demo#include<stdio.h>#include<string.h>#include<stdlib.h>intmain(intargc,constchar*argv[]){ //用只读的方式打开我们的单词库FILE*fp=fopen(“dict.txt”,”r”);if(NULL==fp){perror(“fopen”);return-1

  • 4G LTE Advanced_LTE百科

    4G LTE Advanced_LTE百科IS-95   IS-95是由高通公司发起的第一个基于CDMA数字蜂窝标准。IS全称为InterimStandard,即暂时标准,基于IS-95的第一个品牌是cdmaOne。IS-95也叫TIA-EIA-95。它是一个使用CDMA的2G移动通信标准,一个数据无线电多接入方案,其用来发送声音,数据和在无线电话和蜂窝站点间发信号数据(如被拨电话号码)。IS-95及其相关标准是最早商用的

  • MinGW 安装教程

    前言本文主要讲述如何安装C语言编译器——MinGW,特点是文章附有完整详细的实际安装过程截图,文字反而起说明提示作用。编写本文的原因始于我的一个观点:图片可以比文字传达更多的信息,也能让其他人更容易理解作者的意图及思想。因此,我将安装MinGW的过程和步骤,编写成了这篇以图片为主的教程,为了让看到这篇文章的任何人,都可以很容易按照图片所示正确安装MinGW。一、什么是…

  • 新版卡盟官网源码_汇想卡盟官网

    新版卡盟官网源码_汇想卡盟官网最近,很多小伙伴们都在想搭建一个卡盟的主站,但是鉴于很多人都不太懂编程,也不知道如何找到源码。所以现在小编就为大家带来搭建卡盟主站教程,而且还把源码也一起送来了,想要搭建卡盟主站的话就记得一定要下载哦!搭建卡盟主站教程介绍1,完整无误经过校验的卡盟平台源码2,基于Ecshop内核的卡盟平台,游戏点卡销售的首选平台PHP+MYSQL3,前台模板已做深层SEO优化便于搜索引擎收录寻找卡盟源码1网…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号