这本书刚好是今年618在京东图书节时候买的,也挺佩服京东,从业务驱动到技术驱动,不断升级技术和架构,实现更复杂的业务和提高系统的高可用性、稳定性。
讲几点对这本书的理解。
合适的时机用合适的方案
在京东最开始的时候,只有五个人的研发团队,他们用的是比较有年代感的ASP技术,实现了简单的商品展示网页。对于那个年代,商品数比较少,业务也没有这么复杂,如果按照现在的架构进行设计,分布式、多数据中心、分层设计、微服务等等为了高性能和模块解耦的方案,估计按照当时的研发能力,无法保证编码能力和项目正常上线时间。
所以在业务简单的时候,可以预留一点扩展空间,但要弄清楚项目的意义,不要盲目的为了技术而技术。
单体应用最后都会发展成分布式
MVC构架,相信大家都不陌生,Java后端刚入门的时候,学习搭SSM框架还用了一两天才正式打通MySQL到JSP的展示。而且一开始的是单体应用,后端代码和前端html代码都糅合在一个项目中,前后端改了代码之后,都要重新编译和打包,最后在Tomcat容器里重新启动,浪费了不少时间。
现在有了分布式,而且前后端进行了分离,可以做到多服务部署,前端进行负载均衡,将流量更加合理的分配到合适的服务器上。一个整体的应用,通过拆分不同模块,按照功能进行划分,各个模块分开开发,更改代码后,只需要部署自己模块的代码,减少时间的浪费和解耦各个模块。
分布式可以选择zookeeper作为注册中心,dubbo作为RPC框架,数据库使用分库分表技术等提高系统的可扩展性和高可用性。
架构升级和不断迭代
刚开始整个系统的设计可能考虑得不充分,与其它系统的交互、安全问题、性能问题等等都是需要不断完善的。例如京东的智能客服系统,咚咚和JIMI,前者是人工客服,后者是客服机器人,两个产品刚开始是独立发展的,后来逐渐融合,最后到现在的无人客服。
从一开始的用户自主选择人工或者JIMI进行接待,到现在的无人客服模式,先让JIMI优先接待,人机无缝衔接,让用户无感知。咚咚和JIMI的架构服务设计也是不断升级,到现在覆盖B端、C端、接入服务、通用服务、定制服务、运营服务、运维服务等服务,覆盖多种业务场景,以技术驱动业务成长。
数据为王
从这本书中,看到很多使用大数据的场景,例如预测用户的购物行为,用京东游览过的商品,后端会收集数据,通过spark、haodoop等工具,分析数据后,推荐给用户更多相关联的商品;有利益就有流量黑产,不良商家通过恶意获取流量或者刷单等行为,提高商店的搜索率和好评率,京东开发了反作弊系统,通过分析用户ip和用户的购物行为等等方面,建立模型,进行机器学习,将异常流量进行过滤;建立监控平台,通过收集订单数据、用户反馈数据、服务质量等各种基础数据,对离线数据进行加工,将数据存储在MySQL、HBASE、ElasticSearch中,通过kafka实时采集线上产生的消息,最后打造出一个星盘系统(商店销售全流程服务质量的监控平台)
在数据爆炸的21世纪,如何筛选数据,从中抽取对自己最重要和有理的信息,建立合理的数学模型,训练机器进行学习。(果然需要良好的数学基础才能去玩数据分析-_-||)
更准确地说,它不是一本纯粹的技术类书籍,讲的更多对于一个项目的管理和整体发展过程,这个项目为了什么而启动,还有在这个过程中如何升级架构和每个版本迭代主要升级的功能。
当然,当时618时还买了很多关于框架、架构的介绍书籍,再去了解一下,加深理解,然后再继续回顾和学习基础吧。