作者:李元洪
1.背景介绍
网易美学于2016年8月上线,是以产品和技术为核心,以丰富的美妆产品库,用户使用合辑心得为内容载体的社区型产品。和绝大多数初创团队技术架构选型一样,为了快速上线,美学在一开始选择了单应用模式,所有的功能都打包放在一个war包里,基本没有外部依赖,应用部署在一个tomcat容器里,包含了client,web,运营后台等所有的逻辑,这个状况一直持续到2016年12月,重构就从这样“大杂烩”的背景开始。
2.单应用模式的美学

单应用比较适合比较小型的项目,优点总结如下:
-
开发简单直接,可以集中控制
-
功能都在一个应用里面,没有分布式管理的开销(分布式事务,跨域性能,数据一致性)
-
一体化的mvc,结构简单
但是它的缺点也非常明显,新美业务膨胀开始后,这一架构受到越来越多的限制
-
所有开发都在一个应用改代码,导致开发效率低
-
构建时间较长,任何小的需求变动,都要整体编译打包部署
-
业务之间相互影响,修改一个模块的功能,可能影响毫无关联的另一个模块
-
稳定性不高,强依赖应用服务器和数据库的处理能力
3.2技术准备
3.3 服务规范制定
-
服务协议层(定义服务接口,数据传输对象,异常处理机制)
-
服务实现层,可以是数据库的crud,也可以是第三方系统的网络调用
-
服务依赖层,是组装各个服务,实现具体的产品业务逻辑。
-
避免跨层调用
4.服务化实施过程
4.1 业务建模
这一步是服务化的基础,需要拆分多少子服务,服务间的依赖关系,都需要通过业务建模表示清楚。
新美是以美妆社区为业务载体的应用,针对女性化妆产品,用户可以产生大量的内容,进而产生简单的社交行为。
4.2 服务如何提供
在新美微服务架构中,每一个服务都有多个拷贝,用来做负载均衡,一个服务随时可能下线(发布时候),也可能应对临时访问压力来增加新的服务节点(线上活动预案),这涉及到服务发现的问题,新美通过zookeeper作为服务注册信息的分布式管理,通过心跳检测维持长连接,实时更新服务信息。
