已经工做4年,真是时间飞逝。前端
其实当你在一间公司工做一两年以后,公司用到的开发框架的基本使用你应该都会了。java
你会根据一个现有项目A复制一下搭建出另一个相似框架的项目B,而后在项目B上进行业务逻辑开发。web
若是你更努力一点,你可能有去摸索一些配置的做用,一些问题的排查会更有经验和本身的想法。redis
若是你好奇心更强一点,可能会去了解一些框架的原理,各个框架之间是怎么相互协助工做的。本身可否从无到有将这些框架串联起来。数据库
想写一系列这样的文章:将Java项目开发过程当中的一些框架,如何一步步串联起来,而且结合源码探索其核心部分原理。以及项目从小项目演变到大项目的过程当中,须要开发框架以及结构变化。以及特定业务场景设计。具体概请见下文。json
大概使用的开发框架及工具:后端
基本工具:Eclipse、Maven、Tomcat缓存
前端:Jquery、Vue.js、 Elementtomcat
后台核心框架:Spring、SpringMVC、MyBatis安全
后台辅助框架:日志框架Logback、安全框架Shiro、任务调度框架Quartz
分布式框架:Dubbo、RabbitMQ、Redis…………..
除了这些框架还有一些特定业务场景,以及高扩展高可用的架构演变过程等等。
主要分为下面三个阶段博客提纲。
1、基本工具:Eclipse、Maven、Tomcat(此篇不写博客,关于Maven猿友可自行网上安装教程及博客)
2、Spring介绍及探索:主要就是依赖注入以及AOP原理,Spring使用大多以配置为主,所以从配置入手,结合源码探索其原理。
3、SpringMVC:以实例入手,结合源码探索其主要原理。
4、Mybatis:以实例入手,结合源码以及分页插件拓展探索其用法及原理。
5、日志框架Logback:结合实例、配置、源码了解其原理,并对Logback封装,使得更加符合实际业务需求。
6、前端框架Vue.js+Element使用,Jquery默认猿友已经会用了。
7、安全框架Shiro:主要登陆及权限认证明例入手,探索其用法。
8、任务调度框架Quartz:实例+配置+源码探索用法及基本原理。
9、异步线程池使用及业务场景。
10、数据库事务实例及应用场景
11、ehcache本地缓存实例及应用场景。
之因此阶段一叫集中式基本架构,是由于这种结构适合前端代码,后台代码在一个工程,部署到一台服务器上里面。带来的问题有:性能问题、工程十分臃肿、风险很大、很差迭代。
固然性能问题能够经过集群方式,就是部署到多台机器上,而后根据用户访问的ip进行分流到不一样机器响应。目前web项目大多采用这种作法。
可是一旦业务及功能模块多了起来,须要快速迭代,必然要模块拆分。所以必须采用分布式架构。
分布式架构通常根据功能进行划分模块,以电商为例:对外web端一个模块、管理web端、商品后台一个模块、订单支付后台等一个模块、用户信息后台一个模块。各个模块之间经过接口服务实时通讯,异步经过MQ方式通讯、缓存也须要使用分布式缓存框架。
接下来咱们看下阶段二的博客提纲。
1、分布式服务框架Dubbo:主要实例以及原理探索。
2、日志流水透传:让同一个请求通过的多个模块的日志流水保持一致。
3、分布式消息框架RabbitMQ:实例+配置+源码理解其原理。
4、任务调度框架Quartz改造:将全部模块的JOB任务集中管理,以服务调用形式触发。
5、分布式缓存框架Redis:了解其原理并规范使用,各个模块定义系统码,共享缓存内存资源,可是已系统码隔离。
6、先后端分离:对性能以及用户体验较高的web模块进行先后端分离,前端模块所有为静态资源,部署待静态资源服务器,与controller拆分开。
7、session共享:以前也提到根据功能划分模块,多个web模块对外提供请求相应,那么就会涉及session共享,一次登陆便可。主要采用tomcat-redis技术实现session共享。
8、OAuth2.0认证和受权:这是扩展外部合做渠道的毕竟之路,如受权给外部商户获取你的用户信息。如微信公众号就是这种作法,不少可使用微信登陆以及QQ登陆也是这种作法。
9、封装经常使用的业务工具类:如批量导入导出,ftp上传及下载文件、json处理等等。
10、将框架集成部分抽出造成一个基础框架:这个很是有意义,能够简化配置,对框架升级等等。
1、日志监控,自动告警:将ERROR日志经过邮件或短信方式发给对应的开发人员,能够起到很好的提醒做用。
2、自动化部署以及持续集成:模块多了,上线部署变得更加频繁的时候,就须要简化部署流程。
3、代理与负载均衡&集群:根据阶段二,通常web项目经过ip进行负载分流,后台可使用Dubbo的负载均衡。
4、资源服务器搭建
5、数据读写分离
6、分库分表
7、秒杀设计
8、非关系型数据库使用
9、大数据工具的使用
我有一个微信公众号,常常会分享一些Java技术相关的干货;若是你喜欢个人分享,能够用微信搜索“Java团长”或者“javatuanzhang”关注。