版权声明:本文由龚皓原创文章,转载请注明出处: 
文章原文链接:https://www.qcloud.com/community/article/202

来源:腾云阁 https://www.qcloud.com/community

2015年延续2014年的架构和成本优化思路,运营管理部在15年组织各大BG开展了大量的架构评审和成本优化工作。作为规划组的一员,在全年21个规划产品的评审中我主要参与了其中11个。在前期和业务产品,开发及运维的交流和准备材料过程中,发现虽然已经经过了一年的评审,沟通和交流,但大家对为什么要做架构评审,怎样做架构评审,其中的思路和流程都还存在一定的不了解的地方,所以这里自己先抛砖引玉,跟大家聊聊讨该如何做架构评审。

先来说说设备

设备是支撑公司业务运营的最基本实体,随着公司业务的不断发展壮大,公司的设备总数也于去年突破了50w台大关。评审一个业务的架构,首先得从其设备使用的合理性上来看。

总的设备架构评审思路可以简单归纳如下4步:

  1. 设备需求驱动形态 -- 确认设备需求动因和相关指标;
  2. 关键路径的技术架构 -- 确认架构是否合理;
  3. 需求资源推算模型 -- 资源预算和指标关联是否合理,架构分布是否合理。
  4. 资源优化计划 -- 后续是否可以释放部分资源,降低成本。

第一点比较好理解,设备的需求动因,我们需要描述清楚涉及设备的关键业务指标以及业务指标的变化情况,通常这些指标在做年度预算的时候能够定义清楚。如果当时没有清晰的定义,我们这里可以根据业务的实际资源需求情况来定义清楚关键指标。后面3点是一个架构评审的关键所在,我们这里重点展开来讲。

我们谈一个产品的架构,最开始当然先要从一张总架构图开始讲起。比如下面这个手Q的消息交互架构图。

一个清晰的架构图至少需要具备如下要素:

  1. 描述总体架构关键模块构成和各模块对应的设备数目;
  2. 业务请求交互图,描述业务关键路径上的模块交互流程,需包含请求量/包量及对应的设备数;
  3. 描述设备需求中关键路径的构成情况和模块之间的交互逻辑。

定义出关键路径和关键业务模块后,这些模块需求和架构是否合理,我们需要把这里面的内容给评委展开来重点解释。

针对每一个关键模块,我们首先需要:

  1. 描述在总体系统架构中该一级模块的主要核心功能;
  2. 描述该核心模块的处理业务逻辑分布,如重要业务逻辑的资源占比情况。

比如下面手Q SSO模块的描述

定义出核心关键模块之后,我们需要进一步解释其资源使用的合理性。这里我们主要针对最常见的处理类和存储类两类模块来说明,其他比如吞吐量类,缓存类的模块可以依此类推。

针对处理类模块,我们通常需要说明:

  1. 给出核心模块的资源模型,如单机每秒建立连接数,每秒包处理能力;
  2. 描述核心模块的当前瓶颈所在;
  3. 描述核心模块的设备类型;
  4. 描述核心模块的最大支撑能力,如单机峰值Qps;
  5. 根据预估的业务指标结合模块单机处理能力来评估所需的设备数。

而对于存储类的模块,我们通常需要说明:

  1. 给出核心存储单元的资源模型,如每个存储单元所占用的字节数,每个存储单元包括哪些字段信息,主要字段的访问频次,每份数据存储份数等,并根据单份的模型结合业务后续预估的指标来估算总体的存储量;
  2. 描述核心存储单元的当前瓶颈所在。

同时,针对架构分布上,由于公司IDC资源的地理分布不平衡性,某些特定的地理区域由于历史和储备的原因,IDC资源会较为紧缺,所以我们在架构评审的过程中也要对业务模块的物理分布情况来评估其合理性,比如如下两点:

  1. 描述总体现有架构模块的物理分布情况和容量模型,包括架构是否有Set化,其Set分布,数据的异地存储份数说明,以及容灾方式;
  2. 描述新增预算资源的分布模型以及是否可以异地化部署的评估。

在Review过架构和模块的现状后,业务自己通常也会发现一些自己架构上的问题,这些可能是历史原因的遗留问题,也可能是技术进步发展了有一些更优的解决方案,所以我们在架构评审的最后可以针对这些问题来提出进一步的 优化,给自己定一个更优的目标,追求技术上更进一步。主要逻辑可以分为下面几步:

  1. 描述可能的柔性策略、优化手段和方法(包括技术上和运营上的);
  2. 描述优化后的系统架构图和模型;
  3. 描述优化后的目标和成果

而在优化手段上,我们也可以结合公司其他业务常用的优化手段,梳理总结出一套可能的优化方法,供大家参考。

  1. 资源的最大化整合和复用:比如运用虚拟化,docker等技术,来讲设备的利用率发挥到最大优势,充分压榨单机的处理负载,提高单机的处理能力。
  2. 新技术和新处理框架:比如采用新的处理框架,从http协议改为直接tcp处理,从原来的同步qzhttp改为异步rpc处理,以及充分利用GPU并行能力和FPGA可编程硬件相比软件处理的高效性来提高编码和压缩的效率等等,来提升单机的效率。
  3. 新协议和新格式的利用:这块在存储类服务中最场景,比如用压缩效率更高的webp来替代传统的JPEG,然后又采用更高的H.265编码格式的BGP图片来替代webp,这些新格式的出现对于日益增长的海量数据又是一个重要的优化手段。
  4. 存量和长尾业务的规整:腾讯公司到现在也经历了18年的春夏秋冬,各种业务浮浮沉沉保守估计也有上千了,对于这种存量和长尾型的业务,我们如何对其进行适当缩容和最小化运营,甚至是推动其退隐下线,也是一个必要的优化手段。
  5. 提升资源管理和流转效率:比如资源直供模式,闲置设备,闲置时段的离线计算使用,比如如何有效的利用存储类设备的CPU资源来进行计算,这些也都是架构评审优化中值得考虑的问题。

