书由:

网上一些对书的点评,说是一本实际运营故障处理的维护手册。许多只有大公司才能碰到的案例,里面有不少内容如果不了解阿里内部细节,还是不容易看懂的。

这本书的给的介绍与定义是,负责阿里大平台生产稳定性的技术小二的代表,把他们这些年在基础架构、中间件、数据库、业务研发、运行管理等大型互联网

平台的稳定性建设中积累的宝贵实战经验,用平实无华的语言娓娓道来。这些技术沉淀既是对过往典型故障的深度分析,也是跟同行们切磋交流的宝贵知识财富。

dns线路机制

作为维护人员,在处理域名相关的变更时更需要多加注意。比如:域名是由权威DNS和各地运营商或第三方机构的缓存 DNS等,在转移权威DNS服务提供商要在旧的DNS提供商中保留正确的解析至少48小时;在自己搭建DNS时,多加测试,注意兼容性;在配置多线路的智能解析(不同来源,指向不同的地址,

即让DNS根据来源的不同而返回不同的值)时,要注意每个线路均能正常解析。出现问题时,可借助dig/nslookup等域名诊断工具以及域名的whois信息来诊断。

禁用select*

Select*带来的便利是对于字段较多的情况下,可以少写字段,不会出现在业务代码中遗漏字段的情况。但大家应该也了解, select*会查询出数据库的所有字段,如果某个字段很大,可能对

性能有影响,一般建议按需使用字段。如果认为select*的弊端仅

仅是以上这些,那就大错特错了。为什么DBA强烈禁止使用 select*,阿里巴巴集团开发规约也把其作为禁止使用的条例,肯

定是有原因的。

本节场景举例,某项目发布阶段,因为业务需要新增表字段,从sql的代码逻辑来看,使用了select*,新增字段应该是兼容的,但在做线上数据库ddl操作之后,立即出现了日志错误数飙升报警,说明数据库新增字段并不兼容。

分析出现错误的原因是由于分库分表,共N个库(N大于4),数据库表变更的时候,是分库分批执行的。N个库变更完成,历时M分钟(时间长短取决于分库分表数据等因素)。tddl在执行的时候,碰到Select*, 会从数据库表中解析出对应的全部字段,取第一个库的第一个一进行解析,解析之后会缓存结果。替换*,然后再把解析后的sql语句提交到目标数据库执行。在第一个库变更之后,tddl拿到最新的字段列表,后续一段时间内的查询,都直接用带有新增字段的sql语句提交到数据库执行;由于有部分数据库还没执行变更,没有新的字段,导致数据库执行出错,无法查询数据。

本案例是因为不了解tddl中间层对select*的解析逻辑,导致数据库变更时出现不兼容问题,但使用select*的弊端不限于此,比如select*查询非必需字段,会造成资源浪费甚至影响服务器性能;增加sql的解析成本,表结构变更可能会引起字段映射问题;不会使用覆盖索引,不利于查询的性能优化等。

