从0开始学架构-架构实战

目录

消息队列设计

互联网架构演进

架构重构

开源系统


 

消息队列设计

设计一个消息队列系统,3种候选方案对比

最终选择第二个,因为kafka运维升本高,而自己研发复杂度太高了

 

 

互联网架构演进

技术演进的三个派别
保守派,只用旧技术
潮流派,追新技术
跟风派,跟着大厂走,但如果之前没有大厂去做,或者没拿到最准确的消息都是风险

无论什么行业,影响一个企业的发展主要有三个因素
市场,技术,管理
这三者构成业务发展的铁三角,中间就是业务

企业的业务分为两类
产品类,技术创新推动业务发展,如iphone,360杀毒,UC浏览器
服务类,业务发展推动技术的发展,如微信,淘宝

淘宝经历了
个人网站,Oracle和IOE时代,php->Java,采用Java开源系统,自研系统去IOE,分布式系统

QQ则经历了
10W人在线,100W人在线,1000W人在线,重新设计架构,支撑一亿人在线

究竟用户规模发展到寺庙阶段才会由量变带来质变,虽然不同业务有所差别,但基本上都是按照下面这个模型发展的

 

 

互联网架构模板

下图基本上涵盖了互联网技术公司的大部分技术点,不同的公司只是在具体的技术实现上有差异,但不会跳出这个框架的范畴


NoSql发展到一定的规模后,通过都会在NoSQL集群的基础之上再实现统一的存储平台

  • 资源动态按需分配,如MC服务器,可以根据内存利用率分配给多个业务
  • 资源自动化管理,如新业务只需申请多少MC缓存空间即可,无须关系是哪些MC机器提供服务
  • 故障自动化处理,某台MC挂掉后,另外一台MC自动接管请求
  • 一般到了几千台NoSQL服务器时,做存储平台就能够产生很大的收益
     

小文件存储
典型的有
淘宝的TFS
京东JFS
Facebook的Haystack

大文件存储,Hadoop系列

服务层技术
配置中心
集中配置多个系统,操作效率高
所有的配置都在一个集中的地方,检查方便,协作效率高
配置中心可以实现程序和的规则检测,避免常见的错误

服务中心
为了解决跨系统依赖的配置和调度问题
服务中心的实现方式有两种
服务名字系统,类似DNS方式

服务总线系统,类似计算机中的总线

服务名字系统和服务总线系统的比较

用户层技术

  • 用户管理,CAS单点登录,OAuth认证协议
  • 消息推送,苹果有自己一套封闭的APNS,Android大厂有自己的推送实现
  • 存储云和图片云,基本上都是CDN+小文件存储实现的,推荐用大厂的

 

平台技术

运维平台

  • 标准化
  • 平台化
  • 自动化
  • 可视化

测试平台

  • 用例管理
  • 资源管理
  • 人物管理
  • 数据管理

 

数据平台
数据管理

  1. 数据采集
  2. 数据存储
  3. 数据访问
  4. 数据安全

数据分析

  1. 数据统计
  2. 数据挖掘
  3. 机器学习
  4. 深度学习

数据应用
推荐,广告,防刷,报表

管理平台

  1. 身份认证
  2. 权限控制
     

 

 

 

 

 

架构重构

架构重构的三个阶段
第一阶段,第二阶段都是为第三阶段服务的
之所以不是一上来就是到第三阶段,因为资源有限,要首先解决最重要的问题
而且第一,第二完成后,对团队信心也是一个鼓励
每个阶段都有明确的目标,每个阶段改动不会太大,降低风险

 

 

 

开源系统

开源产品的选择

  • 聚焦于是否满足业务,而不需要过于关注开源方案是否优秀
  • 尽量选择成熟的开源项目
  • 出了关注技术指标,还要关注运维能力
  • 不能简单的拿来主义,要深入研究
  • 对线上环境要小心,灰度发布
  • 任何开源方案,都要有应急的备份方案
  • 不要改动原系统,而要开发辅助系统
  • 选与不选开源系统,核心是成本和收益问题,不是开源就是最优方案

 

 

没有更多推荐了,返回首页