Springcloud微服务项目——人力资源管理(HRM)Day01 项目的搭建

释放双眼,带上耳机,听听看~!

声明:此项目是本人为了学习而记录下来的 并不适用于每个人 如果有不懂得地方可以私信或者留言 最后祝大家敲代码永无BUG!

文章目录

  • 项目背景

  • 功能模块

  • 项目技术架构

  • 技术架构

    • 技术栈
  • 前台技术
    * 后台架构

  • 后端项目微服务原型搭建

  • 搭建一个顶级父类 hrm_parent

    • 搭建springcloud微服务支持模块 hrm_support_parent
    • 搭建Eureka注册中心 hrm-eureka-1010
    • 搭建一个Config Server模块 hrm-config-server-1020
    • 搭建 Zuul GateWay模块 hrm-zuul-gateway-1030
    • 搭建一个工具模块 hrm-basic-parent

项目背景

找工作的人:
现在社会竞争压力越来愈大,很多应届毕业生毕业后没法直接胜任某类工作,或者是一些已经工作的人慢慢丧失自己学习的能力,最终导致失业无法再次就业。
招聘的单位: 虽然求职者非常多,但是很多人的能力达不到用人企业的要求,他们期望一招聘进来马上就能使用,所以需要对求职候选人进行培养筛选。
培训机构: 很多培训机构虽然有能力培训人才但是,市场能力比较差,找不到合适的学员,让他们通过培训能找到工作
正是由于以上三类场景,所以我们开发一个人力资源系统(HRM),让找工作的人,能够选择特定机构的课程学习,并参与平台发布的招聘,而且还能参与一些活动。 让招聘单位入驻进来发布岗位进行招聘,甚至委托培训机构培训合适的人才。对于培训机构可以发布课程,吸收学员来完成学习并通过收取学费获取商业价值

功能模块

Springcloud微服务项目——人力资源管理(HRM)Day01 项目的搭建

项目技术架构

技术架构

本项目采用的是前后端分离架构模式开发
Springcloud微服务项目——人力资源管理(HRM)Day01 项目的搭建

技术栈

前台技术

Node.js —— 一个基于 Chrome V8 引擎的 JavaScript 运行环境 >>>参考文章什么是 Nodejs ?

Npm —— 一款管理Node包的工具 >>>参考文章 npm 是干什么的?(非教程)

Vue.js —— 是一套用于构建用户界面的渐进式JavaScript框架 >>>参考文章 NPM是什么?

webpack —— 一款模块打包工具 >>>参考文章 什么是Webpack?怎么使用Webpack?

Vue-Cli —— Vue的脚手架 >>>参考文章 这可能是vue-cli最全的解析了

Element UI —— 一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库

后台架构

微服务架构:
按照功能拆分N多个服务,每个服务可以独立技术选型,独立开发,独立部署,独立运维.,单个服务使用基于ssm的springboot,服务间通过spring cloud协调.
Springcloud微服务项目——人力资源管理(HRM)Day01 项目的搭建
说明:
springcloud 协调多个服务
springboot 开发以一个一个微服务
Eureka 服务注册中心 可以做集群
Ribbon/Feign 负载均衡调用
Hystrix 断路器 高可用框架
zuul 网关可以做集群

不能使用Eureka做负载均衡器 调用者不能注册到Eureka 要用 Nginx
configServer:统一配置中心 可以做集群 直接注册到Eureka就行
Eureka和configServer不能做统一配置

业务服务想做集群非常简单 只需注册多个到注册中心就ok
项目采用了了分布式+集群的模式

后端项目微服务原型搭建

由于后面的项目还没写到 所以我们就先搭建我们一部分

搭建一个顶级父类 hrm_parent

首先在pom.xml中导入仲裁中心 之后就统一管理搜springboot的版本号


1
2
3
4
5
6
7
1<parent>
2    <groupId>org.springframework.boot</groupId>
3    <artifactId>spring-boot-starter-parent</artifactId>
4    <version>2.0.5.RELEASE</version>
5</parent>
6
7

还有jdk1.8版本


1
2
3
4
5
6
7
8
9
1<properties>
2    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
3    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
4    <java.version>1.8</java.version>
5    <spring-cloud.version>Finchley.SR1</spring-cloud.version>
6    <springboot.version>2.0.5.RELEASE</springboot.version>
7</properties>
8
9

但是springcloud的版本需要去管理


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
1<dependencyManagement>
2    <dependencies>
3        <dependency>
4            <groupId>org.springframework.cloud</groupId>
5            <artifactId>spring-cloud-dependencies</artifactId>
6            <version>${spring-cloud.version}</version>
7            <type>pom</type>
8            <scope>import</scope>
9        </dependency>
10        <dependency>
11            <groupId>org.springframework.boot</groupId>
12            <artifactId>spring-boot-dependencies</artifactId>
13            <version>${springboot.version}</version>
14            <type>pom</type>
15            <scope>import</scope>
16        </dependency>
17    </dependencies>
18</dependencyManagement>
19
20

