一、服务发布简介

分布式系统架构下,服务发布是一件很麻烦的事情,特别是在构建自动发布流程和灰度测试的策略两个核心方面。通常情况下如果不涉及数据层面的灰度流程,服务可以灰度上线,或者滚动上线,这两种方式很常用;如果涉及到数据灰度,则可能需要中间服务做不同版本数据之间追平,或者停机维护一次性处理好数据和上线问题,不过后面这种方式风险较大。

二、蓝绿部署

新版本上线的时候,并不停掉老版本,新旧两个版本同时运行,通常还会在负载均衡的策略上倾向于旧版本服务处理请求,这样新版本就有一个执行的观察期过渡期,等到新版本平稳运行一段时间后,再把请求都发到新版服务上,旧版本服务完成下线。这种方式在分布式架构下很少使用,对服务器要求过高。

三、滚动发布

滚动发布可以避免蓝绿部署的服务器资源占用问,首先发布一台新版本服务,然后停掉一台老版本服务,新版服务经过观察之后,再逐步替换掉所有老版本的服务,这样服务的环境变动比较频繁,相对不稳定。

四、灰度发布

上述两种方式在普通业务场景下都还算好操作,分布式系统下的灰度发布复杂程序相对高很多,基础流程如下:

新版本上线,可能涉及分布式下多个灰度服务,因此在服务在整个链路上分发时,都要判断下个请求是路由到正常服务还是灰度服务,还要对灰度服务做请求的权重控制,不能让灰度服务处理大量的请求。

实际策略:在实际的分布式系统灰度发布流程,通常会采用如下一个策略:

  • 配置一个灰度是否开启的标识;
  • 配置一批灰度账户,通常内部人员;
  • 配置灰度服务版本标识;
  • 请求在链路执行时,判断灰度是否开启;
  • 判断当前用户身份是否是灰度测试账号;
  • 获取当前可以请求的服务列表;
  • 根据灰度服务版本选择请求的具体服务;

这个流程非常的复杂,需要很多自定义的策略,还要熟悉分布式框架的底层API原理,要二次重写来适配灰度策略,设计重写原生API还容易触发一些惊喜问题。

五、数据库灰度

如果说最难处理的灰度模式是什么,就是数据库的版本灰度问题,通常业务对数据库改造升级,实际都是通过停机维护来处理的,可能很多开发都经历过,发布停服公告,然后在指定时间内把数据全部追平或者二次搬运,再重新提供服务。但是总有些业务场景是不能停机维护的,处理灰度数据的基本策略如下:

该模式中,除了正常的灰度流程之外,需要在灰度数据库和正常数据中间提供一个数据调配服务,用来解决如下问题:灰度数据库缺失数据,需要临时从正常库拉取,灰度版本失败,新数据需要重新整合写入原本正常库;灰度版本成功,旧版数据迁移等;最终保证数据的平稳升级。

最后

现在其实从大厂招聘需求可见,在招聘要求上有高并发经验优先,包括很多朋友之前都是做传统行业或者外包项目,一直在小公司,技术搞的比较简单,没有怎么搞过分布式系统,但是现在互联网公司一般都是做分布式系统。

所以说,如果你想进大厂,想脱离传统行业,这些技术知识都是你必备的,下面自己手打了一份Java并发体系思维导图,希望对你有所帮助。

资料获取方式:戳这里免费下载