逆流而上阿里巴巴技术成长之路相关推荐

  1. 猿创征文|独特且教训的技术成长之路

    为什么说独特的技术成长之路呢,因为从上了大学到现在读研,见识了很多的语言,也曾经迷茫过.在大学中学过C,C++,Java,Python,Js,GO等等很多的语言知识,有一些比较熟悉有一些只能说是了解. ...

  2. 致敬科技工作者:资深Java工程师的技术成长之路

    在全国科技者工作日这个特殊的日子里,我们向所有为科技进步付出辛勤努力的工作者们致敬.本文将分享一位资深Java工程师的技术成长之路(本人自己),以及他在技术领域取得的成就. 1. 热爱编程的起点 在计 ...

  3. 从程序员到架构师的最佳技术成长之路

    我把程序员到架构师的技术成长之路分为几个典型的阶段:工程师 - 高级工程师 - 技术专家 - 初级架构师 - 中级架构师 - 高级架构师,总的成长原则是每个阶段都需要"积累经验.拓宽视野.深 ...

  4. 写作—开启技术成长之路

    一.前言 作为一名程序员,经常在网络上查找各种各样的资料.此时,会检索到很多优秀的技术文章.一篇好的技术文章,可能不仅仅会解决我们的问题,更能在阅读的过程中带给我们一些美好的体验. 许多时候我们也憧憬 ...

  5. 阿里巴巴DBA成长之路

    http://fellow.51cto.com  2008-04-30 11:18  zhaolinjnu  IT168  我要评论( <script src="http://www. ...

  6. 猿创征文|当我在追光 我与光同航--我与Java的技术成长之路

    文章目录 前言 材料转码 初识JAVA 大学建议 1. 参加比赛 2. 坚持创作 3.养成看书的习惯 Java路线 1. java基础 2. 数据库 3. javaWeb 4. 框架 前言 今天借着官 ...

  7. 猿创征文|我的C/C++技术成长之路

    作者简介:一名双非本科大二网络工程专业在读,热衷编程,喜欢写作 忘记背后,努力面前,向着标杆奋力追求 技术上的成长路线 一.初识C语言 二.ACMer的养成记 三.接触数据结构 四.开始探索C++ 五 ...

  8. Helloworld的技术成长之路:不忘初心,持之以恒

    点击查看活动详情:https://t.csdnimg.cn/L4B8 社区介绍: RT-Thread 是一个集实时操作系统(RTOS)内核.中间件组件和开发者社区于一体的技术平台,由熊谱翔先生带领并集 ...

  9. 从开源小白到 Apache Member,阿里技术小哥的成长之路

    我们走过的每一步路,都会留下印记,越坚实,越清晰. 近日,Apache 软件基金会(ASF)官方 Blog 宣布全球新增 40 位 Apache Member,张乎兴有幸成为其中一位. 目前,全球共有 ...

最新文章

  1. 总编下午茶:挑战者心态能否帮助微软重回云计算巅峰?
  2. GirlFriendNotFoundException异常是怎样处理的?
  3. Linux 常见的六大 IPC 通信方式
  4. System.Web.HttpRequestValidationException: 从客户端(txtName=fd)中检测到有潜在危险的 Request.Form 值...
  5. IOS6+ 下,使用position:sticky实现粘性布局
  6. HTML中的function函数命名,请问HTML function函数怎么定义和调用?
  7. Android Runnable与Handler和Thread的使用,Handler构造方法弱引用实现
  8. parallels网络初始化失败_33 个神经网络「炼丹」技巧
  9. LeetCode 1466. 重新规划路线(DFS/BFS)
  10. 简述DNS进行域名解析的原理
  11. combox控件触发事件_Simulink(三角函数和代数约束模块)+Matlabgui(Gui实例)+Stateflow数据与事件(三)...
  12. Linux-第一篇linux基本认识
  13. gps模拟器 matlab,基于Matlab/Simulink的数字中频GPS信号软件模拟器
  14. UDP中sendto()和recvfrom()两个函数的使用
  15. Excel模板下载(带下拉框)
  16. 吃货在东京 -- 记那段吃不饱的日子 之四 台场的日本拉面
  17. Vue2组件通信方式
  18. ABP教程(四)- 开始一个简单的任务管理系统 - 实现UI端的增删改查
  19. [ARM 的高级命名术 A32 T32 A64 Thumb Thumb2 AArch32 AArch64]
  20. 免费内网穿透远程访问家里的监控

热门文章

  1. 520的告白礼物,你准备好了吗?华为平板M5就是爱的证明
  2. 数学之线性代数——正交分解
  3. 自动化测试环境搭建python+selenium
  4. 【干货】微信小程序之自动化技术
  5. 自制安卓版iPhone计算器
  6. 优化算法2--遗传算法(原理)
  7. 深入理解JavaScript电子书pdf下载
  8. qrobot开发总结之利用第三方TTS软件开发中文TTS
  9. 电商推荐系统(上):推荐系统架构、数据模型、离线统计与机器学习推荐、历史热门商品、最近热门商品、商品平均得分统计推荐、基于隐语义模型的协同过滤推荐、用户商品推荐列表、商品相似度矩阵、模型评估和参数选取
  10. NJUPT - Java Swing布局 - 闹钟提醒