当前位置: 首页 > news >正文

国家建设 免费论文期刊网站江阴高新区建设促进服务中心网站

国家建设 免费论文期刊网站,江阴高新区建设促进服务中心网站,超好看的排版素材网站,网页设计的首页版式文章目录 场景解决下线请求效果如图贴一个可用的部署脚本 场景 在 Spring Cloud 项目的微服务实例关闭时#xff0c;需要首先从注册中心设置为下线#xff0c;避免该服务的消费者继续请求该服务实例#xff0c;导致请求失败如果我们在服务实例从注册中心取消注册后#xff… 文章目录 场景解决下线请求效果如图贴一个可用的部署脚本 场景 在 Spring Cloud 项目的微服务实例关闭时需要首先从注册中心设置为下线避免该服务的消费者继续请求该服务实例导致请求失败如果我们在服务实例从注册中心取消注册后立即销毁其它 Spring Bean 的话会导致当前在处理的请求又或者服务消费者因为注册中心延迟期间继续打进来的请求产生处理失败的情况在 Spring 容器关闭时Spring Cloud 内置的 AbstractAutoServiceRegistration 会将当前实例从注册中心取消注册但是并不能保证这个步骤最先执行在所有 Bean 的销毁之前。同时虽然当前服务实例已经从注册中心取消注册但是服务消费者从注册中心中拉取到最新的注册信息是存在延迟的只是长短的差别。 解决 通过actuator/service-registry/ 接口完成接口下线sleep 30秒之后 再进行微服务jar包的启停进行健康检查 下线请求效果如图 贴一个可用的部署脚本 #!/bin/bash set -e# 基础 # export JAVA_HOME/work/programs/jdk/jdk1.8.0_181 # export PATHPATH$PATH:$JAVA_HOME/bin # export CLASSPATH$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarDATE$(date %Y%m%d%H%M) # 基础路径 BASE_PATH/home/vagrant/data/workProjects/JenkinsSpringCloudDemo # 编译后 jar 的地址。部署时Jenkins 会上传 jar 包到该目录下 SOURCE_PATH$BASE_PATH/build # 服务名称。同时约定部署服务的 jar 包名字也为它。 SERVER_NAMEJenkinsSpringCloudDemo # 环境 PROFILES_ACTIVEprod # 健康检查 URL HEALTH_CHECK_URLhttp://127.0.0.1:8078/actuator/health/ # 修改状态 URL STATUS_URLhttp://127.0.0.1:8078/actuator/service-registry/# heapError 存放路径 HEAP_ERROR_PATH$BASE_PATH/heapError # JVM 参数 JAVA_OPS-Xms1024m -Xmx1024m -XX:HeapDumpOnOutOfMemoryError -XX:HeapDumpPath$HEAP_ERROR_PATH # JavaAgent 参数。可用于配置 SkyWalking 等链路追踪 JAVA_AGENT# 备份 function backup() {# 如果不存在则无需备份if [ ! -f $BASE_PATH/$SERVER_NAME.jar ]; thenecho [backup] $BASE_PATH/$SERVER_NAME.jar 不存在跳过备份# 如果存在则备份到 backup 目录下使用时间作为后缀elseecho [backup] 开始备份 $SERVER_NAME ...cp $BASE_PATH/$SERVER_NAME.jar $BASE_PATH/backup/$SERVER_NAME-$DATE.jarecho [backup] 备份 $SERVER_NAME 完成fi }# 最新构建代码 移动到项目环境 function transfer() {echo [transfer] 开始转移 $SERVER_NAME.jar# 删除原 jar 包if [ ! -f $BASE_PATH/$SERVER_NAME.jar ]; thenecho [transfer] $BASE_PATH/$SERVER_NAME.jar 不存在跳过删除elseecho [transfer] 移除 $BASE_PATH/$SERVER_NAME.jar 完成rm $BASE_PATH/$SERVER_NAME.jarfi# 复制新 jar 包echo [transfer] 从 $SOURCE_PATH 中获取 $SERVER_NAME.jar 并迁移至 $BASE_PATH ....cp $SOURCE_PATH/$SERVER_NAME.jar $BASE_PATHecho [transfer] 转移 $SERVER_NAME.jar 完成 }# 停止 function stop() {echo [stop] 开始停止 $BASE_PATH/$SERVER_NAMEPID$(ps -ef | grep $BASE_PATH/$SERVER_NAME | grep -v grep | awk {print $2})# 如果 Java 服务启动中则进行关闭if [ -n $PID ]; then# 从注册中心下线echo [stop] 从注册中心下线当前实例并 sleep 20 秒curl -X POST $STATUS_URL -d {status: DOWN} -H content-type: application/jsonsleep 20# 正常关闭echo [stop] $BASE_PATH/$SERVER_NAME 运行中开始 kill [$PID]kill -15 $PID# 等待最大 60 秒直到关闭完成。for ((i 0; i 60; i))dosleep 1PID$(ps -ef | grep $BASE_PATH/$SERVER_NAME | grep -v grep | awk {print $2})if [ -n $PID ]; thenecho -e .\celseecho [stop] 停止 $BASE_PATH/$SERVER_NAME 成功breakfidone# 如果正常关闭失败那么进行强制 kill -9 进行关闭if [ -n $PID ]; thenecho [stop] $BASE_PATH/$SERVER_NAME 失败强制 kill -9 $PIDkill -9 $PIDfi# 如果 Java 服务未启动则无需关闭elseecho [stop] $BASE_PATH/$SERVER_NAME 未启动无需停止fi }# 启动 function start() {# 开启启动前打印启动参数echo [start] 开始启动 $BASE_PATH/$SERVER_NAMEecho [start] JAVA_OPS: $JAVA_OPSecho [start] JAVA_AGENT: $JAVA_AGENTecho [start] PROFILES: $PROFILES_ACTIVE# 开始启动BUILD_IDdontKillMe nohup java -server $JAVA_OPS $JAVA_AGENT -jar $BASE_PATH/$SERVER_NAME.jar --spring.profiles.active$PROFILES_ACTIVE echo [start] 启动 $BASE_PATH/$SERVER_NAME 完成 }# 健康检查 function healthCheck() {# 如果配置健康检查则进行健康检查if [ -n $HEALTH_CHECK_URL ]; then# 健康检查最大 60 秒直到健康检查通过echo [healthCheck] 开始通过 $HEALTH_CHECK_URL 地址进行健康检查;for ((i 0; i 60; i))do# 请求健康检查地址只获取状态码。resultcurl -I -m 10 -o /dev/null -s -w %{http_code} $HEALTH_CHECK_URL || echo 000# 如果状态码为 200则说明健康检查通过if [ $result 200 ]; thenecho [healthCheck] 健康检查通过;break# 如果状态码非 200则说明未通过。sleep 1 秒后继续重试elseecho -e .\csleep 1fidone# 健康检查未通过则异常退出 shell 脚本不继续部署。if [ ! $result 200 ]; thenecho [healthCheck] 健康检查不通过可能部署失败。查看日志自行判断是否启动成功;tail -n 10 nohup.outexit 1;# 健康检查通过打印最后 10 行日志可能部署的人想看下日志。elsetail -n 10 nohup.outfi# 如果未配置健康检查则 slepp 60 秒人工看日志是否部署成功。elseecho [healthCheck] HEALTH_CHECK_URL 未配置开始 sleep 60 秒;sleep 60echo [healthCheck] sleep 60 秒完成查看日志自行判断是否启动成功;tail -n 50 nohup.outfi }# 部署 function deploy() {cd $BASE_PATH# 备份原 jarbackup# 停止 Java 服务stop# 部署新 jartransfer# 启动 Java 服务start# 健康检查healthCheck }deploy
http://www.hkea.cn/news/14502483/

