首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏葫芦

    基于EUREKA优雅发布

    基于EUREKA优雅发布基于EUREKA不优雅的原因如图所示:图片app1的pod启动后会向eureka注册自己的服务名、ip、端口信息。 不优雅的问题在于当app1 pod滚动更新时,新pod拉起后会直接杀掉旧版的pod。旧pod被杀掉后,30秒后eureka才会将此旧pod信息在eureka中清除。 8080ENTRYPOINT ["java","-server","-Xms2560m","-Xmx2560m", "-jar", "/opt/spring-cloud/lib/app1.jar]最终优雅完成以上步骤后 ,发布服务,第一次发布会讲脚本及生命周期钩子带上去。 当第二次发布即会成为优雅发布。原理在pod Terminating状态时通过pre_stop.sh脚本,告知eureka此pod注销,同时sleep 40秒等待,而后清除此pod。

    72940编辑于 2022-08-29
  • 来自专栏芋道源码1024

    SpringCloud 优雅下线+灰度发布

    常见的下线方式 优雅的下线方式 灰度发布 蓝绿部署 滚动部署 金丝雀部署 ---- 前言 在生产环境中,如何保证在服务升级的时候,不影响用户的体验,这个是一个非常重要的问题。 常见的优雅解决方案,主要包括优雅下线和灰度发布。而实际上,灰度发布的范围就已经包含优雅下线了。 最后,在本文中,我们主要讲述基于 Spring Cloud 和 Euraka 的优雅下线以及灰度发布。 举个例子,在某一次发布中,我们需要更新 100 个实例,每次更新 10 个实例,每次部署需要 5 分钟。当滚动发布到第 80 个实例时,发现了问题,需要回滚。这时,我们估计就要疯了。 并不是说滚动发布不好,滚动发布也有它非常合适的场景。 金丝雀部署 金丝雀部署又称灰度部署(或者,灰度发布),英文名为 Canary Deployment,是指在黑与白之间,能够平滑过渡的一种发布方式 。

    1.4K30编辑于 2022-04-18
  • 来自专栏猿天地

    SpringCloud 优雅下线+灰度发布

    常见的下线方式 优雅的下线方式 灰度发布 蓝绿部署 滚动部署 金丝雀部署 ---- 前言 在生产环境中,如何保证在服务升级的时候,不影响用户的体验,这个是一个非常重要的问题。 常见的优雅解决方案,主要包括优雅下线和灰度发布。而实际上,灰度发布的范围就已经包含优雅下线了。 最后,在本文中,我们主要讲述基于 Spring Cloud 和 Euraka 的优雅下线以及灰度发布。 举个例子,在某一次发布中,我们需要更新 100 个实例,每次更新 10 个实例,每次部署需要 5 分钟。当滚动发布到第 80 个实例时,发现了问题,需要回滚。这时,我们估计就要疯了。 并不是说滚动发布不好,滚动发布也有它非常合适的场景。 金丝雀部署 金丝雀部署又称灰度部署(或者,灰度发布),英文名为 Canary Deployment,是指在黑与白之间,能够平滑过渡的一种发布方式。

    70320编辑于 2022-05-10
  • 来自专栏葫芦

    teg 基于EUREKA优雅发布

    基于EUREKA优雅发布 基于EUREKA不优雅的原因 如图所示: app1的pod启动后会向eureka注册自己的服务名、ip、端口信息。 不优雅的问题在于 当app1 pod滚动更新时,新pod拉起后会直接杀掉旧版的pod。 旧pod被杀掉后,30秒后eureka才会将此旧pod信息在eureka中清除。 将服务变得优雅 1.java服务暴漏端点: management: endpoints: web: exposure: include: service-registry 完成以上步骤后,发布服务,第一次发布会讲脚本及生命周期钩子带上去。 当第二次发布即会成为优雅发布。 原理 在pod Terminating状态时通过pre_stop.sh脚本,告知eureka此pod注销,同时sleep 40秒等待,而后清除此pod。

    45410编辑于 2022-09-26
  • 来自专栏奶奶看了都会

    发布稳定性-优雅下线

    所以准备写一下关于发布稳定性的经验文章,今天先来说说优雅下线。 为什么需要优雅下线 对于线上应用,特别是高并发的应用来说,在服务更新部署发布过程中保证客户端无感知是开发者必须要解决的问题,即从应用停止到重启恢复服务这个阶段不能影响正常的业务请求。 所以服务需要自动化机制,自动摘流量并确保处理完已经到达的请求,这也就是优雅下线。 适用场景 JVM主动关闭(System.exit(int)) 应用程序接受SIGTERM或SIGINT信号退出 Dubbo服务优雅下线 Dubbo服务的优雅下线是默认开启的,停机等待时间10秒 # Dubbo 有提供无损上下线的功能,当然可能是收费的啊,但是接入简单,适用于大型系统 图片 总结 这篇文章介绍了无损下线,主要目的是防止应用发布部署过程中产生脏数据问题,下篇文章讲无损上线

    79720编辑于 2023-04-20
  • 来自专栏奶奶看了都会

    发布稳定性-优雅上线

    之前的文章讲了优雅下线发布稳定性-优雅下线,今天讲优雅上线 优雅上线也叫:「无损上线」,「延迟发布」,「延迟暴露」。 与之对立的自然是:「有损上线」,「直接发布」 什么是优雅上线 先说说什么情况不是优雅上线 • 应用启动时,Service还没加载完,系统就开始对外提供服务,导致失败调用。 等到应用恢复正常后,再把流量弄回来,让应用继续提供服务,这就是优雅上线。 无论是HTTP应用还是RPC应用,在发布上线时,优雅上线逻辑都是一样的,如下图,服务发布过程中不可用,进行摘流。 待到服务发布完成,重新分配流量 Dubbo的优雅上线 Dubbo的优雅上线有2种方式:延迟发布 和 Qos命令 1.延迟发布 即延迟暴露Dubbo服务,比如你的服务需要一些初始化操作后才能对外提供服务 QOS命令上线 Dubbo官方文档QOS命令操作手册:QOS操作手册 配置以下,启动时不向注册中心发布服务 # 延迟暴露5s dubbo.provider.delay=5000 # provider服务启动后不注册到注册中心

    63440编辑于 2023-04-28
  • 来自专栏奶奶看了都会

    发布稳定性-优雅上线

    之前的文章讲了优雅下线发布稳定性-优雅下线,今天讲优雅上线 优雅上线也叫:「无损上线」,「延迟发布」,「延迟暴露」。 与之对立的自然是:「有损上线」,「直接发布」 什么是优雅上线 先说说什么情况不是优雅上线 应用启动时,Service还没加载完,系统就开始对外提供服务,导致失败调用。 等到应用恢复正常后,再把流量弄回来,让应用继续提供服务,这就是优雅上线。 无论是HTTP应用还是RPC应用,在发布上线时,优雅上线逻辑都是一样的,如下图,服务发布过程中不可用,进行摘流。 待到服务发布完成,重新分配流量 图片 Dubbo的优雅上线 Dubbo的优雅上线有2种方式:延迟发布 和 Qos命令 1.延迟发布 即延迟暴露Dubbo服务,比如你的服务需要一些初始化操作后才能对外提供服务 QOS命令上线 Dubbo官方文档QOS命令操作手册:QOS操作手册 配置以下,启动时不向注册中心发布服务 # 延迟暴露5s dubbo.provider.delay=5000 # provider服务启动后不注册到注册中心

    75031编辑于 2023-04-20
  • 来自专栏奶奶看了都会

    发布稳定性-优雅下线

    所以准备写一下关于发布稳定性的经验文章,今天先来说说优雅下线。 为什么需要优雅下线 对于线上应用,特别是高并发的应用来说,在服务更新部署发布过程中保证客户端无感知是开发者必须要解决的问题,即从应用停止到重启恢复服务这个阶段不能影响正常的业务请求。 所以服务需要自动化机制,自动摘流量并确保处理完已经到达的请求,这也就是优雅下线。 适用场景 • JVM主动关闭(System.exit(int)) • 应用程序接受SIGTERM或SIGINT信号退出 Dubbo服务优雅下线 Dubbo服务的优雅下线是默认开启的,停机等待时间10秒 阿里云MSE有提供无损上下线的功能,当然可能是收费的啊,但是接入简单,适用于大型系统 MSE配置无损下线 总结 这篇文章介绍了无损下线,主要目的是防止应用发布部署过程中产生脏数据问题,下篇文章讲无损上线

    65921编辑于 2023-04-28
  • 来自专栏维C果糖

    Spring Cloud 优雅下线以及灰度发布

    常见的优雅解决方案,主要包括优雅下线和灰度发布。而实际上,灰度发布的范围就已经包含优雅下线了。最后,在本文中,我们主要讲述基于 Spring Cloud 和 Euraka 的优雅下线以及灰度发布。 举个例子,在某一次发布中,我们需要更新 100 个实例,每次更新 10 个实例,每次部署需要 5 分钟。当滚动发布到第 80 个实例时,发现了问题,需要回滚。这时,我们估计就要疯了。 并不是说滚动发布不好,滚动发布也有它非常合适的场景。 金丝雀部署 金丝雀部署又称灰度部署(或者,灰度发布),英文名为 Canary Deployment,是指在黑与白之间,能够平滑过渡的一种发布方式。 Spring cloud系列20 实现服务优雅上下线 Spring Cloud 灰度发布解决方案 一文搞懂蓝绿部署和金丝雀发布 微服务部署:蓝绿部署、滚动部署、灰度发布、金丝雀发布

    2.1K20编辑于 2021-12-07
  • 来自专栏运维咖啡吧

    探秘varian:优雅发布部署程序

    上一篇文章《记一次诡异的故障排查经历》中有介绍到我们的部署程序varian,文章发布后有小伙伴对varian很感兴趣,今天就简单的介绍一下我们的varian,揭开她神秘的面纱~ 什么是varian varian 编写的一套部署程序,处在整个部署系统的中心,与CMDB、Jenkins、SVN/Git、镜像仓库Harbor、Kubernetes API、通知系统等都有交互,负责将源代码经过一系列的处理后打包成Docker镜像,并发布到各个环境 这样做的好处是每个项目部署发布逻辑都比较简单,修改任何一个项目都对其他项目无影响;但缺点也很明显,各个项目脚本分散,任何项目信息变更都需要取改这个脚本,且一些公共功能的修改就需要所有项目脚本都改一遍,难免不出问题 CMDB拉取项目下的主机列表、邮件通知等从shell脚本中单独抽出来用python重构,并用python实现了一个主入口,所有项目部署都通过这个主入口进入,然后调用python或shell脚本来实现部署发布整过程

    57470发布于 2018-08-23
  • 来自专栏散尽浮华

    Pod容器应用优雅发布 - 运维笔记

    容器优雅发布的配置记录: 这里以customer-services应用模块的pod容器优雅配置为例: 1)将nacos主动下线的脚本在镜像制作阶段推送到容器内部 编写customer-services timeoutSeconds: 5 periodSeconds: 10 readinessProbe: tcpSocket: port: customer-port initialDelaySeconds: 15 timeoutSeconds: 5 volumes: - name: customerlog hostPath: path: /var/log/k8s_log/customer-services 容器发布流程 生产环境通过Jenkins配置的Pod容器部署流程:即从Gitlab拉取代码、打包、制作镜像、上传镜像到Harbor仓库、更新pod等发布流程。

    3.9K31发布于 2020-11-24
  • 来自专栏向治洪

    Webpack 5 正式发布

    Webpack支持AMD和CommonJS,以及其他的一些模块系统,并且兼容多种JS书写规范,可以处理模块间的依赖关系,所以具有更强大的JS模块化的功能,它能对静态资源进行统一的管理以及打包发布。 Webpack 5 自2018 年 2 月Webpack4 发布以来,Webpack 就一直没有更进一步的重大更新,为了保持 API 的一致性,旧的架构没有做太多改变,遗留了很多的包袱。 或许是沉寂太久,2020 年 10 月 10 日,Webpack 正式发布了 5.0 版本。Webpack 5带来了哪些新的特性呢? 尝试用持久性缓存来提高构建性能。 并且,以下的实验功能也会随 Webpack 5 一起发布。 ][ext]' }, }, }; 另外,入口文件的配置,新增了文件依赖定义、生成类库的格式类型(commonjs 或 amd),也可以设置运行时的名字,以及代码块加载的方式,更多细节可以参考完整的发布记录

    1.9K10编辑于 2022-11-30
  • 来自专栏ATYUN订阅号

    善用5优雅的 Python NumPy 函数

    编辑 | sunlei 发布 | ATYUN订阅号 在机器学习和数据科学项目的日常数据处理中,我们会遇到一些特殊的情况,这些情况需要样板代码来解决。 这里我将分享5优雅的python Numpy函数,它们可以用于高效和简洁的数据操作。 1) 使用-1进行整形 Numpy允许我们重新塑造一个矩阵,提供新的形状应该与原始形状兼容。 array = np.array([10, 7, 4, 3, 2, 2, 5, 9, 0, 4, 6, 0]) index = np.argpartition(array, -5)[-5:] index print (np.clip(array,2,5)) [5 2 4 2 2 2 5 5 2 4 5 2] 4) Extract:根据条件从数组中提取特定的元素 我们可以使用Numpy extract c array([1, 2, 5, 9]) 最后注意 这是5个Numpy函数,它们不经常被公众使用,但是它们非常整洁和优雅

    1.5K30发布于 2019-11-11
  • 来自专栏程序猿DD

    Spring Cloud应用的优雅下线与灰度发布

    但如果单独拿kill PID出来说,我们能说它是优雅的下线策略吗?肯定不是啊,就是这个道理。 因此,本文讲述的优雅下线仅能称之为“相对的优雅下线”,但相对于暴力的杀死服务,已经足够优雅了。 常见的优雅解决方案,主要包括优雅下线和灰度发布。而实际上,灰度发布的范围就已经包含优雅下线了。 最后,在本文中,我们主要讲述基于 Spring Cloud 和 Euraka 的优雅下线以及灰度发布。 举个例子,在某一次发布中,我们需要更新 100 个实例,每次更新 10 个实例,每次部署需要 5 分钟。当滚动发布到第 80 个实例时,发现了问题,需要回滚。这时,我们估计就要疯了。 并不是说滚动发布不好,滚动发布也有它非常合适的场景。 金丝雀部署 金丝雀部署又称灰度部署(或者,灰度发布),英文名为 Canary Deployment,是指在黑与白之间,能够平滑过渡的一种发布方式。

    67420编辑于 2022-04-28
  • 来自专栏PHP饭米粒

    Swoft 2.0.3 重大更新,发布优雅的微服务治理

    优雅的服务治理 Swoft 官方建议开发者使用 Service mesh 模式,比如 Istio/Envoy 框架,把业务和服务治理分开,但是 Swoft 也为中小型企业快速构建微服务提供了一套微服务组件 方法获取文件上传保存之后的信息(fe7e3a6) 新增 restart() 服务新增重启方法(2ffec37) 新增调用 1.x RPC 服务支持(30d73c3) 新增 AOP 类名匹配支持正则表达式(bc5e479 ErrorHanlders 为 ErrorManager (f3a8f04b) console组件的异常处理改为由error组件提供的统一处理风格 (4f47204) console组件允许设置禁用命令组(c5a0269

    1K20发布于 2019-07-17
  • 来自专栏机器学习与统计学

    5优雅的Numpy函数助你走出困境

    ], [5, 6], [7, 8]])a.reshape(2,-1) array([[1, 2, 3, 4], [5, 6, 7, 8]])a.reshape( array = np.array([10, 7, 4, 3, 2, 2, 5, 9, 0, 4, 6, 0])index = np.argpartition*(array, -5)[-5:] index 2 2 5 6 2 4 6 2]#Example-2 array = np.array([10, -1, 4, -3, 2, 2, 5, 9, 0, 4, 6, 0]) print (np.clip( array,2,5))[5 2 4 2 2 2 5 5 2 4 5 2] Extract:从数组中提取符合条件的元素 我们可以使用 Numpy extract () 函数从数组中提取符合条件的特定元素。 carray([1, 2, 5, 9]) 小结 以上 5 个 Numpy 函数并不经常被社区使用,但是它们非常简洁和优雅

    86520发布于 2019-11-12
  • 来自专栏.Net Core 技术栈

    【翻译】.NET 5 Preview5发布

    今天,发布了.NET 5.0 Preview5。主要对它进行了一小部分新功能和性能的改进。.NET 5.0 Preview 4包含了一些计划和.NET 5.0要交付的内容。 在.NET 5中的支持WinRT API中明确指出了这些好处: WinRT互操作可以独立于.NET runtime进行开发和改进。 Alpine 3.12 本周,增加了对Alpine 3.12,.NET Core 3.1和.NET 5的支持。Alpine Linux的维护者于5月29日宣布发布Alpine 3.12。 会发现他们已经开始使用一种新的发布模型来发布新发行版的问题。这就是我们对Alpine 3.12所做的。将来,我们计划更早地发布这些问题。例如,需要跟踪的下一个发行版可能是Ubuntu 20.10。 来源:https://devblogs.microsoft.com/dotnet/announcing-net-5-0-preview-5/

    60020编辑于 2022-04-07
  • 来自专栏极客猴

    数据运算最优雅5个的Numpy函数

    ], [5, 6], [7, 8]])a.reshape(2,-1) array([[1, 2, 3, 4], [5, 6, 7, 8]])a.reshape( array = np.array([10, 7, 4, 3, 2, 2, 5, 9, 0, 4, 6, 0])index = np.argpartition*(array, -5)[-5:] index 2 2 5 6 2 4 6 2]#Example-2 array = np.array([10, -1, 4, -3, 2, 2, 5, 9, 0, 4, 6, 0]) print (np.clip( array,2,5))[5 2 4 2 2 2 5 5 2 4 5 2] Extract:从数组中提取符合条件的元素 我们可以使用 Numpy extract () 函数从数组中提取符合条件的特定元素。 carray([1, 2, 5, 9]) 以上 5 个 Numpy 函数并不经常被社区使用,但是它们非常简洁和优雅

    70710发布于 2019-11-21
  • 来自专栏海向

    Springboot集成JUnit5优雅进行单元测试

    为什么使用JUnit5 JUnit4被广泛使用,但是许多场景下使用起来语法较为繁琐,JUnit5中支持lambda表达式,语法简单且代码不冗余。 JUnit5易扩展,包容性强,可以接入其他的测试引擎。 功能更强大提供了新的断言机制、参数化测试、重复性测试等新功能。 ps:开发人员为什么还要测试,单测写这么规范有必要吗? 如图,JUnit5结构如下: JUnit Platform: 这是Junit提供的平台功能模块,通过它,其它的测试引擎都可以接入Junit实现接口和执行。 JUnit JUpiter:这是JUnit5的核心,是一个基于JUnit Platform的引擎实现,它包含许多丰富的新特性来使得自动化测试更加方便和强大。 JUnit Vintage:这个模块是兼容JUnit3、JUnit4版本的测试引擎,使得旧版本的自动化测试也可以在JUnit5下正常运行。

    2.7K20发布于 2020-10-23
  • 来自专栏szhshp 的第四边境中转站

    优雅地乱玩Linux-5-GitMerge工具Meld

    difftool -y --dir" 当然这里的别名可以随便换,修改后保存重开 Terminal 就可以使用 gdiff 对当前 repo 进行 diff 和 merge 了 图片 系列文章 优雅地乱玩

    1.3K30编辑于 2022-09-21
领券