一.应用管理中心
采用微服务架构以后,把原先单一的节点拆解成了多个微服务节点。公司虽然有一键发布平台,但是是针对每一个节点采取单独的发布,启动,停止操作,没有全局化统一管理功能。上线运维的工作量就变的非常庞大,因此我们开发了基于springcloud的应用管理中心来方便我们的工作。
1.1 实现机制
每个微服务启动时,将自身的进程ID,当前路径,JDK路径,jar名称,系统用户,IP地址,端口号注册到zookeeper;
应用管理中心从zookeeper中查询到所有的微服务进程信息;
获取信息后构造启动命令,停止命令;
在数据库保存系统的用户名和密码;
在部署时指定git地址,分支,IP等调用jenkins,编译生成最新jar包拷贝到目标服务器指定位置;
通过远程jsch远程执行shell命令对微服务进程进行操作。
1.2 功能原理
Java
1.3 效果图
Java
Java
Java
二.微服务健康检测中心
基于actuator我们可以很好的针对每个微服务节点进行监控,当出现问题时及时报警。
2.1 实现机制
保证所有的微服务节点都加载了actuator;
从eureka中获取所有的微服务注册信息;
定时任务轮询请求每个微服务的health信息;
Health返回status树壮结构信息;
如果status状态为down发送报警并包含health完整信息。
2.2 功能原理
Java
2.3 效果图
我们在健康检测中心中同时加载了spring boot admin,可以随时查看微服务节点的所有运行信息。
Java
2.4 部分源码
Java
Java
三.定时任务管理中心
我们需要建立定时任务全局视图,并希望对每一个定时任务具备启停的能力。我们采用了通过继承统一的AbstractScheduledTask,暴露定时任务的启动,停止接口。让每一个定时任务自动具备的启停功能。
3.1 实现机制
通过BeanPostProcessor在bean初始完成后拦截所有的@Scheduled注解,获取ip,port,applicationName,className,beanName,scheduled等信息注册到zookeeper;
定时任务实现继承AbstractScheduledTaskInter接口,暴露startScheduledTask和stopScheduledTask,可以针对定时任务进行启动停止;
实现基准TaskScheduledController类,通过beanName获取定时任务类,调用该类的启动停止方法;
定时任务管理中心查询zookeeper展示全局注册的定时任务,提供启动停止操作对定时任务进行控制;
定时任务分为全局唯一定时任务和非唯一定时任务。
3.2 功能原理
Java
3.3 效果图
Java
Java
3.4 部分源码
获取定时任务
AbstractScheduledTask
Java
具备启停能力
Java
四.全局热备锁
无论定时任务还是普通跑批任务,我们需要对这些任务实现热备,以便在单点故障时任务依然可以顺利的执行。
4.1 实现机制
全局热备锁包括普通任务(例如监听rabbitmq消息)和定时任务;
任务以applicationName和className标识唯一,任务启动时把相关信息注册到zookeeper;
其他节点的任务启动时发现已经有任务运行,则监听zookeeper;
运行任务停止后,其它节点根据监听状态启动自身任务;
定时任务和普通任务不同,定时任务需要注册非运行节点,并对子节点数目变化和子节点数据变化都做监听。
4.2 功能原理
Java
4.3 效果图
Java
4.4 部分源码
Java
Java
Java学习资料获取(复制下段连接至浏览器即可)
data:text/html;charset=UTF-8;base64,5oGt5Zac5L2g77yM5p625p6E5biI5a2m5Lmg576k5Y+35pivNjg2NTc5MDE0Cg==
本文暂时没有评论,来添加一个吧(●'◡'●)