一.项目功能架构
1.项目背景
找工作的人:
现在社会竞争压力越来愈大,很多应届毕业生毕业后没法直接胜任某类工作,或者是一些已经工作的人慢慢丧失自己学习的能力,最终导致失业无法再次就业。
招聘的单位:
虽然求职者非常多,但是很多人的能力达不到用人企业的要求,他们期望一招聘进来马上就能使用,所以需要对求职候选人进行培养筛选。
培训机构: 很多培训机构虽然有能力培训人才但是,市场能力比较差,找不到合适的学员,让他们通过培能找到工作
正是由于以上三类场景,所以我们开发一个源码人力资源系统(HRM),让找工作的人,能够选择特定机构的课程学习,并参与平台发布的招聘,而且还能参与一些活动。 让招聘单位入驻进来发布岗位进行招聘,甚至委托培训机构培训合适的人才。对于培训机构可以发布课程,吸收学员来完成学习并通过收取学费获取商业价值。
入驻类型项目都可以。
2.功能模块
3.项目原型
后台: elementui
前台: div+css
二.项目技术架构
前台技术
Node.js
Npm
Vue.js
WebPack
Vue Cli
Element UI
后台架构
微服务架构:按照功能拆分N多个服务,每个服务可以独立技术选型,独立开发,独立部署,独立运维.,单个服务使用基于ssm的springboot,服务间通过spring cloud协调.
开发步骤-人员组成
项目是基于前后端分离的架构进行开发,前后端分离架构总体上包括前端和服务端,通常是多人协作并行开发,开 发步骤如下:
1、需求分析(产品经理)
梳理用户的需求,分析业务流程
2、项目经理组建团队开发 PM,SE,TM=PM+SE
项目启动会
开发人员培训(SE)
项目原型搭建(SE)
3、开发(开发工程师)
3.1 接口定义
根据需求分析定义接口
3.2 服务端和前端并行开发
依据接口进行服务端接口开发。 postman测试
前端开发用户操作界面,并请求服务端接口完成业务处理。 EasyMock模拟数据
3.3 前后端集成测试
最终前端调用服务端接口完成业务。
4 测试 测试人员
5、上线 运维人员
6、运维-留一两个人
7、开发其他项目
项目人员组成: 半年
产品经理:1
项目经理:1
架构师:1
UI设计1
前端:2 后台4
测试:2 最初测试并发量50W
运维:1
三.后端项目微服务原型搭建-架构师
1. Maven模块化管理
hrm_parent:顶级父类
hrm_support_parent springcloud微服务支持模块
hrm_eureka
hrm_config_server
hrm_zuul
hrm_basic_parent 基础模块
hrm_basic_util 工具
…
hrm_management_parent 系统管理中心
hrm_management_common 公共代码
hrm_management_client 如果内部有调用
hrm_management_service 系统管理中心服务
hrm_course_parent 课程中心
hrm_course_common 公共代码
hrm_course_client 如果内部有调用
hrm_course_service 课程中心服务
hrm_user_parent 用户中心
hrm_user_common 公共代码
hrm_user_cli## 标题ent 如果内部有调用
hrm_user_service 用户中心服务
…
模块名 端口
hrm_eureka-server 1010
hrm_config_server 1020
hrm_zuul 1030
management_parent(服务) 2010
… 20…
hrm_主站 6010
… 60…
2. Springcloud
五大神兽:Eureka,Ribbon/Feign,Hystrix,Zuul,Spring config sever
3. 环境搭建
顶级父工程 hrm_parent
<!--springboot仲裁中心-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.5.RELEASE</version>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Finchley.SR1</spring-cloud.version>
</properties>
<!-- 管理springcloud的版本-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
4. Eureka注册中心
pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<!-- 间接继承parent不需要指定执行的入口类,和repackage-->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
配置文件
不考虑集群
spring:
application:
name: hrm-eureka
server:
port: 1010
eureka:
instance:
hostname: localhost
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #单机配置
** 入口类**
package org.yangjian;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
@SpringBootApplication
@EnableEurekaClient
public class Eureka1010Application {
public static void main(String[] args) {
SpringApplication.run(Eureka1010Application.class,args);
}
}