# lagou_2_2_sss **Repository Path**: java-quickstart/lagou_2_2_sss ## Basic Information - **Project Name**: lagou_2_2_sss - **Description**: 阶段二模块二 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-05-14 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 李志勇的作业 ### 作业一 1)基于 SpringBoot 整合 SSS 框架(即整合第一阶段模块三作业第二题内容,含有登录拦截验证) 2)在 1 的基础上开发 SpringSession 进行 Session 一致性控制 3)将工程打成 war 包 4)将 war 包部署到分布式集群架构中,要求一个 Nginx 节点,两个 Tomcat 节点 —> Nginx(轮询策略) —> Tomcat1—> Tomcat2 5)完成测试 注意:作业提交时提交可运行的工程代码(源代码和 war 包)以及 sql 脚本,nginx 配置及 tomcat 配置,redis 配置统一修改为: redis.host=localhost redis.port=6379 redis.connectionTimeout=5000 redis.password= redis.database=0 #### 作业思路 1. 整合 Spring Boot + Spring MVC 引入 web、jsp 依赖,引入 jsp 解析器 org.apache.tomcat.embed:tomcat-embed-jasper 创建 intercepter、controller,创建 main/webapp/WEB-INF/jsp 目录并创建 jsp 文件,配置 jsp 路径 2. 整合 Spring Data JPA 添加 jpa、mysql 依赖,配置数据源,创建 repository 3. 整合 Spring Session 添加 session、redis 依赖,启用 session,设置 jackson 方式序列化 4. 工程打成 war 包 工程启动类继承 SpringBootServletInitializer,重写 configure 方法 5. 将 war 包部署到单个 tomcat 实例测试 6. 将 war 包部署到分布式集群环境测试 #### 流程图 ![nginx请求转发](nginx.png) #### 代码 [lagou_2_2_sss](https://gitee.com/amaodou/lagou_2_2_sss) #### 演示 [视频演示](视频演示.mp4) ### 作业二 请描述你对分布式调度的理解(结合 Elastic-Job-lite 图文并茂描述) 分布式调度有两层含义 1. 运行在分布式集群环境中的调度任务(同一个调度任务在多个节点上部署,但同一时刻只能有一个节点上的任务执行) 2. 任务分片执行(把大的任务拆分成多个小任务,小任务分布到多个部署节点同时执行,大大提升效率) 分布式调度框架 elastic-job elastic-job 是基于 Quartz 开发,使用 zookeeper 进行任务协调。 1. 基于 Quartz,支持 Quartz cron 表达式执⾏定时任务 2. 支持弹性扩容缩容,当集群中增加或减少节点时,通过 zk 重新协调分配任务 3. 失效转移 某实例在任务执⾏失败后,会被转移到其他实例执⾏ 4. 支持任务分片,同一分片只能有一个节点执行,多个分片可同时执行 ![elastic_job任务调度](elastic_job.png) 分布式调度任务开发思路 1. 配置注册中心,实例注册到注册中心 2. 配置任务详情(启动时间、执行逻辑、分片信息) 3. 创建调度器,调度任务