原文日期:2017-11-18
从2015年底到现在,网站已经运行快两年了,由于工作原因,只能利用业余时间对网站进行维护升级,致使总是断断续续的。今年趁着国庆几天长假,决定对网站再次进行一次架构升级,将原有的项目转变成springboot项目。计划在11月底、12月初把它搞定。两年了,网站经历了两个重大调整变更。第一次是将php项目改造成java gradle项目,第二次是将java gradle项目改造成springboot项目。
为啥第一次选择了php语言?
2015年12月底,阿里云借助双12对服务器资源进行各种特价。当时看到一个弹性web服务器,没怎么多想就买下来了。然而令人心塞的是,该资源只支持php语言。而且不支持ssh连接访问,只开放了ftp方式连接方式。说白了开发人员只需将php文件上传到指定的文件服务器上,项目将自动运行。然而我是地地道道的java拥护者,完全不懂php这货,本想退货的,但被阿里人员说不能取消订单。
纠结了一段时间,决定自学php,将网站搭建起来。大概看了七八个晚上的时间php视频,算是初步入门,于是开始php网站建设。期间也有想过使用开源的php框架直接搭建,但由于功能比较简单,而且学习这些框架也麻烦。
第一次搭建网站主要涉及以下几点。
-
php开发语言学习,水土不服。
-
域名选择和购买。
-
DNS解析。
虽说第一次搭建网站不尽如人意,但最终坚持把它搞定了,依旧大快人心,如下是第一版网站的大致架构图,比较简陋。
第一次改造:php->java gradle project
由于弹性web服务器购买期限是一年,所以到2016年底,因服务器到期,面临三个选择:关闭网站,不再维护;续费弹性web服务器,继续维护;重新购买ECS服务器,使用java语言重构网站,继续维护。我的选择是重新购买ECS服务器,虽然使用php也把网站搭建起来了,但由于自己擅长的是java,而且弹性web服务器有一个致命的弱点,就是除了开放ftp方式让你管理php文件外,你没法做更多的事,然而我需要的是一个完整的服务器去探险。于是直接购买了一个三年期限的ECS服务器。
第一次改造主要涉及以下几个点。
-
开发语言php替换成java。
-
使用主流java开发框架,spring、springmvc、mybatis。ps:由于mybatis没有分页、排序功能,故而自己实现了一个基于mybatis的插件去支持分页、排序功能。
-
自动化构建部署,gradle,jenkins。ps:因为没有太多时间去处理这些繁琐的事,虽然有时很享受那种敲击命令行装逼的感觉。或者说是我太懒了,对于重复的事情,我喜欢让它变成自动化。
-
应用docker容器化。ps:docker新潮,还是得追逐一下,然而事实是它带来的好处和坑几乎各占一半(LB、APP、DB都做成容器化)。
-
多点部署。ps:领导常说,我们这里没有单节点的东西。然而资金有限,我这里只做了部分多点部署(LB和DB都是单点,应用多点)。
如下是第一次改造后网站大致的架构图。
第二次改造:java gradle project->spring boot
第二次改造主要是引进springboot技术,将原先xml繁琐的配置移除,使用springboot默认配置化,以方便后面将网站拆成多个子项目,不需要每个项目再重复进行一遍繁琐的配置。ps:理由有点牵强,自己都没法信服,说白了其实就想搞事情。
第二次改造主要涉及以下几点。
-
增加springboot支持,将项目改造成springboot项目。
-
增加统一认证模块UAP,将原来的认证模块单独拆分出一个统一认证服务来运行。
-
增加文件服务器,用来存储文件、图片。
-
改造开源软件ueditor不支持springmvc接口。
如下是第二次改造后网站大致的架构图。