软件架构阅读笔记13

京东上千页面搭建基石——CMS先后端分离演进史php

CMS即内容管理系统(ContentManagementSystem),目的是用于快速进行网站建设或者网页开发。前端

CMS最核心的目的就是进行数据和模板的统一管理、页面的统一发布,从而减小以前的不少重复工做。redis

cms是一个集标准服务管理、标准组件服务和智能投放于一体的标准化导购运营系统。具备如下特色:后端

  • 搭建快速,统一发布,统一架构;
  • 先后端分离,后端再也不负责页面渲染,只提供高性能、可复用的API;
  • 移动端页面支持;
  • 数据分析、智能投放的特色;

业务支持场景:数据结构

首页、频道页、垂直页、活动页的搭建及单品页、列表页部分可维护的业务等。架构

架构的三个阶段:前后端分离

CMS 1.0——虚拟分类系统模块化

CMS 2.0——CMS系统php-fpm

CMS 3.0——CMS-portal系统性能

CMS 1.0—虚拟分类系统

虚拟分类系统当时只是一个基础数据维护平台。

存在问题:没法实现信息的共享、复用和集约化管理。这就会存在各类各样的频道页系统,致使管理混乱,性能上各有差别,出现过不少次事故。并且各系统须要独立配置,致使工做量大,占用资源多,没法快速响应业务需求。

CMS 2.0—CMS系统

Cms2.0总结了1.0时的不足,从节省资源、控制成本的角度考虑,把导购类的个体页面业务进行了统一,模板能复用的复用,之前虚拟分类系统的频道也须要迁移到新的系统。

改进:

  • CMS 2.0数据结构适合虚拟分类体系,方便新老数据兼容;
  • 升级架构,统一配置、发布流程;去memcache为redis,作大量性能压测来调优php-fpm配置,单机TPS能达到3000+; 配置定时任务,保证redis数据实时性;
  • 单点发布,一键预览加强采销维护数据的机动性;
  • 单机闭环,单机闭环服务设计是CMS总体架构的核心部分,须要展现的内容在本机获取、封装、校验;
  • 模块化、动态数据类型初期版本

对比1.0,新的CMS可让频道页的开发周期下降2~4周,大大提升了业务需求的响应速度;它看起来更独立,更像一个总体,在容灾、规避风险方面作了严谨的优化;同时让采销在维护数据时,更方便、更简单。

存在问题:

后续因为个性化的需求愈来愈多,大量的频道业务须要开发人员一个一个套模板来实现,大大加大了开发人员的工做强度,以前的模板复用方式已经没法知足业务的需求,同时太简单的数据模块,须要手工来绑定数据类型也增长了开发成本

CMS 3.0—CMS-portal系统

改进:

CMS 2.0后也存在不少痛点,所以咱们也想在CMS3.0上解决这些问题:

  • 本质问题就是要快:快速支持、响应业务愈来愈多的垂直化页面改版;
  • 先后端分离,页面渲染让前端实现,解放后端让后端作高大上的事情;
  • 减轻运营人员的工做量,系统简单好用,提升导购类商品的转化率;
  • 其余系统的支撑,实现CMS的集约化管理;
  • 兼容手机端;
  • 站点管理、统一架构、容灾、高性能、水平扩容;

经过两版CMS系统的开发,发现CMS无外乎管理的是数据和模板,另外须要好的预览、一键发布支持。而传统数据管理都是静态数据类型,而作了动态数据类型的设计;另外咱们作了模板管理中心,并抽象了模板、楼层、元件、模块的概念,从而实现更好的复用性。

相关文章
相关标签/搜索