学习"大众点评网的架构设计与实践"
今天看了一篇"程序员"上的文章:"大众点评网的架构与实践",因为里面谈的架构演变之路中所经历的痛点对我的工作经验来说感同身受,所以觉得文章里的一些解决方案对我还是很有启发.文中的几点还是值得我们学习,实践下的.
文中提到的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架构升级,基于业务模块进行垂 ...
随机推荐
- 数据库连接jdbc理解
1.突然在想,既然数据库中有很多数据库,不同的database,在使用数据库时候,要指定使用的哪个数据库,用use database命令,指定特定数据库. 2.那java代码中,直接jdbc,直接st ...
- Solr 实现
Solr分页与高亮(使用SolrNet实现) 本节我们使用Asp.net MVC实现Solr客户端查询,建议使用SolrNet这个客户端,开源地址在:https://github.com/mausch ...
- Twos Complement Representation
COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION Like sign magnitude, ...
- Java:按值传递还是按引用传递详细解说
前天在做系统的时候被Java中参数传递问题卡了一下,回头查阅了相关的资料,对参数传递问题有了新的了解和掌握,但是有个问题感觉还是很模糊,就是Java中到底是否只存在值传递,因为在查阅资料时,经常看到有 ...
- common.js
//检测浏览器 function checkb(){ var Sys = {}; var ua = navigator.userAgent.toLowerCase(); var s; (s = ua. ...
- php内容
PHP语言原理:先把代码显示在源代码中,再通过浏览器解析在网页上 PHP中关键字通常分为四种类型: 1. 用于数据类型定义的关键字,如:int,string,bool,classic,object和a ...
- 低功耗蓝牙4.0BLE编程-nrf51822开发(4)
蓝牙是一种短距离的通讯方式,它设计的意图是取代电子便携设备之间的有线电缆连接.蓝牙的主要特性是健壮性.低功耗.成本低,它工作于免费的2.4无线传输频段. 蓝牙有两种技术系统:基本速率Basic Rat ...
- C++控制程序只运行一个实例
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { ...
- 网页中的超链接<a>标签
格式: <a href="目标网址" title="鼠标滑过显示的文本">链接显示的文本</a> 注意:为文本加入<a>标签 ...
- oracle用户创建及权限设置
权限: create session create table unlimited tablespace connect resource dba 例: #sqlplus /nolog SQL> ...