相关文章:

  • 长沙网站制作教程哪里有手机网站建设
  • 微网站建设代理商推荐网站制作建设书
  • 行业网站的优势asp.net微信网站
  • intitle:网站建设站点建设方案
  • 网站开发转行进入衍生领域商城推广是做什么的
  • 网站制作实例iis做本地视频网站
  • 上海网站推广汉狮泰安网站建设哪家不错
  • 婚庆公司网站建设网站的构成要素
  • ppt设计网站杂志在线设计网站
  • 北京高端网站建设公司浩森宇特北京建网站公司有哪些
  • 长安网站建设工作总结给我免费观看片在线
  • 彩票网站制作商wordpress去除 版权
  • 网站js特效悬浮框关于网站的设计和制作
  • 英语培训建设网站方案做网站不需要原件吧
  • 互联网软件开发工程师深圳seo推广培训
  • 如何自己创建网站做猎头需要用到的网站
  • 网站后台多附件上传管理外贸网站模板下载
  • 公司网站属于什么类型谷歌搜索入口手机版
  • 学东西的网站phpcms网站源码
  • 村志网站建设成都seo学徒
  • 西安建设集团网站网站设计制作策划
  • 网站建设运营公司大全wordpress文章rss
  • 暗网网站有那些潍坊网站排名
  • 北京个人网站公司网页设计作品论文
  • 网站是用什么软件做的自己搭建app
  • 做er图的网站商城网站设计与实现
  • 网站推广方式百度云做一个卖车的网站该怎么做
  • 哈尔滨自助建站模板电商营销推广有哪些?
  • 网站的界面设计怎么做郑州酒店网站建设
  • 网站长图怎么做竣工验收报告查询网