分布式集群架构作业
作业一:
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. 基于SpringBoot整合SSS框架
2. 开发SpringSession进行Session一致性控制
3. 将工程打成war包,虽然报红,但是不影响使用
4. 先配置一个tomcat,解压缩,修改root下的index.jsp页面的展示“HOME-8080”,启动startup,浏览器访问,成功展示tomcat登录页面
5. 复制已成功的tomcat,解压缩,修改root下的index.jsp页面的展示“HOME-8081”,修改conf——server.xml中的三处端口号(在原有的基础上+1):启动startup,浏览器访问,成功展示tomcat登录页面
6. 配置nginx
7. 启动nginx,访问http://localhost/
刷新
此时已初步达到nginx的负载均衡效果
8. 将项目打包成war包,并放在webapps下(系统启动时,字段自动解压),启动后如下:
效果展示:
1. 登录页面负载均衡
刷新
2. 登录进去,列表展示
刷新
3. 业务处理——新增
4. 业务处理——刷新——修改绿萝的地址为佛山
5. 业务处理——删除xiaoliu
刷新
作业二:
请描述你对分布式调度的理解(结合Elastic-Job-lite图文并茂描述)
1. 什么是分布式调度
在分布式集群环境下的,对同一个定时任务拆分的小任务,多服务器的不冲突执行。
2. 分布式调度怎么实现
以Elastic-Job-Lite为例,它定位为轻量级无中心化解决方案,使用Jar包的形式+Zookeeper软件提供分布式任务的协调服务。
1) 如何理解轻量级
- All in jar,必要依赖仅仅zookeeper
- 并非独立部署的中间件,就是jar程序
2) 如何理解去中⼼化
- 执行节点对等(程序和jar一样,唯一不一样的可能是分片)
- 定时调度自触发(没有中心调度节点分配)
- 服务自发现(过注册中心的服务发现)
- 主节点非固定
3) 任务切片
任务分片就是将一个定时任务分成多个小任务,每个小任务可以并发执行,具体的分片策略也可以*制定,分⽚和任务本身是通过⼀个注册中⼼协调的。
4) 弹性扩容
- 新增加⼀个运行实例,如job3,它会自动注册到注册中心,注册中心发现新的服务上线,注册中心会通知ElasticJob 进⾏重新分片
- 如果所有的节点挂掉,只剩下⼀个节点,所有分片都会指向剩下的⼀个节点,这也是ElasticJob的高可用