好了,前面关于设备上的架构评审流程和方式讲了这么多,相信如果大家都按这么思路来理解架构评审,再加上自己对业务和技术的充分理解,跟boss过的架构评审将不再是个问题,更多的是对大家技术的展现了。

设备先讲到这里,有机会我们继续来解析如何做带宽的架构评审。See you again!

转载于:https://www.cnblogs.com/purpleraintear/p/6054041.html

架构评审方法和思路总结相关推荐

  1. 朱晔的互联网架构实践心得S1E9:架构评审一百问和设计文档五要素

    朱晔的互联网架构实践心得S1E9:架构评审一百问和设计文档五要素 [下载文本PDF进行阅读] 本文我会来说说我认为架构评审中应该看的一些点,以及我写设计文档的一些心得.助你在架构评审中过五关斩六将,助 ...

  2. 亿级流量架构之服务器扩容思路及问题分析

    为什么要扩容 说人话就是, 无论如何优化性能,能达到的最大值是一定的,对于一个用户量大的应用,可以对服务器进行各种优化,诸如‍限流‍.资源隔离,但是上限还是在那里,这时候就应该改变我们的硬件,例如使用 ...

  3. 纵览神经架构搜索方法

    从谷歌渐进式的架构搜索到 CMU 的可微架构搜索,利用神经网络自动搭建不同的神经网络架构已经受到广泛的关注.最近弗莱堡大学的研究者发表了一篇论文纵览不同的神经架构搜索方法,他们从神经网络的搜索空间.搜 ...

  4. 浅谈系统架构设计-从架构设计原理、架构设计原则、架构设计方法展开

    我们工作中一直强调要做架构设计.系分,最近前端同学在追求前端质量提升的时候,也在进行架构设计.前端系分的推广,那到底什么是架构设计和系分?该怎么做架构设计和系分?本文尝试对架构设计进行全面的介绍和分享 ...

  5. 亿级流量架构:服务器扩容思路及问题分析

    为什么要扩容 说人话就是, 无论如何优化性能,能达到的最大值是一定的,对于一个用户量大的应用,可以对服务器进行各种优化,诸如限流.资源隔离,但是上限还是在那里,这时候就应该改变我们的硬件,例如使用更强 ...

  6. 品牌网站建设的制作方法和思路

    一个企业的品牌网站往往代表着企业的形象和实力,企业进行品牌网站建设可以为企业带来更多的知名度和口碑,也可以宣传一个企业的产品和服务,让人们更加全面的了解企业然后吸引更多的用户去关注和消费,为企业获得更 ...

  7. 架构评审,技术总监怒了,丢给我 400 个架构案例,先研究透!

    最近,我看到一个群里关于架构师的讨论: "架构师很'高大上'啊,平常画画架构图,对我等程序员指指点点不就可以了." "感觉我们公司架构师没啥用啊,可有可无吧." ...

  8. 企业架构(六)——TOGAF总论及架构开发方法(ADM)概述

    一.TOGAF概述 TOGAF(The Open Group Architecture Framework) 可以说是当前最为流行的企业架构框架理论了,可以说是企业架构理论从政府进入到社会各研究机构的 ...

  9. 产品架构开发方法(2011中国软件技术大会)

        上周末在国家会议中心举办的2011中国软件技术大会上我做了一个分享:产品架构开发方法.很高兴能在不同的大会上做演讲,但更高兴的是能够结交更多的朋友. 这个演讲内容包括了企业架构.业务分析.软件 ...

最新文章

  1. ORA-01855: AM/A.M. or PM/P.M. required错误解决
  2. CV之IS:计算机视觉之图像分割(Image Segmentation)算法的挑战任务、算法演化、目标检测和图像分割(语义分割/实例分割/全景分割)的对比
  3. Bech32编码 (1)产生背景
  4. 中医药专家开年会 推荐11种最靠谱的抗癌食物
  5. Java Agent的隔离实现以及卸载时一些坑
  6. idea struts插件_使用Struts 2的查询网格(无插件)
  7. Android 系统(81)---Android permission 动态申请、授权
  8. linux 查看 pub文件夹,linux 文件/目录的属性及权限
  9. instantclient php,Oracle 轻量即时客户端Instant Client安装配置
  10. ORL数据集百度网盘
  11. r语言和python的区别-r语言和python的详细对比
  12. KEIL MDK平台 S3C2440 C语言软件仿真
  13. nic占用率很高 Linux,linux – 许多丢弃了我的NIC数据包
  14. 三星“掌门人”李在镕身在看守所 但仍“遥控”三星
  15. 谈谈我对云原生与软件供应链安全的思考
  16. mysql中的表自增的id太大了,可以重新设置自增起始值
  17. 软考知识点---03校验码
  18. 【Python黑帽子】——简易的ZIP文件密码破解器
  19. 利用MyEclipse的TCP/IP Minitor捕获Http的请求和响应数据包
  20. Vue3中Element-Plus的el-upload限制只上传一个文件(最简单明了)

热门文章

  1. CSS3学习笔记1:结构性伪类选择器
  2. HTML标签详解之格式标签
  3. 计算网络经典书籍--计算机网络:自顶向下方法
  4. golang中的delve
  5. golang显式类型初始化
  6. STM32固件库文件树及构成详解
  7. Linux下GCC与G++的区别和联系
  8. JUC并发编程九 并发架构--CAS
  9. Dubbo的核心玩法三
  10. MVVM架构~knockoutjs系列之验证成功提示显示