这里免费下载](https://docs.qq.com/doc/DSmxTbFJ1cmN1R2dB)**

企业级项目实战讲解!javamap排序规则相关推荐

  1. Android从零开始搭建MVVM架构(1),企业级项目实战讲解

    type="com.lihang.databindinglover.User"/> Activity里的使用都是非常简单的,如果有不明白,稍后放出链接. 这里还有特殊功能,比 ...

  2. 企业级项目实战讲解!我凭借这份PDF的复习思路,薪资翻倍

    前言 今年的金三银四已经过去一大半了,在这其中参与过不少面试,2021都说工作不好找,这也是对开发人员的要求变向的提高了. 之前在Github上收获15K+star的Java核心神技(这参数,质量多高 ...

  3. 企业级项目实战讲解!微信小程序趋势及前景,复习指南

    一.自我介绍 应该算是起点比较高吧!985大学毕业后面一直在国外读研.之前准备面试微软但是可能经验不够,没有通过.经过朋友介绍我准备回国,积累一些开发经验.于是我面试了国内大厂BATJ,还有一些其他比 ...

  4. 企业级项目实战讲解!java类内部定义枚举

    蚂蚁一面 ⼀⾯就做了⼀道算法题,要求两⼩时内完成,给了⻓度为N的有重复元素的数组,要求输出第10⼤的数.典型的TopK问题,快排算法搞定.算法题要注意的是合法性校验.边界条件以及异常的处理.另外,如果 ...

  5. 企业级项目实战讲解!java的war包能直接改名么

    Java核心架构笔记大致如下 0~1年: Java基础(基本语法.面向对象.继承.多态.接口和抽象类.异常.内部类.集合.泛型.反射.I/O等) Web编程(Servlet+MySQL数据库+商品管理 ...

  6. 视频教程-Java大型企业级项目实战:VOD展示系统-Java

    Java大型企业级项目实战:VOD展示系统 系统分析师,项目经理,特级讲师:11年项目经验,8年教学经验:在多个大型企业级项目中担任过重要角色. 肖海鹏 ¥479.00 立即订阅 扫码下载「CSDN程 ...

  7. 视频教程-从零开发一个iOS企业级项目实战之我的云音乐视频 教程-iOS

    从零开发一个iOS企业级项目实战之我的云音乐视频 教程 任苹蜻,爱学啊创始人 & CEO,曾就职于某二车手公司担任Android工程师后离职创办爱学啊,我们的宗旨是:人生苦短,我们只做好课!熟 ...

  8. Vue3 企业级项目实战:项目须知与课程约定

    本节内容很重要,希望大家能够耐心看完. Vue3 企业级项目实战 - 程序员十三 - 掘金小册Vue3 + Element Plus + Spring Boot 企业级项目开发,升职加薪,快人一步.. ...

  9. 视频教程-Python框架Djanggo从入门到实战教程(企业级项目实战)-Python

    Python框架Djanggo从入门到实战教程(企业级项目实战) 多年web开发经验,精通HTML.CSS.JavaScript.HTML5.CSS3等Web前端开发技术,技术纯熟,项目经验丰富.授课 ...

最新文章

  1. Burp Suite入门笔记
  2. 集合已修改,可能无法执行枚举操作
  3. java 枚举 菜鸟_2个菜鸟Java常量和枚举陷阱
  4. Linux学习笔记Sed最全整理
  5. qtextedit改变单个字的颜色_孩子从“妈妈”叫到“妈”,称呼少了一个字,暗示孩子三方面变化...
  6. 纽微特成立起因:申某账务有鬼,张某不干活怎么不说
  7. 搭建Hive远程模式初始化的时候报错Access denied for user ‘root‘@‘node1‘(using password:YES)
  8. 08python excel一键式统计0.11版本修正利息收入费用正负表达问题
  9. 百度云开发clouda学习(一)
  10. Navicat工具中数据库导入导出
  11. java压缩文件夹下所有文件
  12. SDNU-1014 页码问题
  13. AndroidStudio利用android-support-multidex解决65536问题64k问题
  14. 怎么录制屏幕视频?高效便捷方法在这里
  15. ACM国际大学生程序设计竞赛及练习题库
  16. php四则运算出题器_php 四则运算
  17. 全局、独享、局部路由守卫
  18. 路由器双线上网 网速翻倍不花钱
  19. 互联网行业产品经理(PM)的月薪一般是多少?
  20. Redis学习 - NoSQL简介、redis安装、redis基础知识、数据类型、持久化、订阅发布、主从复制、哨兵模式、缓存击穿和雪崩

热门文章

  1. HttpService远程校验
  2. 对JSON的一点认识和理解以及JQuery处理JSON
  3. 华为摄像机搜索软件_别人的终点华为的起点!用普惠AI守护城市安全
  4. python列表姓氏_python数据分析实例(六) 中国姓氏数据
  5. mysql锁表问题的解决方法_MYSQL锁表问题的解决方法
  6. list取值_Redis中List及quicklist实现-2
  7. JavaScript 学习随记——==和===及常见元素的真假值
  8. PL/SQL Developer跑在Oracle 64位数据库上初始化错误
  9. 453. 最小操作次数使数组元素相等
  10. 后台系统可扩展性学习笔记