写一下今年做的一个微服务架构,作为分享,如果你想使用但又有不明白的地方可以私信或评论,我看到了会及时回复。如果你又更好的想法可以改进我不足之处的,也非常欢迎在评论中提出来。
:: Spring Boot................... :: [ v2.6.13]
:: Dubbo......................... :: [ v2.7.13]
:: spring-cloud-starter-alibaba.. :: [ v2021.0.5.0]
:: nacos-client.................. :: [ v2.2.0]
搭建微服务架构最烦的就是版本依赖问题,查了官方提供的版本对应,我这里提供的版本已经实测可用,可以放心使用。
部分基础功能已经实现,不需要重复开发。功能不多,但足够使用,省去你开发系统管理的时间岂不是很美哉。
这里的代码生成都是按照规范生成的,基本上建一个表,这里生成已经完成至少50%开发量。介绍一下,这里的代码生成我使用的是若依的生成组件,不过若依的生成模板被我抛弃了,我认为若依的模板生成的代码不够规范,所以自己写了模板,并经过我多次调试。可以直接使用。
按照微服务划分原则,基础版划分了一个总的服务端,和一个系统管理端。
第一个JDK1.8版本,如果安装jdk自己百度,一大堆。
第二个安装redis
第三个你都用微服务了,maven私服不可少,装一个nexus,百度一大堆。
第四个安装nacos,nacos版本2.2.0,怎么安装也是自己百度,也是一大堆教程。
我主要说明一下我的系统管理端(hdx-system)是怎么搭建的,因为后面加上来的微服务都要像这样搭建,基本上会这一步就够了。
1)在idea中新建project,注意group和artiface,这里配置好,免得后面改又麻烦。这里建好后把src文件夹和其他不需要的都删了,只留一个pom.xml文件。为什么?
我们要用这个来做maven的依赖jar包版本的统一管理
最外层pom.xml内容
4.0.0
pom
org.springframework.boot
spring-boot-starter-parent
2.6.13
com.hdx
hdx-system
1.0.0
hdx-system
hdx-system
1.8
hdx-system-common
hdx-system-dao
hdx-system-biz
hdx-system-client
org.springframework.boot
spring-boot-starter
2.6.13
org.springframework.boot
spring-boot-starter-test
2.6.13
test
org.apache.dubbo
dubbo-spring-boot-starter
2.7.13
org.apache.dubbo
dubbo-registry-nacos
2.7.13
org.springframework.cloud
spring-cloud-starter-bootstrap
3.0.4
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery
2021.0.5.0
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-config
2021.0.5.0
com.alibaba.nacos
nacos-client
2.2.0
com.alibaba.spring
spring-context-support
1.0.11
org.mybatis.spring.boot
mybatis-spring-boot-starter
1.3.5
org.springframework
spring-tx
5.3.16
org.mybatis
mybatis
3.5.9
org.mybatis
mybatis-spring
2.0.7
com.baomidou
mybatis-plus-boot-starter
3.4.2
org.springframework.boot
spring-boot-starter-data-redis
2.6.4
redis.clients
jedis
2.9.0
mysql
mysql-connector-java
5.1.21
org.apache.commons
commons-lang3
3.12.0
commons-collections
commons-collections
3.2.2
junit
junit
4.12
test
com.alibaba
fastjson
1.2.83
com.google.guava
guava
30.0-jre
com.google.code.gson
gson
2.8.9
org.slf4j
slf4j-api
1.7.36
org.apache.httpcomponents
httpclient
4.5.14
cn.hutool
hutool-all
5.7.22
eu.bitwalker
UserAgentUtils
1.21
org.springframework.boot
spring-boot-starter-aop
2.6.4
log4j
log4j
1.2.17
com.github.oshi
oshi-core
6.4.0
org.apache.maven.plugins
maven-compiler-plugin
3.1
1.8
1.8
UTF-8
nexus
Nexus public
http://192.168.0.23:8081/nexus/repository/maven-public/
true
true
maven-releases
Nexus Sites
http://192.168.0.23:8081/nexus/repository/maven-releases/
maven-snapshots
Nexus Snapshot
http://192.168.0.23:8081/nexus/repository/maven-snapshots/
我的工程结构,总的长这样
biz:启动类和代码实现类在这个模块,对外提供RPC调用接口的实现类都在这里,相当于这里是做业务实现的
client:这里是向dubbo中提供服务的,本着最小暴漏原则,这里只有一个接口,接口的实现在biz中
common:这里全是Java实体对象模型类,统一管理,遵循规范。
dao:这里是数据层,只存3个东西,调用数据库的DAO接口,和数据库表一一对应的实体DO类,以及mybatis的xml文件
我已在gitee码云上开源,可以通过git命令拉取项目;如果你需要拉取源码,有三个工程需要拉取。
1、hdx-admin
[email protected]:hdxsoft/hdx-admin.git
https://gitee.com/hdxsoft/hdx-admin.git
2、hdx-system
[email protected]:hdxsoft/hdx-system.git
https://gitee.com/hdxsoft/hdx-system.git
3、ht-public(这是一个不可启动的jar包工程,里面封装了公共的工具类,因为是微服务的,有些公用的工具类不可能每个服务都要写一个,放在这里全工程通用,在pom中引一下jar包即可,需要将此工程打成jar包,推送到自己的maven库,有maven私服的推到私服更好。mvn clean install deploy)
[email protected]:hdxsoft/ht-public.git
https://gitee.com/hdxsoft/ht-public.git
获取源码后要启动工程需要做什么?
1、安装nacos,将hdx-admin下sql文件夹下的nacos.sql导入到你自己本地nacos访问的数据库中,然后再nacos上改掉数据库连接信息和redis连接信息,改成自己的。
2、将hdx-admin下sql文件夹下的demo.sql导入到自己本地的数据库中,注意建立的数据的编码。
3、最好安装一个nexus私服。先将ht-publi打包推到仓库。
命令:mvn clean install deploy
再将system打包推送
再建admin打包推送
完成以上步骤就可以启动了。