搭建springcloud微服务支持模块 hrm_support_parent

<packaging>pom</packaging>
pom 项目里没有java代码,也不执行任何代码,只是为了聚合工程或传递依赖用的。

搭建Eureka注册中心 hrm-eureka-1010

导入相关依赖


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
1&lt;dependencies&gt;
2    &lt;dependency&gt;
3        &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
4        &lt;artifactId&gt;spring-boot-starter-web&lt;/artifactId&gt;
5
6    &lt;/dependency&gt;
7    &lt;dependency&gt;
8        &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
9        &lt;artifactId&gt;spring-boot-starter-test&lt;/artifactId&gt;
10        &lt;scope&gt;test&lt;/scope&gt;
11    &lt;/dependency&gt;
12    &lt;dependency&gt;
13        &lt;groupId&gt;org.springframework.cloud&lt;/groupId&gt;
14        &lt;artifactId&gt;spring-cloud-starter-netflix-eureka-server&lt;/artifactId&gt;
15    &lt;/dependency&gt;
16&lt;/dependencies&gt;
17
18&lt;!--间接继承parent 所以不需要指定执行的入口类,和repackage--&gt;
19&lt;build&gt;
20    &lt;plugins&gt;
21        &lt;plugin&gt;
22            &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
23            &lt;artifactId&gt;spring-boot-maven-plugin&lt;/artifactId&gt;
24        &lt;/plugin&gt;
25    &lt;/plugins&gt;
26&lt;/build&gt;
27
28

配置文件 application.yml
最开始我们只考虑单机模式


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1spring:
2  application:
3    name: hrm-eureka
4server:
5  port: 1010
6eureka:
7  instance:
8    hostname: localhost
9  client:
10    registerWithEureka: false
11    fetchRegistry: false
12    serviceUrl:
13      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #单机配置
14
15

启动类:


1
2
3
4
5
6
7
8
9
1@SpringBootApplication
2@EnableEurekaServer
3public class Eureka1010Application {
4    public static void main(String[] args) {
5        SpringApplication.run(Eureka1010Application.class, args);
6    }
7}
8
9

搭建一个Config Server模块 hrm-config-server-1020

导入相关依赖


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
1&lt;dependencies&gt;
2    &lt;dependency&gt;
3        &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
4        &lt;artifactId&gt;spring-boot-starter-web&lt;/artifactId&gt;
5    &lt;/dependency&gt;
6    &lt;dependency&gt;
7        &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
8        &lt;artifactId&gt;spring-boot-starter-test&lt;/artifactId&gt;
9    &lt;/dependency&gt;
10
11    &lt;!--eureka客户端--&gt;
12    &lt;dependency&gt;
13        &lt;groupId&gt;org.springframework.cloud&lt;/groupId&gt;
14        &lt;artifactId&gt;spring-cloud-starter-netflix-eureka-client&lt;/artifactId&gt;
15    &lt;/dependency&gt;
16    &lt;!--配置中心支持--&gt;
17    &lt;dependency&gt;
18        &lt;groupId&gt;org.springframework.cloud&lt;/groupId&gt;
19        &lt;artifactId&gt;spring-cloud-config-server&lt;/artifactId&gt;
20    &lt;/dependency&gt;
21&lt;/dependencies&gt;
22
23

因为配置文件比较多 所以我们可以在码云上搭建配置库
但是在码云上编写配置文件是没有提示的 编写起来就比较麻烦 这我们怎么做呢
我们可以重新搭建一个项目 专门用来编写配置文件 hrm-config
首先我们需要在码云上搭建一个仓库
Springcloud微服务项目——人力资源管理(HRM)Day01 项目的搭建
将这个项目clone到本地 然后将本地的项目的文件复制到这个文件中 并提交到码云
Springcloud微服务项目——人力资源管理(HRM)Day01 项目的搭建
Springcloud微服务项目——人力资源管理(HRM)Day01 项目的搭建
然后再在我们的idea环境中clone下来
Springcloud微服务项目——人力资源管理(HRM)Day01 项目的搭建
这样我们就能直接在idea项目中编写配置文件然后提交到码云上了 我们来测试一下
Springcloud微服务项目——人力资源管理(HRM)Day01 项目的搭建
Springcloud微服务项目——人力资源管理(HRM)Day01 项目的搭建
Springcloud微服务项目——人力资源管理(HRM)Day01 项目的搭建
这也就能提交上来了 又会有提示 两全其美
Springcloud微服务项目——人力资源管理(HRM)Day01 项目的搭建


