学习"大众点评网的架构设计与实践"
今天看了一篇"程序员"上的文章:"大众点评网的架构与实践",因为里面谈的架构演变之路中所经历的痛点对我的工作经验来说感同身受,所以觉得文章里的一些解决方案对我还是很有启发.文中的几点还是值得我们学习,实践下的.
文中提到的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架构升级,基于业务模块进行垂 ...
随机推荐
- PHP mkdir 方法 创建 0777 权限的目录问题
php 中使用 mkdir() 方法创建 0777 权限的目录: $path = './Logs/secondCheck/';if(!is_dir($path)){ mkdir($path, 0777 ...
- PHP 错误与异常 笔记与总结(17 )像处理异常一样处理 PHP 错误
有两种方式可以在 PHP 中以异常的方式处理错误: ① PHP 内置的 ErrorException类(也是 Exception 类的子类) <?php function exception_e ...
- 用命令行导出和导入MySQL数据库
php 用命令行导出和导入MySQL数据库 命令行导出数据库:1,进入MySQL目录下的bin文件夹:cd MySQL中到bin文件夹的目录如我输入的命令行:cd C:\Program Files ...
- C与C++连续赋值的区别
int a,b,c,d; a = b = ; // ( a!=b?a:b) = 1000;//如果a不等于b 那么a = 100;这句话执行完 a还是等于5,b= 100: printf(" ...
- mac终端中显示tree的命令
寻觅了良久终于找到了mac下如何在终端显示tree的命令了,作为从linux下转过来的人,还没适应mac的finder,还是喜欢在命令行下查看文件. 命令: find . -print | sed - ...
- 以大写字母“J”来展示位图
'0' => '00011100001111111001100011011000001111000001111000001111000001111000001111000001111000001 ...
- Ubuntu 14.04 LTS 64bit 编译SDL的问题
http://blog.csdn.net/jhting/article/details/38523945 Ubuntu 14.04 LTS 64bit 编译SDL的问题 分类: C/C++2014-0 ...
- Freemarker的初次使用之FTL标签嵌套与map的使用
入职第二周了,在熟悉了公司自动化测试脚本的编写(使用什么数据库,使用哪种语言,框架带了哪些方法)后,现在开始熟悉模拟器,我们把请求发到服务器1,服务器1根据请求参数处理后将结果发给模拟器,模拟器根据服 ...
- NRF51822之GPIOTE使用
---恢复内容开始--- 在上篇介绍nrf51822的GPIOTE http://www.cnblogs.com/libra13179/p/5336580.html 我们现在开始下水游泳. /** @ ...
- Java实验报告五:Java网络编程及安全
Java实验报告五:Java网络编程及安全 ...