学习"大众点评网的架构设计与实践"
今天看了一篇"程序员"上的文章:"大众点评网的架构与实践",因为里面谈的架构演变之路中所经历的痛点对我的工作经验来说感同身受,所以觉得文章里的一些解决方案对我还是很有启发.文中的几点还是值得我们学习,实践下的.
文中提到的V1,V2阶段,也就公司起步阶段,其实这个时间还谈不上技术架构,此时更关注的是抢占市场,产品快速面世.这也是创业公司要注意的,在一开始的时候不要总想着用什么牛逼的技术和架构,更应该快速推出产品,初探市场反映以及快速变化.
V3架构中主要引入了如下技术: 缓存(Memcached),分布式文件系统,搜索引擎(Lucene),NoSql数据库(MongoDB). 引入的方案其实也是顺其自然的,就像文中所说,当访问量大起来了后,针对整个系统中的瓶颈,哪里痛就治哪里.缓存用来减轻db访问压力,分布式文件系统解决海量图片存储,Lucene提供信息检索能力(复杂查询无论从功能和性能上,数据库的全文检索都是满足不了的),NoSql数据库用来存储非结构化数据.基本有了这些架构方案后,一般的不是很复杂的应用都可以顶住.
在V3架构体系中我们都是从系统的性能瓶颈上做了相应的措施方案,优化访问速度上面做文章.但是随着业务的增长,相应的支撑系统也会越来越复杂,通常我们的系统不是一个项目就全部包括了,而是分成为很多小系统,从业务上分为不同的产品线,从功能上分为基础服务和应用服务,等等. 所以V4架构体系就是把大服务分成各个小服务去分别开发,管理. 比如用户管理系统,积分系统,结算系统,等等. 这样问题也就出来, 每个系统并不是孤立存在的, 它们要相互调用和依赖.如果其中的一个服务出现问题,往往会导致整个站点不可用.而且这种服务与服务之间的依赖的复杂度,会随着系统数量的递增而呈指数增长.相信每个开发员应都经历过种痛苦. 还有就是系统的增长与依赖,会大大增加运维部署的复杂度.
所以在V5架构体系中要解决和探索的问题依旧是"服务治理"的问题.文中提到用"泳道架构与容错隔离"方案,来提供系统的高可用性. 但是我个人觉得这种方案实施起来不是很容易,因为各泳道中的服务如果全部clone一套,对于资源的投入和部署升级的成本都还是挺大的. 在服务治理上, 可以借鉴阿里的经验,比如Dubbo,毕竟也是经历了亿级别调用的产品. 在服务注册, 发现, 负载上都是很好的实现.
在V5架构探索中,下面谈的几个方案如果利用起来,可以解决实际中很多问题:
- PaaS平台: 定制化容器,主要用于对基础组件的统一更新,配置加载管理. 使用业务开发人员只关注业务实现技术,对基础组件,公用框架透明.
- Cat统一监控平台: 对于分布式系统来说, 查看日志时,因为其整个行为操作分散在各个系统中,这对追踪整个事务是很不方便的.往往是根据某个标识(如用户id)在各个日志系统中人工连续起来.而Cat系统可以用统一的messageID记录日志,通过系统进行整合,形成各个维度的日志报表.
- code平台,使用github,对gitlib二次开发,可以pull request进行代码审查.
- 还有一些其它方面的探索和展望,这里就不再说了.因为每个公司发展一定阶段,都会在经历了各种痛苦的事情后会总结各种方案和开发辅助工具,帮助研发,运维人员去工作.
学习"大众点评网的架构设计与实践"的更多相关文章
- 大众点评网王宏:从.Net迁移向Java平台 - 51CTO.COM
大众点评网王宏:从.Net迁移向Java平台 - 51CTO.COM 大众点评网王宏:从.Net迁移向Java平台
- Z.Studio高级成衣定制(双井店)价格,地址(图)-北京-大众点评网
Z.Studio高级成衣定制(双井店)价格,地址(图)-北京-大众点评网 Z.Studio高级成衣定制(双井店)
- Atitit.数据库表的物理存储结构原理与架构设计与实践
Atitit.数据库表的物理存储结构原理与架构设计与实践 1. Oracle和DB2数据库的存储模型如图: 1 1.1. 2. 表数据在块中的存储以及RowId信息3 2. 数据表的物理存储结构 自然 ...
- Slickflow.NET 开源工作流引擎基础介绍(六)--模块化架构设计和实践
前言:在集成Slickflow.NET 引擎组件过程中,引擎组件需要将用户,角色等资源数据读取进来,供引擎内部调用:而企业客户都是有自己的组织架构模型,在引入模块化架构设计后,引擎组件的集成性更加友好 ...
- Go语言学习之14 商品秒杀架构设计与开发
本节主要内容 1. 秒杀抢购背景2. 秒杀抢购架构设计&模块划分3. 秒杀抢购接入层实现 1. 秒杀抢购背景 (1)架构分析 电商网站架构 秒杀抢购1.0 (2)上述网站架构问题 和已有电商逻 ...
- HRMS(人力资源管理系统)-SaaS架构设计-概要设计实践
一.开篇 前期我们针对架构准备阶段及需求分析这块我们写了2篇内容<HRMS(人力资源管理系统)-从单机应用到SaaS应用-架构分析(功能性.非功能性.关键约束)-上篇><HRMS(人 ...
- 一面数据: Hadoop 迁移云上架构设计与实践
背景 一面数据创立于 2014 年,是一家领先的数据智能解决方案提供商,通过解读来自电商平台和社交媒体渠道的海量数据,提供实时.全面的数据洞察.长期服务全球快消巨头(宝洁.联合利华.玛氏等),获得行业 ...
- vivo商城促销系统架构设计与实践-概览篇
一.前言 随着商城业务渠道不断扩展,促销玩法不断增多,原商城v2.0架构已经无法满足不断增加的活动玩法,需要进行促销系统的独立建设,与商城解耦,提供纯粹的商城营销活动玩法支撑能力. 我们将分系列来介绍 ...
- vivo 全球商城:商品系统架构设计与实践
一.前言 随着用户量级的快速增长,vivo官方商城v1.0的单体架构逐渐暴露出弊端:模块愈发臃肿.开发效率低下.性能出现瓶颈.系统维护困难. 从2017年开始启动的v2.0架构升级,基于业务模块进行垂 ...
随机推荐
- CSS3系列:流式(弹性)布局(flex布局)
我的新伸缩盒子.http://www.cnblogs.com/leee/p/5533436.html
- Maven学习记录
一.简单介绍 Maven 是一个项目构建和管理自动化工具,通过它可以便捷的管理项目的生命周期,包括项目的jar包依赖,开发,测试,发布,打包等. 二.基本概念 2.1 Pom - 项目对象模型 全称( ...
- 动态input file多文件上传到后台没反应的解决方法!!!
其实我也不太清除具体是什么原因,但是后面就可以了!!! 我用的是springMVC 自带的文件上传 1.首先肯定是要有springMVC上传文件的相关配置! 2.前端 这是动态input file上传 ...
- HDU 1284 思维上的水题
其实如果想出了方法真的好水的说... 然而一开始想了好久都没想出来... 最后看了一下最大数据才32768 可以直接枚举...枚举每个硬币的数量 看看后来能不能凑够n 因为还是怕超时..(虽然只有3乘 ...
- twitter storm源码走读之8 -- TridentTopology创建过程详解
欢迎转载,转载请注明出处,徽沪一郎. 从用户层面来看TridentTopology,有两个重要的概念一是Stream,另一个是作用于Stream上的各种Operation.在实现层面来看,无论是str ...
- Web 在线文件管理器学习笔记与总结(15)剪切文件夹 (16)删除文件夹
(15)剪切文件夹 ① 通过rename($oldname,$newname) 函数实现剪切文件夹的操作 ② 需要检测目标文件夹是否存在,如果存在还要检测目标目录中是否存在同名文件夹,如果不存在则剪切 ...
- 【翻译】Kinect v2程序设计(C++) BodyIndex篇
通过Kinect SDK v2预览版,取得BodyIndex(人体区域)的方法和示例代码. 上一节,介绍了从Kinect v2预览版用Kinect SDK v2预览版获取Depth数据的方法. 这 ...
- Sublime Text3注册码(可用)
Sublime Text3注册码(可用) (2014-12-20 21:24:56) 转载▼ 标签: sublime sublime3 sublimetext sublimetext3 分类: 实用工 ...
- phpcms v9模版调用代码大全(全面而实用)
首页调用栏目 {pc:content action="category" siteid="$siteid" num="15" order=& ...
- eclipse Maven -->web project
http://blog.chinaunix.net/uid-26959955-id-3248053.html http://blog.csdn.net/wilsonke/article/details ...