如何防止新Feature把线上搞挂?

技术文档网 2021-04-25

除非恶意代码,比如说在一个死循环中不停的分配内存,否则服务不是那么容易挂掉的。

开发一个新的Feature通常会经历如下流程进行把关:
1、有单元测试、自动化测试和性能测试来保证代码质量。
2、每个大的Feature都会有Feature Toggle进行开关。
3、每个大的Feature都会在线上经过A/B测试。
4、服务器都是多线程,一个线程抛出异常根本不影响其它线程的工作,如果不是恶意代码,最多是一个Feature不可用,是不会把整个服务器搞挂掉的。就算是内存泄漏,也是需要时间来积累才会反应出来,不会立刻导致所有服务实例不可用。在这个积累过程中,监控系统已经发出了报警。
5、用户的入口即App端是各种Feature的集合入口处,一个Feature挂掉,对整个App的使用并不会产生大的影响。完全可以在Feature入口点限制访问。

有人说,如果真发生一个实例挂掉了,剩下的服务器的压力将变得很大。关于这个问题,我觉得是对到底应该部署多少个实例没想清楚。
首先,假如一个服务最多能承受每秒500个请求,现在的请求是每秒1000个,是不是部署两台机器就可以了?答案显然是不可以。我们应该将单实例设置为200个请求,那么我们就需要5台机器。现在挂掉一台还剩4台,每台机器的压力变为250个,如果挂掉2台,每台机器的压力变为330个,都是不影响我们的集群提供服务能力。
再次,使用容器化,如果一台实例挂掉了,容器平台会自动扩容,自动开启新的实例提供服务。

相关文章

  1. 代码无法更新问题处理办法

    在本地维护代码时,经常要git pull一下以便拉取最新的代码 但是,有时候改了本地的文件,git pull的时候提示错误 可以酱紫操作: 强制覆盖本地文件(改完可能会导致本地配置信息被覆盖) git

  2. Git换行符检查CRLF与LF

    遇到的问题 在 git 提交或是签出时,提示如下问题:[git] warning: LF will be replaced by CRLF | fatal: CRLF would be replace

  3. 使用git和GitHub完成考核任务

    Git 是自由开源的分布式版本控制系统。 GitHub 是使用 Git 进行版本控制的代码托管平台。 准备工作 你需要在系统上安装 git 来管理工作区。 Ubuntu $ sudo apt up

  4. 如何防止新Feature把线上搞挂?

    除非恶意代码,比如说在一个死循环中不停的分配内存,否则服务不是那么容易挂掉的。 开发一个新的Feature通常会经历如下流程进行把关:1、有单元测试、自动化测试和性能测试来保证代码质量。2、每个大

  5. 如何更新自己Fork的代码

    以用户appframe为例子: 注意事项:在更新自己Fork的代码之前,需要先把自己在本地的更改进行提交。 1、检出自己在github上fork的APDPlat分支(如果已经从netbenas中检出了

随机推荐

  1. 代码无法更新问题处理办法

    在本地维护代码时,经常要git pull一下以便拉取最新的代码 但是,有时候改了本地的文件,git pull的时候提示错误 可以酱紫操作: 强制覆盖本地文件(改完可能会导致本地配置信息被覆盖) git

  2. Git换行符检查CRLF与LF

    遇到的问题 在 git 提交或是签出时,提示如下问题:[git] warning: LF will be replaced by CRLF | fatal: CRLF would be replace

  3. 使用git和GitHub完成考核任务

    Git 是自由开源的分布式版本控制系统。 GitHub 是使用 Git 进行版本控制的代码托管平台。 准备工作 你需要在系统上安装 git 来管理工作区。 Ubuntu $ sudo apt up

  4. 如何防止新Feature把线上搞挂?

    除非恶意代码,比如说在一个死循环中不停的分配内存,否则服务不是那么容易挂掉的。 开发一个新的Feature通常会经历如下流程进行把关:1、有单元测试、自动化测试和性能测试来保证代码质量。2、每个大

  5. 如何更新自己Fork的代码

    以用户appframe为例子: 注意事项:在更新自己Fork的代码之前,需要先把自己在本地的更改进行提交。 1、检出自己在github上fork的APDPlat分支(如果已经从netbenas中检出了