配置文件 application.yml
Springcloud微服务项目——人力资源管理(HRM)Day01 项目的搭建

search-paths:如果不是在跟路径下 我们就需要加查找地址
这也就配置完成了 接下来我们启动项目
访问 http://localhost:1020/applicatiion-user.yml/dev
Springcloud微服务项目——人力资源管理(HRM)Day01 项目的搭建
测试成功


搭建 Zuul GateWay模块 hrm-zuul-gateway-1030

依旧是先导入相关的依赖


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1&lt;dependencies&gt;
2    &lt;!-- springBoot支持 --&gt;
3    &lt;dependency&gt;
4        &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
5        &lt;artifactId&gt;spring-boot-starter-web&lt;/artifactId&gt;
6    &lt;/dependency&gt;
7    &lt;!-- spring boot 测试 --&gt;
8    &lt;dependency&gt;
9        &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
10        &lt;artifactId&gt;spring-boot-starter-test&lt;/artifactId&gt;
11    &lt;/dependency&gt;
12    &lt;!-- Eureka 客户端依赖 --&gt;
13    &lt;dependency&gt;
14        &lt;groupId&gt;org.springframework.cloud&lt;/groupId&gt;
15        &lt;artifactId&gt;spring-cloud-starter-netflix-eureka-client&lt;/artifactId&gt;
16    &lt;/dependency&gt;
17
18    &lt;!-- zuul支持--&gt;
19    &lt;dependency&gt;
20        &lt;groupId&gt;org.springframework.cloud&lt;/groupId&gt;
21        &lt;artifactId&gt;spring-cloud-starter-netflix-zuul&lt;/artifactId&gt;
22    &lt;/dependency&gt;
23    &lt;!--配置中心支持--&gt;
24    &lt;dependency&gt;
25        &lt;groupId&gt;org.springframework.cloud&lt;/groupId&gt;
26        &lt;artifactId&gt;spring-cloud-starter-config&lt;/artifactId&gt;
27    &lt;/dependency&gt;
28&lt;/dependencies&gt;
29
30

配置文件:首先是局部配置
application.yml
Springcloud微服务项目——人力资源管理(HRM)Day01 项目的搭建
然后是全局的配置 bootstrap.yml


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
1spring:
2  profiles:
3    active: dev
4  cloud:
5    config:
6      name: application-zuul #码云上面配置的名称
7      profile: ${spring.profiles.active} #环境 java -jar -D xxx jar
8      label: master #分支
9      discovery: #configserver集群
10        enabled: true #从eureka上面找配置服务
11        service-id: hrm-config-server #指定服务名
12      #uri: http://127.0.0.1:1299 #配置服务器 单机配置
13eureka: #eureka不能放到远程配置中
14  client:
15    service-url:
16      defaultZone: http://localhost:1010/eureka  #告诉服务提供者要把服务注册到哪儿 #单机环境
17  instance:
18    prefer-ip-address: true #显示客户端真实ip
19
20

说明:
我们这里访问的配置文件就会在
discovery配置中去寻找一个服务名叫
hrm-config-server的服务 然后通过这个服务去查找 码云中master分支下路径为
src/main/resources中名字为
①和②的名字拼接起来的文件
application-zuul-dev.yml

Springcloud微服务项目——人力资源管理(HRM)Day01 项目的搭建
Springcloud微服务项目——人力资源管理(HRM)Day01 项目的搭建

Springcloud微服务项目——人力资源管理(HRM)Day01 项目的搭建
启动类:


1
2
3
4
5
6
7
8
9
1@SpringBootApplication
2@EnableZuulProxy
3public class Zuul1030Application {
4    public static void main(String[] args) {
5        SpringApplication.run(Zuul1030Application.class,args);
6    }
7}
8
9

然后启动服务 访问localhost:1010就会得到这么一个页面
Springcloud微服务项目——人力资源管理(HRM)Day01 项目的搭建
至此 zuul网关 集成完毕

今天所搭建的架构的结构图
Springcloud微服务项目——人力资源管理(HRM)Day01 项目的搭建

搭建一个工具模块 hrm-basic-parent

然后再在里面创建一个子模块
hrm-basic-parent
位置:
Springcloud微服务项目——人力资源管理(HRM)Day01 项目的搭建
因为这个只是做一个工具模块 不会当做服务 所以没有端口号
将query和util的文件放在这里面
Springcloud微服务项目——人力资源管理(HRM)Day01 项目的搭建
OK!!!

今天第一天就到这里 以后我们会陆陆续续的介绍其他相关的东西 最后谢谢大家的观看

给TA打赏
共{{data.count}}人
人已打赏
安全网络

CDN安全市场到2022年价值76.3亿美元

2018-2-1 18:02:50

安全经验

高并发 数据库自增主键 解决

2021-11-28 16:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索