学习"大众点评网的架构设计与实践"
今天看了一篇"程序员"上的文章:"大众点评网的架构与实践",因为里面谈的架构演变之路中所经历的痛点对我的工作经验来说感同身受,所以觉得文章里的一些解决方案对我还是很有启发.文中的几点还是值得我们学习,实践下的.
文中提到的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架构升级,基于业务模块进行垂 ...
随机推荐
- UIButton 长按点击 背景改变效果
1.添加按钮的点击事件和按下事件 [btn setImage:[UIImage imageNamed:@"NorMal.png"] forState:UIControlStateN ...
- try...except 抛出错误
- VSS 访问问题
局域网同一网段的2台电脑,防火墙都是关闭的 A能ping通B 但A在运行输入B的IP地址 不能访问 求解答 1.确认输入的地址格式没有写错,例如B的IP地址为:192.168.1.20.那么在A电脑的 ...
- ease of rerouting traffic in IP networks without readdressing every host
https://en.wikipedia.org/wiki/Network_address_translation In the face of the foreseeable global IP a ...
- WIN7 64位系统下的服务程序更新失败问题解决
自己用DELPHI做了个小的服务在后台运行,帮助自己做一些琐事,今天修改了一下代码结果重启服务的时候一直还是以前的状态,新加的代码没任何效果. 1.检查程序没问题呀 2.关闭SSD缓存硬盘问题仍旧 3 ...
- nginx搭建http和rtmp协议的流媒体服务器
nginx搭建http和rtmp协议的流媒体服务器 时间:2013-09-23 23:52来源:佚名 作者:本站 举报 点击:232次 实验目的:让Nginx支持flv和mp4格式文件,同时支持Rtm ...
- 【转】如何使php的MD5与C#的MD5一致?
有c#生成MD5的代码如下: class CreateMD5 { static void Main(string[] args) { string source = "提问指南"; ...
- wget ftp
今天操作远端机器的时候发现少一个安装包, 需要传到对方的机器上,还能使用通过的老办法,直接SSH连上去了,发现传的很慢, 只有40K的样子, 看时间还需要二个多小时就有点受不了了.想想有一台FTP服务 ...
- Python之集合(set)
一种语言它越便捷,开发效率越高,初学阶段就会越困难.因为语言的设计者帮你造了大量的轮子,你就要掌握如何使用这些轮子.所以,对初学Python来说,记忆的东西很多. 进入正题. 集合就像是抛弃了值(va ...
- 在Windows上一键编译各种版本的Protobuf
所需工具 : cmake for windows 和 git for windows 原理:protobuf 是google的一个开源项目,其源代码在github上可以下载到,并且源码都采用cm ...