2016年9月22日-23日,由CSDN重磅打造的SDCC 2016大数据技术&架构实战峰会(杭州站)将在杭州举行。大会前夕,京东商城架构师杨超接受了CSDN专访,谈及了对架构的理解、京东现有的电商特点,以及如何支撑高流量和高并发之道。
嘉宾介绍:
2011年10月加入京东。先后负责和参与京东的IM项目、交易系统 .NET 转 Java、购物车、库存、多中心交易等核心系统的研发和架构升级工作。
专访正文
CSDN:请先和大家介绍下您和目前所从事的工作,以及关注哪些技术领域?
杨超:大家好我是杨超,目前主要在做京东交易平台的研发和架构工作,主要关注的技术领域,高可用、高并发、分布式,以及一些基础技术、新语言、存储、容器、系统等。
CSDN:作为一名架构师,能否谈下您对架构的理解?
杨超:个人觉得架构可理解为总结归纳。让我们的系统更简洁、更适应需要承载的流量和业务需要,最终为用户服务。架构本质是研发和需求的提纯,而研发基础是建立在需求,需求本质是为了服务于用户/更好的服务于用户。
架构于不同系统,不同公司文化,不同公司层次(初建期,发展期,成熟期),都有着不同的定义和理解。
- 公司初建期:用户服务基础。
- 公司发展期:用户服务基础,满足高速扩充的业务需求,提纯基础结构。
- 公司成熟期:用户服务基础,满足业务需求,提纯基础结构,技术驱动衍生新生态系统。
架构又可分:基础架构、系统架构、业务架构、代码架构。优秀的架构特点,简单,易懂,多变,相对灵活(根据系统迭代期、研发理解能力、团队大小取决)。
CSDN:您认为具备哪些素质才能成为是出色的架构师?
杨超:个人认为,一个出色的架构师,至少有一门用很深的编程语言作为常委语言,一个出色架构师需要突出代码读写能力作为基础。读代码能力尤为重要,要能结合代码读出业务逻辑,以及里面优秀架构思路,不足之处,读代码同时学习。
- 学习能力,思维方式:学习技术、框架,不光会用、知其原理、并能举一反三的思维。结合已学到的知识组合创新思维,将繁杂的事,简单化处理。
- 忍耐能力:作为一个团队技术头头,一般都会有一些孤独感。可能这就是大家常说的技术范。再就是对于系统改造循序渐近的,得忍受那种全部都重做的冲动,一点一点的进行处理。
- 重生能力:作为架构师,熟悉自己所在团队和系统是必然的。抽时间让自己跳出原有既定思维和惯性,重新认识自己团队和系统。
- 沟通能力:需要跟与人打交道,当然需要良好沟通能力了。
CSDN:有别于社交网络、搜索和游戏等网站,电商网站的用户流量有哪些特点?
杨超:个人觉得电商网站流量特点,突发性流量暴增,根本无法精确的预估的量。可能刚开始几万的量,突然几分钟就上到几十、几百、上千万、十倍百倍千倍的往上增。相比社交、搜索、游戏网站,差异最大点,就在直接牵涉精确的金额的问题。所以对于精准和延时,缓存有一些差异化的。
- 社交网络:一般延时可做大点,及时性通讯可以端对端。
- 搜索:一般多级缓存,大多计算好往前推,延时也可做大点,另外搜索本就模糊的匹配,精准性方面要求没那么严格。
- 游戏网站:大多客户端大型游戏,客户端数据缓存几秒之后再进行传输,或者一些直接本地存数据,后端根服务器交互。
根据上面的比对,还是有比较真实感知到是有差异的。差异点主要集中在于 money 交易这一点上。
CSDN:据了解,京东的业务种类繁多,涉及上亿种SKU,内部系统极其庞大复杂,能否详细谈下京东的系统有着怎样的特点?
杨超:个人感觉京东系统复杂度相比业务还是好很多的,(下图服务概况)内部系统也没有想象的那么极其庞大,相对于其他电商确实会多一些系统,因为京东集自营、平台于一体。如果按照淘宝系统、天猫系统加起来总和,个人感觉应该京东的系统还是会少一些。
京东系统特点:深度服务化,另外就是业务逻辑复杂,还有一个特点就是水平扩容的能力很强。
CSDN:高流量、高并发情况下,如何保证整个系统的可靠性和稳定性,是众多电商企业研发团队都在思考的问题。京东遇到了哪些问题?
杨超:在京东遇到问题太多了,高流量、高并发是交易所有系统都面临这样一个问题,记忆深刻的用户刷爆品商品的问题,还有利用软件来刷的。
- 入口层:过滤掉大部分软件刷的情况,衍生了风控系统,秒杀系统。
- 应用层: 读写分离、缓存、队列、令牌、系统拆分、隔离、系统升级(可水平扩容方向)。
- 其他:
- 时间换空间:降低单次请求时间,这样在单位时间内系统并发就会提升。
- 空间换时间:拉长整体处理业务时间,换取后台系统容量空间。
- 可靠性和稳定性:会做一堆的容灾方案,从机房、网络、应用、存储、渠道、业务等多维度容灾。做一堆的降级策略,从流量、应用、渠道、业务 等对多维度做。
CSDN:其中,作为电商的核心系统之一,能否简单介绍下京东核心的交易系统的架构演进?
杨超:系统的架构演进,个人实际感受就是那种用户倒逼的感觉。2011到现在每年大型促销、流量、订单量不断翻倍。推动你去做异构、拆分系统、异步、服务化、容灾、降级等等,一堆堆的优化。
CSDN:您如今是如何安排自己的新技术学习、研发团队管理、编程、生活等时间的?有什么心得和体会可分享?
杨超:目前个人在新技术学习上,关注一些前沿热门的技术,更多关注新的编程语言,比如GO、Python。关于一些技术框架,实际上最终实现都大同小异,会去了解实现原理,以及做的好的地方,比如Elasticsearch底层用的Lucene。而Lucene之前用过还专门看过源码,基本都是通的。加入了分布式存储的副本概念,以及sharding子机器并行执行理念,收集结果返回。
管理、编程、生活方面基本关注需求设计,出现问题点,再就看代码。编程方面,写代码不再像以前那么多,更多在阅读代码。在需求设计,阅读代码,感知整体情况。通过解决问题点去衍生新的东西,生活中会经常浏览一些技术创新东西,在一些技术分享组织认识一些各个方向的专家,聊聊天,了解行业的整体趋势,走向。
CSDN:在本次SDCC 2016(杭州)架构峰会上,您分享的话题是?
杨超:我这次分享的主题是《京东交易架构演进-高可用服务的保障》,主要是京东商城交易平台的架构,大促中的技术演进之路。分布式结构思路;合适时机进行拆分;高并发、高可用、如何诞生的。