传统JAVA项目如何实现信创替代与部署

136 阅读3分钟

1、背景

在如今当下的国际环境以及政策的加持下,java组件中,部分组件替换成信创内容显得尤为重要。由此带来的技术选型也显得尤其的重要,本篇文章将会带来信创相关的原型以及替代部署方案。

2、技术选型

由于其他的信创数据库都是只有x86架构的,而oceanbase有arm和x86架构,为了适应不同架构,故将mysql数据库替换成OceanBase。而为了系统切换与部署方便,特地选择与Centos相关的系统,而阿里的龙蜥(Anolis)系统刚好可以解决,故把Centos替换成龙蜥系统,为了后续部署方便。nginx在java架构中是有其他的替代品的,比如Tengine,但是由于公司项目中会有.net部分项目,考虑到兼容性问题,特地选择jexus,作为nginx的替代。

3、安装与部署

1)龙蜥安装

1.下载镜像,前往官网下载镜像

Index of /anolis/8.10/isos/GA/x86_64/

2.打开VMware, 选择 “创建新的虚拟机” 或 点击左上角 “文件”->“建新虚拟机”。

3.进入 “新建虚拟机向导”,选择 “自定义”,点击下一步。

4.按图所示进行安装。

5.打开虚拟机 

6.等待启动

进入后选择

7.等待进入安装界面。

8.点击安装目的地,选择自动。

9.点击网络和主机名,打开以太网,点击完成。

10.设置root密码,根据自己需求是否创建用户。

11.完成后选择开始安装,等待安装。

12.安装完成 

(1)进入系统

点击 “重启系统”

同意许可后,点击结束配置进入系统。

根据自己需求配置,安装成功。

(2)查看系统信息

(3) 远程连接

输入ifconfig查看虚拟机IP

2)OceanBase安装

1、建议使用 All in One 安装包,执行以下命令下载并安装 OceanBase All in One,该命令将在线下载并安装最新版本的 OceanBase All in One 包。
bash -c "$(curl -s https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/download-center/opensource/oceanbase-all-in-one/installer.sh)"
source ~/.oceanbase-all-in-one/bin/env.sh
2、obd 提供以下两种快速部署命令:
  • 最小规格部署

将以 OceanBase 数据库最小规格部署并启动单节点的 OceanBase 数据库及相关组件。

obd demo
  • 最大规格部署

obd 自 V3.4.0 起提供最大规格部署命令,执行后将以 OceanBase 数据库最大规格部署并启动单节点的 OceanBase 数据库及相关组件。

obd pref

3)java后端项目相关修改

本次替代,使用了若依框架,并将原若依框架的mybatis替换成mybatis-plus

1、将原来的mysql jar包删掉,并替换成OceanBase的jar包
<dependency>
  <groupId>com.oceanbase</groupId>
  <artifactId>oceanbase-client</artifactId>
  <version>2.4.14</version>
</dependency>
2、修改原项目的数据库配置
url: jdbc:oceanbase://ip:端口/scheme名
username: 用户名@租户名#集群名 或者 集群名:租户名:用户名
password: 密码
3、升级mybatis-plus版本

如果项目mybatis-plus版本低于3.5.2.*,需要升级,我这里升级为3.5.3.1

因为低版本的mybatis-plus不兼容oceanbase,即低版本的Dbtype.calss中缺少oceanbase枚举值,即下图标红的内容:

4、修改MybatisPlusConfig类

高版本Mybatis-plus的分页依赖于PaginationInnerInterceptor插件 ,低版本是PaginationInterceptor类。一定要在MybatisPlusConfig中使用,不然分页会失效,如下代码所示:

public PaginationInnerInterceptor paginationInnerInterceptor() {
    PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();
    // 设置数据库类型为mysql
    paginationInnerInterceptor.setDbType(DbType.MYSQL);
    // 设置最大单页限制数量,默认 500 条,-1 不受限制
    paginationInnerInterceptor.setMaxLimit(-1L);
    return paginationInnerInterceptor;
}

4)jexus安装与部署

1、在线安装:
curl https://jexus.org/release/x64/install.sh | sudo sh
2、启动jexus
1)启动Jexus程序并同时启动所有的网站:
sudo /usr/jexus/jws start
2)停止Jexus程序同时停止所有的网站:
sudo /usr/jexus/stop
3)重启jexus程序和所有的网站程序
sudo /usr/jexus/jws restart
3、jexus配置

在/usr/local/jexus/siteconf目录下,创建vue.conf,然后启动jexus,就可以正常映射前端vue或者react创建的项目了

#指定端口信息
port=80
#前端vue文件路径
root=/  /home/deploy/dist
#后端接口路径与url
Reproxy=/prod-api/  http://192.168.18.25:8080/