专栏首页华章科技架构干货:来听听架构大师 Martin Abbott 怎么说

架构干货:来听听架构大师 Martin Abbott 怎么说

SA-Summit 2017全球软件架构技术大会

10月26-27日 · 上海

大会邀请到来自 世界级软件架构大师 & eBay 前首席技术官 Martin Abbott,Facebook 工程经理、Uber 实时流处理系统主管、Airbnb 资深工程师、Pinterest 大数据技术主管,阿里双11系统管控调度技术专家、微信高级工程师……等众多架构领域技术专家,与大家面对面深度交流分享!

架构扩展性的13条最佳实践

以下内容节选自:世界级软件架构大师 Martin Abbott 亲研架构秘籍

阅读原文,可免费获取 Martin 亲研秘籍!

1. 尽可能多地使用异步的通信方式

同步调用会同时将两种不同服务的可用性捆绑在一起。如果其中一者产生错误或是堵塞,另一者也会受到影响。

2. 使用用户泳道来隔离错误

根据用户划分来创建硬件隔离的“泳道 Swim Lanes”。这可以防止因为某个客户所产生的问题而影响其他客户,同时有助于诊断问题和代码发布。

3. 使用多层次的缓存

在多个层上尽可能地使用缓存,如数据库前的对象缓存(例如:memcached),或是页面内容缓存(例如:squid),边缘缓存(例如:Akamai)。

4. 监控应用程序性能

首先要站在客户的角度去分析你的程序性能。从外部网络进行监控测试,可以模拟真实的用户体验。同时,还可以根据查询和事务操作上执行次数和耗时数据,来监控程序的内部工作情况。

5. 复制数据库

复制数据库可以帮助还原数据,同时把读取的负载分配到多个实例。

6. 使用切片(Sharding)技术

根据不同服务或(和)用户使用的量级来分割应用和数据库。虽然它会给程序带来一些轻量的复杂度,但在规模上这样做更易于扩展。

7. 尽可能少的使用关系型数据库RDBMS特性

尽可能使用OLTP(on-line transaction processing,联机事务处理 )数据库作为存储设备。因为要确保ACID属性,关系型数据库在扩展型方面会有很多挑战。你的交易越依赖关系型数据库系统(RDBMS)提供的功能,那么系统在扩展时你投入的负载就越大。建议从数据库中将主要的业务逻辑(例如存储过程)都移到应用程序或服务内。当系统需要做大规模扩展时,应该通过应用或服务来扩展, 而不是通过SQL。

8. 在服务器上小批量地部署新代码

尽可能小批量地在服务器上部署新代码,而不要让整个站点关闭。这要求所有代码都要向后兼容,因为在部署时你会有两个版本的代码同时运行。这种方法可以帮助我们方便地找到应用质量或者L&P测试(负载性能测试)所遗漏的问题,同时最小化对客户的影响。

9. 在部署前执行负载与性能测试

一定要在产品部署前,执行负载与性能测试。虽然这不会发现所有问题(这也是为什么我们需要回滚 Rollback的能力),但它很值得做。

10. 不能回滚注定失败

确保所有版本的代码都有回滚能力,在准生产或者QA环境演练,必要时在生产环境中用它来解决客户的问题。如果没有经历过无法回滚代码的痛,还继续冒险地“修改-发布”代码,那么你会在未来某个时刻体会到这种痛苦。

11. 容量规划 / 扩展峰值

对于每一层、每一个服务,都要清楚它有多大容量。使用 扩展峰值(Scalability Summits) 来规划容量的增长需求。

12. 问题根源分析

确保有强大的学习文化,当问题出现时,一定要确保找到问题根源, 才能最终修复问题。

13. 从一开始就重视质量工作

架构质量从一开始设计就要考虑进去,质量不能靠测试来解决。测试只能发现研发过程中带来的问题。

首席技术官/架构师高端培训

10月24-25日,Martin Abbott 还将带来《首席技术官/架构师高端培训》内地首讲!本次培训专为 CTO,技术 VP,首席架构师 量身打造。

Martin 从 eBay 创业初期直到发展为全球500强企业,担任 eBay 高级技术副总裁以及首席技术执行官,并且在这20年里,合作超过350家企业,帮助企业系统化地清除扩展性道路上的障碍,使得企业在技术和业务上取得前所未有的成功。

Martin 多年的一线实践经验和独到的专业见解,是科技企业及技术领导人突破瓶颈快速提升的宝贵财富。

本文分享自微信公众号 - 大数据(hzdashuju)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-09-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 大妈卖煎饼月入3万?Excel帮你揭开真相

    一位煎饼摊的大妈跟顾客发生了争执,大妈生气的说:“我月入3万,怎么会少你一个鸡蛋!”这下让买煎饼的白领们瞬间哑口无言。

    华章科技
  • 基于Python实现交互式数据可视化的工具,你用过几种?

    我教授了一门关于数据可视化的数据科学硕士课程。我们的数据科学硕士项目是一个为期15个月的强化项目,这个项目已经成功地培养了许多优秀的数据科学家。

    华章科技
  • 我们对比了5款数据库,告诉你NewSQL的独到之处

    对大多数开发人员而言,SQL 以及 MySQL、PostgreSQL 等关系数据库管理系统(即 RDBMS)并不陌生。RDBMS 的基本架构原则已历经了数十年的...

    华章科技
  • 解决wordpress搬家后,主题、插件升级时出现“无法创建目录”的问题

    用户1696846
  • 编程小白 | 每日一练(184)

    这道理放在编程上也一并受用。在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从编程小白进阶到高手,需要经历的是日积月累的学习,那么如何学习呢?当然是每天都...

    闫小林
  • 数据库-腾讯云数据库优惠活动

    双节点架构,自动容灾。提供备份回档、监控、快速扩容、数据传输、安全审计、只读实例等运维全套解决方案

    用户1361591
  • 分享一份高质量的数据可视化作品指南

    许多数据可视化工作者都提到一件事,就是开发可视化作品变得更简单了,但是效果难以评估。本文翻译自toptal的博文,让我们来看看优秀的可视化实践是如何实现的吧。

    1480
  • mongoDB入门教程三:数据库的创建和删除(增删改查)基本命令

    2:必须插入一个数据。 数据库中不能直接插入数据,只能往集合(collections)中插入数据。

    祈澈菇凉
  • 【周末漫谈】说说数据可视化技术四大派系

    数据可视化,是关于数据视觉表现形式的科学技术研究。其中,这种数据的视觉表现形式被定义为,一种以某种概要形式抽提出来的信息,包括相应信息单位的各种属性和变量。这个...

    钱塘数据
  • 复杂和变态的环境下jsp连接数据库

    1、jsp网站没有写入权限,有执行命令的时候,低权限,为了可以方便快速的读取文件。并且建立数据库连接可以使用小技巧在目标服务器上,搭建一个WEB服务。此WEB服...

    周俊辉

扫码关注云+社区

领取腾讯云代金券