专业技术顾问王庆友:大型App服务端架构演化及最佳实践

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
查看查看122 回复回复1 收藏收藏 分享淘帖 转播转播 分享分享 微信
查看: 122|回复: 1
收起左侧

专业技术顾问王庆友:大型App服务端架构演化及最佳实践

[复制链接]
攻城狮 发表于 2016-10-30 05:33:52 | 显示全部楼层 |阅读模式
快来登录
获取优质的苹果资讯内容
收藏热门的iOS等技术干货
拷贝下载Swift Demo源代码
订阅梳理好了的知识点专辑

在WOT2016移动互联网技术峰会上,王庆友前1号店首席架构师兼独立技术顾问为我们讲述App服务端的变化过程。王庆友老师从四个方面为我们讲述:架构历史和问题、最新服务端2.0架构、App架构总结及架构本质的理解。

专业技术顾问王庆友:大型App服务端架构演化及最佳实践

专业技术顾问王庆友:大型App服务端架构演化及最佳实践 - 敏捷大拇指 - 专业技术顾问王庆友:大型App服务端架构演化及最佳实践





1、架构历史和问题

最初架构,可以称为0.1版本,架构本身非常简单了。首先有一个无线接口模块,统一对接App的请求,内部是利用各个业务开发team提供架包完成业务逻辑返回结果。这个架构有两色,一个是集中式架构,另外是架包物理耦合。对于一开始提供一个简单的App还是非常有利,但是后续弊端很明显,主要有两块:第一,这是物理架包耦合,各个业务team负责架包开发,开发完需要同步给服务端开发team,经常导致双方通讯出问题,导致架包版本不一致,出现各种各样的坑。第二,对服务端开发team也很有挑战,他拿到架包,架包太原始了,需要对架包在基础上做很多梳理整合,汇总数据,提供给客户端,相当要理解所有1号店的业务逻辑,这个挑战性非常大。

1.0架构,功能越来越多,对各个业务研发team,负责这个接口,一般情况下还是以PC端为主,不会提供单独应用实现无线功能,会在PC端Web系统提供简单的处理,无非还是HTTP请求,相当于在Web系统开了一个无线小窗口来满足App的请求需要。这个架构对于提供业务功能还是很有利的,因为每个业务team非常熟悉本领域的业务逻辑,但是因为散带来后续一系列问题。第一个问题,紧耦合,虽然不是架包物理耦合,无线小窗口跟Web系统耦合在一起,有两块独立的需求。第二问题,每个业务team拿到接口以后,更多关注业务功能开发,通用功能不大会关注,无线也有自身的特点,需要一些通用功能开发,包括无线协议分装、安全、性能监控、日志等等。




2、最新服务端2.0架构

在2.0架构,无线端处理过程跟Web端处理过程,两个完全相互独立,以前无线总体上是依附于Web系统,现在是完全独立的。接下来具体介绍一下无线网关内部三个层的设计。每个具体功能又是相对独立的,分装成拦截器的形式,各个拦截器共同组成处理链,分为Inbound进来的处理链跟outbound出去的处理链。一个请求过来首先经过Inbound处理,再进行具体业务处理,又反过来进行outbound处理,这里业务处理不是属于通用层,放上去只是为了更好说明目的。如果一个拦截器处理完以后,产生一些结果,后续拦截器想利用这个结果,是通过统一上下文对象传递信息。




3、App架构总结

路由层,根据无线请求过来的URL里有路径信息,转发到具体的适配器。适配层,定位是各个业务系统在无线前端代理,是起到代理的作用,是根据预处理过的、通用处理过的请求,转发到后端实际业务系统做进一步处理,主要是适配和转发目的。具体接口也是把参数清晰分为两类:一类是偏业务参数,一类是偏设备参数。在无线网关系统级功能在通用层得到很好的处理,业务逻辑也是通过适配器做代理,后续也是得到很好的处理。服务升降级,中心化对外提供服务,每个无线请求过来,是用Java线程,都会有线程去对应做相应的处理,这部分资源是共享的。




4、架构本质的理解

一个系统开始比较简单、比较清晰,随着功能越来越多,像机房一样布线越来越多,慢慢整个体系非常混乱,架构整个系统混乱度增加,慢慢失控了。在物理上热力学有个很著名的熵增加理论,一个分配系统如果人为不对它进行干预,自然情况下慢慢会从有序变成更加无序,它的熵不断增加,这个熵是衡量一个系统的无序度。这时就需要架构介入,对系统进行有序化重构,为这个系统建立一个秩序体系。在这个秩序体系里,每个模块、每个功能都有一个清晰的