zoukankan      html  css  js  c++  java
  • 携程集团机票业务技术总监宋涛:扛得住流量洪峰,才是优秀架构师

    云加社区沙龙online「高可用结构之流量洪峰」专题分享倒计时1天! 本文是云加社区对此次活动出品人,携程集团机票业务技术总监宋涛老师的特别约稿,来跟大家谈一谈:架构师究竟是什么?

    一、“架构师”究竟是什么?

    在软件行业,是否要设立专职架构师,是一个充满争议的话题。一方面,技术日新月异,架构的重要性日益增长,这种情况下需要有人带领大家做重大的架构规划并落地实施;另一方面,架构师又常常会因为架构上的各种坑而被大家抱怨,甚至有一部分公司取消了专职架构师的职位。

    在我看来,架构师更像是一种职责,一种各级技术人员或多或少都会涉及到的职责。其中既包括总裁级别的杰出工程师(Distinguished Engineer)设定技术方向、规划和规范,也包括一线工程师进行框架选择、技术迭代。需不需要设立专职架构师是一个见仁见智的问题。现在很多的国内外互联网大厂中,其实是没有架构师这个职位的。但这并不妨碍技术人在架构领域不断做出新的突破。

    二、成为一名优秀的架构师需要有哪些特质?

    在我看来,要成为一名优秀的架构师需要有三方面的特质:

    首先,架构师要对业务领域非常了解,并有足够的能力来抽象出架构和系统相关的需求。在系统设计开发过程中,我们可能会注意到有些同事对业务细节理解很深,但是缺乏进一步抽象的能力来深挖系统的非功能性需求,包括安全、数据持久、系统可用、操作延时、数据一致性等。

    其次,架构师要掌握主流技术及相应的优缺点,并有进一步学习的热情。架构师要做的一个重要工作是根据业务需求做出技术选择。所以,即要对当前技术的选择范围有明确的意识,又有能力在多个技术方案中间进行权衡比较并做出相对正确的决定。这些技术包括但不限于主流编程语言,应用框架,云计算产品,容器系统,开源工具等。

    最后,架构师要对如何提升系统可靠性以及开发运维效率有自己的方法论。这其中可以学习其他公司的成功经验,例如谷歌公司的SRE原则和实践,亚马逊公司的Operation Excellence等。同时,在公司内部要建立事故复盘和教训分享的有效机制。一名优秀的架构师,可以在学习和实践中不断的成长,但最终一定是在经过多次的事故复盘(COE)和灾难恢复(DR)后才能蜕变升华。

    三、流量洪峰对架构师的成长价值

    在评估一个软件工程师能力时,一个经常被问到的问题是,“你所设计开发的系统中,峰值流量是多少QPS,以及相应的容量SLA是多少”。

    对于一个没有经过流量洪峰考验的系统,很难评估它的系统可靠性和设计合理性。因为,架构本身是一种权衡(Tradeoff)的艺术,而只有经过流量洪峰考验的架构师,才能让人相信他在权衡的时候,坚持了正确的设计理念和最佳实践。

    举例来说,对于流量很小的非核心服务,往往使用两个服务实例和一个数据库实例就可以解决基本的功能问题。而当流量上升之后,你就需要考虑增加服务实例和数据库实例的数目。而当流量继续上升之后,你又不得不加上各种缓冲,同时不得不处理缓冲数据一致性的问题。同时,随着架构复杂性的上升,你又不得不考虑更多的失效场景,增加系统健壮性(Resilience)和容错性的改造。

    遗憾的是,在面试和技术讨论中,很少有人能够出色的回答前面提到的问题。大部分工程师的经历仅限于个位数的QPS,甚至连QPS的概念都欠缺。在大的企业当中,往往只有从事核心业务的工程师才有机会去面对这些挑战;相应的工程团队也往往具有相对最高的架构和设计水平。

    结束语

    我受到腾讯云「云加社区」的邀请,担任「云加社区沙龙online」「高可用架构之流量洪峰」专场的出品人及讲师。这次获得的议题,将会从一些流量洪峰的实际场景出发,与大家分享高可用架构的实战经验。其中,涉及到缓冲策略,调度方法,应用架构,可靠性实践等,这些也都是我很感兴趣的点。

    同时,腾讯云CVM总监李力、贝壳金服小微企业生态CTO史海峰、奈学教育科技创始人&CEO孙玄,三位业界朋友,也会就「如何成长为一名优秀架构师」这一话题进行分享,相信这一分享也会使很多技术人获益。

    最后,我也会在4月24日晚,从实践角度,与大家分享“携程机票查询系统的架构升级”,期待与大家相约! 沙龙观看地址:cloud.tencent.com/developer/s…,欢迎感兴趣的同学预约~

    作者简介

    宋涛,携程集团机票业务技术总监,北京大学计算机系毕业,加州大学计算机博士。先后从事微软公司Windows团队,智能搜索团队的架构和技术管理工作,Amazon公司云服务部门云存储管理服务技术主管。

  • 相关阅读:
    SpringBoot+Mybatis 实现动态数据源切换方案
    mySql的case when用法
    mySql中The user specified as a definer ('root'@'%') does not exist
    jquery获取表单中的数据
    antdesign的input增加自定义校验规则
    net.sf.json将string转为map
    Js实现回车登录,监听回车事件
    css实现图片动画效果
    Freemarker + xml 实现Java导出word
    tomcat的jsp页面超过65535,导致500报错
  • 原文地址:https://www.cnblogs.com/qcloud1001/p/12739406.html
Copyright © 2011-2022 走看看