zoukankan      html  css  js  c++  java
  • 微服务部署

    参考来源:https://www.jianshu.com/p/022685baba7d

         https://blog.csdn.net/z15818264727/article/details/78890642

     

    有的得停机部署,有的不需要停机即可完成部署。

     

    (Blue/Green Deployment)蓝绿发布

    蓝绿部署是不停老版本,部署新版本然后进行测试,确认OK,将流量切到新版本,然后老版本同时也升级到新版本(删除老版本实例,使用新版本实例)。

    蓝绿部署无需停机,并且风险较小;应用始终在线。并且,新版本上线的过程中,并没有修改老版本的任何内容,在部署期间,老版本的状态不受影响。这样风险很小,并且,只要老版本的资源不被删除,理论上,我们可以在任何时间回滚到老版本。

    蓝绿部署就是发布新版本(新的实例,添加新的服务器,而不是修改老的服务器上的实例),测试修改等操作确认OK后,删除原来的老版本实例(老的服务器)。

     

    当你切换到蓝色环境时,需要妥当处理未完成的业务新的业务。如果你的数据库后端无法处理,会是一个比较麻烦的问题;

    • 可能会出现需要同时处理“微服务架构应用”和“传统架构应用”的情况,如果在蓝绿部署中协调不好这两者,还是有可能会导致服务停止。
    • 需要提前考虑数据库与应用部署同步迁移 /回滚的问题。
    • 蓝绿部署需要有基础设施支持。
    • 在非隔离基础架构( VM 、 Docker 等)上执行蓝绿部署,蓝色环境和绿色环境有被摧毁的风险。

     

    Rolling update(滚动发布)

    滚动发布:一般是取出一个或者多个服务器停止服务,执行更新,并重新将其投入使用。周而复始,直到集群中所有的实例都更新成新版本

    这种部署方式相对于蓝绿部署,更加节约资源——它不需要运行两个集群、两倍的实例数。我们可以部分部署,例如每次只取出集群的20%进行升级。

    滚动发布缺点:

    (1) 没有一个确定OK的环境。使用蓝绿部署,我们能够清晰地知道老版本是OK的,而使用滚动发布,我们无法确定。
    (2) 修改了现有的环境。
    (3) 如果需要回滚,很困难。举个例子,在某一次发布中,我们需要更新100个实例,每次更新10个实例,每次部署需要5分钟。当滚动发布到第80个实例时,发现了问题,需要回滚,这个回滚却是一个痛苦,并且漫长的过程。
    (4) 有的时候,我们还可能对系统进行动态伸缩,如果部署期间,系统自动扩容/缩容了,我们还需判断到底哪个节点使用的是哪个代码。尽管有一些自动化的运维工具,但是依然令人心惊胆战。
    (5) 因为是逐步更新,那么我们在上线代码的时候,就会短暂出现新老版本不一致的情况,如果对上线要求较高的场景,那么就需要考虑如何做好兼容的问题。

     

    灰度发布

    https://www.cnblogs.com/theRhyme/p/9182222.html

     

    轻量级微服务架构

    我们用一张图将轻量级微服务的部署架构与运行架构进行整合,它就是轻量级微服务架构的全貌。图片来源:https://blog.csdn.net/z15818264727/article/details/78890642

     

  • 相关阅读:
    void及void指针含义的深刻解析
    对个人站长职业前景的探讨之路在何方?
    Swift编程语言学习4.3—— 控制语句
    二分查找
    分布式文件系统
    常见浏览器兼容性问题与解决方式
    OutputDebugString()
    眼睛的颜色
    SVM-支持向量机算法概述
    Android学习笔记(四十):Preference的使用
  • 原文地址:https://www.cnblogs.com/theRhyme/p/9234655.html
Copyright © 2011-2022 走看看