《京东上千页面搭建基石——CMS前后端分离演进史》阅读笔记
一、背景
CMS即内容管理系统,目的是用于快速进行网站建设或者网页开发。
对于京东网站部门来说,CMS核心目的是用来快速开发和上线各种页面,诸如各种垂直频道页。
二、CMS核心目的
进行数据和模板的统一管理、页面的统一发布,从而减少之前的很多重复工作。
三、CMS特点
1、搭建快速,统一发布,统一架构
2、前后端分离。后端不再负责页面渲染,只提供高性能、可复用的API
3、移动端页面支持
4、数据分析、智能投放的特点。
四、从基本功能及架构来看,可以分为三个阶段:
1、CMS 1.0——虚拟分类系统
虚拟分类系统是一个独立的促销商品、促销文字维护系统,与具体前端业务架构脱离,哪条线接入虚拟分类,需要根据自己的业务逻辑单独开发、维护、部署自己的架构。虚拟分类系统只是一个基础数据维护平台,无法实现信息的共享、复用和集约化管理。
这就会存在各种各样的频道页系统,导致管理混乱,性能上各有差异,出现过很多次事故。
而且各系统需要独立配置,导致工作量大,占用资源多,无法快速响应业务需求。
2、CMS 2.0——CMS系统
Cms2.0总结了1.0时的不足,从节省资源、控制成本的角度考虑,把导购类的个体页面业务进行了统一,模板能复用的复用,以前虚拟分类系统的频道也需要迁移到新的系统。
改动如下:
(1)、CMS 2.0数据结构适合虚拟分类体系,方便新老数据兼容;
(2)、升级架构,统一配置、发布流程;去memcache为redis,做大量性能压测来调优php-fpm配置,单机TPS能达到3000+; 配置定时任务,保证redis数据实时性;
(3)、单点发布,一键预览增强采销维护数据的机动性;
(4)、单机闭环,单机闭环服务设计是CMS整体架构的核心部分,需要展示的内容在本机获取、封装、校验;
(5)、模块化、动态数据类型初期版本
对比1.0,新的CMS可以让频道页的开发周期降低2~4周,大大提高了业务需求的响应速度;它看起来更独立,更像一个整体,在容灾、规避风险方面做了严谨的优化;同时让采销在维护数据时,更方便、更简单。
后续由于个性化的需求越来越多,大量的频道业务需要开发人员一个一个套模板来实现,大大加大了开发人员的工作强度,之前的模板复用方式已经无法满足业务的需求,同时太简单的数据模块,需要手工来绑定数据类型也增加了开发成本,这时候需要必须做出改变。
3、CMS 3.0——CMS-portal系统
CMS 2.0后也存在很多痛点,因此在CMS3.0上解决这些问题:
(1)、本质问题就是要快:快速支持、响应业务越来越多的垂直化页面改版;
(2)、前后端分离,页面渲染让前端实现,解放后端让后端做高大上的事情;
(3)、减轻运营人员的工作量,系统简单好用,提高导购类商品的转化率;
(4)、其他系统的支撑,实现CMS的集约化管理;
(5)、 兼容手机端;
(6)、站点管理、统一架构、容灾、高性能、水平扩容;
五、统一架构主要分为以下几个部分:
1、CMS系统:统一管理CMS相关数据,并进行页面的生成和发布;
2、数据Worker管理中心:调用第三方服务进行数据校验(如库存不足补货),并调用CMS系统进行页面生成和发布,发布到单点服务器上;
3、单点服务器:相关页面的单机闭环实现,即CMS发布的页面会存储在这些单点服务器上;每个机房会部署一台;
4、页面定时更新Worker:定期同步单点服务器内容到静态应用服务器集群,并保存历史版本,当出现问题时可以切换回上一个版本;
5、静态应用服务器集群:静态托底实现,会存储相关的静态页面文件,当单点服务器挂了时,降级到该集群;
6、异步加载的个性化服务:有些数据不能存储到静态页,如价格/库存/推荐等数据,此时通过异步加载这些数据,实现个性化服务;
7、接入层Nginx:接入层Nginx负责请求的路由和服务的降级。
原文链接:
《京东上千页面搭建基石——CMS前后端分离演进史》阅读笔记的更多相关文章
- 阅读《RobHess的SIFT源码分析:综述》笔记
今天总算是机缘巧合的找到了照样一篇纲要性质的文章. 如是能早一些找到就好了.不过“在你认为为时已晚的时候,其实还为时未晚”倒是也能聊以自慰,不过不能经常这样迷惑自己,毕竟我需要开始跑了! 就照着这个大 ...
- RobHess的SIFT源码分析:imgfeatures.h和imgfeatures.c文件
SIFT源码分析系列文章的索引在这里:RobHess的SIFT源码分析:综述 imgfeatures.h中有SIFT特征点结构struct feature的定义,除此之外还有一些特征点的导入导出以及特 ...
- RobHess的SIFT源码分析:综述
最初的目的是想做全景图像拼接,一开始找了OpenCV中自带的全景拼接的样例,用的是Stitcher类,可以很方便的实现全景拼接,而且效果很好,但是不利于做深入研究. 使用OpenCV中自带的Stitc ...
- 阅读《RobHess的SIFT源码分析:综述》笔记2
今天开始磕代码部分. part1: 1. sift特征提取. img1_Feat = cvCloneImage(img1);//复制图1,深拷贝,用来画特征点 img2_Feat = cvCloneI ...
- element-ui button组件 radio组件源码分析整理笔记(一)
Button组件 button.vue <template> <button class="el-button" @click="handleClick ...
- element-ui 组件源码分析整理笔记目录
element-ui button组件 radio组件源码分析整理笔记(一) element-ui switch组件源码分析整理笔记(二) element-ui inputNumber.Card .B ...
- element-ui Carousel 走马灯源码分析整理笔记(十一)
Carousel 走马灯源码分析整理笔记,这篇写的不详细,后面有空补充 main.vue <template> <!--走马灯的最外层包裹div--> <div clas ...
- STL源码分析读书笔记--第二章--空间配置器(allocator)
声明:侯捷先生的STL源码剖析第二章个人感觉讲得蛮乱的,而且跟第三章有关,建议看完第三章再看第二章,网上有人上传了一篇读书笔记,觉得这个读书笔记的内容和编排还不错,我的这篇总结基本就延续了该读书笔记的 ...
- element-ui MessageBox组件源码分析整理笔记(十二)
MessageBox组件源码,有添加部分注释 main.vue <template> <transition name="msgbox-fade"> < ...
- element-ui switch组件源码分析整理笔记(二)
源码如下: <template> <div class="el-switch" :class="{ 'is-disabled': switchDisab ...
随机推荐
- 虚拟环境和pip相关的命令
# 虚拟环境 mkvirtualenv # 创建虚拟环境 rmvirtualenv # 删除虚拟环境 workon # 进入虚拟环境.查看所有虚拟环境 deactivate # 退出虚拟环境 eg: ...
- Django 中自定义 Admin 样式与功能
目录 自定义 Admin 样式与功能 1 页面修改中文 1.1 语言设置为中文 1.2 应用管理设置为中文 1.3 数据库表设置为中文 1.4 数据库表字段名称修改为中文 2 修改后台样式 2.1 安 ...
- JavaScript 之 基本包装类型
基本包装类型 为了方便操作基本数据类型,JavaScript 还提供了三个特殊的引用类型:String/Number/Boolean. 下面先看一段代码: var s1 = "Hello ...
- FreePascal - CodeTyphon 和 Lazarus, 如何像Delphi一样有代码之间的连线?
CodeTyphon 6.9 默认CodeTyphon没有开启代码之间连线功能,一直不知道如何调出来,在使用CodeTyphon 和 Lazarus 很渴望也能像Delphi那样有这种功能,实际上它们 ...
- Spring 开发之组件赋值
1. @Value & @PropertySource 1.1 使用方式 @PropertySource:读取外部配置文件中的 k/v 保存到运行的环境变量中;加载完外部的配置文件以后使用 $ ...
- 汽车制造商表态:必须依靠MES系统来管控流程
汽车行业特点 汽车工业是一个高投入,高产出,集群式发展的产业部门. 汽车自身的投资,生产,研发,供应,销售,维修:前序的原材料,零部件,技术装备,物流:后序的油料,服务,信贷,咨询,保险,直至基础设施 ...
- Hadoop运行环境搭建
Hadoop运行环境搭建 更改为阿里的Centos7的yum源 #下载wget yum -y install wget #echo 下载阿里云的yum源配置 Centos-7.repo wget - ...
- python3.5如何安装statsmodels包?
如题: 系统win10,64 python3.5 32 使用pip install statsmodels 会报错,说cpython没有安装.一直找不到解决办法,就只好去第三方库下载了一个 http: ...
- 【转】学习ARM为什么首选IMAX6??
ARM作为目前嵌入式行业主流的架构,已经让越来越多从事电子行业的朋友了解,并且高校对于嵌入式的学习,很多直接从ARM开始,目前ARM的嵌入式培训也越来越多,足以说明现在嵌入式行业有多火.目前主流的AR ...
- MTU是什么?
MTU是Maximum Transmission Unit的缩写. 意思是网络上传送的最大数据包. MTU的单位是字节. 大部分网络设备的MTU都是1500.如果本机的MTU比网关的MTU大,大的数据 ...