互联网总体架构设计篇
文章目录
- 序言
- 01 互联网发展三阶段
- 02 互联网架构演进之路
- 03 单体架构设计与实践
- 04 水平分层架构设计与实践
- 05 面向服务架构设计与实践
- 06 微服务架构设计与实践
- 07 服务网格架构设计与实践
- 08 千亿级互联网案例实践
序言
架构是用来唤醒智慧的,期望唤醒和您心中的架构共鸣,今年您在观察什么,希望我们英雄所见略同,有不同的看法欢迎评论留言,如果只是单单因为观点不同就被骂的狗血喷头,这可真是太过幼稚,现在的人太过浮躁,何必呢,有什么事是不能坐下来好好谈谈的?来,给您倒一杯卡布奇诺,咱们慢慢品。
01 互联网发展三阶段
互联网发展的三个阶段的特点依次是静态化、动态化、万物连接,容易理解,在其发展过程中,互动形式也发生了三个阶段的演进。
微信和facebook最主要的发明就是群组和朋友圈,但实际上朋友圈不算微信的发明,微博在2.0阶段的feed流就已经做出了朋友圈的雏形。微信最厉害的地方就是群组,把关注的一对一关系,变成了多对多关系,互联网在发展过程中,也形成了以下特点:
- 业务功能越来越多、越来越复杂
- 万物互联、数据量越来越大
- 请求量越来越大、更高的用户体验要求
- 业务快速迭代、持续交付的能力
做架构的目的不是为了炫技,为了让我们的产品快速迭代,持续交付,降低人力成本,机器成本,提升开发效率,提升运营效率。互联网架构为什么要演进?很显然,需求驱动架构演进。
02 互联网架构演进之路
03 单体架构设计与实践
单体架构适用场景:
- 业务简单,功能不复杂,研发人员较少
- 创业公司初期
- 性能要求极其苛刻
单体架构的优点:
- 容易开发
- 容易测试
- 容易部署
- 容易扩展
单体架构的缺点:
- 系统耦合性高
- 技术选型单一
- 开发效率越来越低下
架构破局:
- 垂直方向拆分(业务维度)例如用户模块,订单模块,商品模块。
- 水平方向拆分(功能维度)垂直拆分后,用户模块依然是一个单体,在功能上继续拆分,网关层,业务逻辑层,数据访问层,数据库怎么拆,架构就怎么拆。
04 水平分层架构设计与实践
水平方向物理分为多个进程,每层逻辑解耦
- 网关层
- 业务逻辑层
- 数据访问层
- 数据存储层
任意两层之间加入消息队列都可以从同步变为异步,每层和消息队列都是同步的。消息队列的高效来源于本身的顺序写入。
业界主流的网关开源组件,没有最好,只有更合适。
同步架构
异步架构
- 异步目的:提升吞吐量
- 异步方式:消息队列
- 适用场景一:请求类型(读请求不可以,写请求可以)
- 适用场景二:业务类型(充值场景低并发用同步,社交场景高并发用异步)
不是所有的请求都可以用MQ,读请求不能用MQ, 因为读请求是想要拿到这次请求的结果,比如说要查询一个用户的信息,瞬时要拿到用户的结果,这个请求通过网关到MQ,返回ok,难道这个用户就叫ok吗?写请求是可以用MQ的,所有的写请求都能用MQ吗?那又回到哲学本质了,所有的所有的一切都是不成立的。不是所有的写请求都可以用MQ的。写请求分两种,一种是对数据一致性强,比如充值场景。这个时候就不能用异步了,用同步架构就好了,一种是对数据一致性弱,比如社交场景可以写异步。也可以从业务的并发量来考虑,并发量低的用同步,并发量高的用异步。
但是异步架构发生在写入请求后,我在读请求的时候MQ的消息还没有到DB,但是在写入的时候,已经告诉用户已经成功了,这个问题我们回到具体的业务场景。
在我们发朋友圈的时候,很显然自己对马上要发的朋友圈最感兴趣,你绝对不会说,在发朋友圈之前,在群里去@大家说:我要发朋友圈了,你们来看一下,我相信你一定不会干这个事情,既然你不会干这个事情,你的朋友晚点看到朋友圈也是ok的,那这个时候只要解决自己看的问题就好了,这个时候只需要把本地发送的消息(朋友圈)客户端缓存一下,等到你下次再请求的时候,已经是很多秒以后的事情了,下次再请求的时候,写入的消息已经到DB了,用这种方式来解决用户看到有延迟的问题。但是这样也存在问题,虽然说这次可以骗过用户,但是消息是写到MQ里面的,最终是要把它写入到DB里面去的,但是从MQ到DB过程中,会出现网络异常,消息不合法等,最终消息是没法写入到DB里面去的。
微信是这样做的,当微信消息(朋友圈)发成功以后,过一段时间如果没有发成功,会在最顶端提示您有一条消息未发送成功,让你重试一下 ,这是依靠微信app和网关的Socket长链接来实现的,一旦业务逻辑层处理失败后,会直接推给客户端,如果http没办法处理,那必须是长轮询来处理。
异步架构会有一些负面的影响:
- 请求路径边长
- 平均响应延迟变高
- 定位问题变的复杂化
- 运维成本增加
最终我们在实际应用中,同步架构分为四层,异步架构分为五层最合适,MVC这种架构已经逐渐的被淘汰了,在水平分层上选择四层或者5层架构。
以上两种架构也存在严重的问题:部分层粒度过粗,如业务逻辑层包含了所有的业务逻辑。
同步水平分层全貌
真正的APP请求第一步是经过DNS的,DNS通过域名获IP,去请求静态接口和动态接口的数据。静态的资源如CSS、图片是放在CDN上的,通过阿里、腾讯、百度的CDN获取静态图片,如果请求的静态资源在CDN上没有命中,CDN会请求Nginx,Nginx会把静态资源返回给CDN,CDN会把静态资源缓存起来再返回给APP,Object Store(对象存储)同理,常用的对象存储是阿里的Fastdfs和Ceph,规模比较小的话建议用Fastdfs,规模比较大的话,建议用Ceph,但是Ceph会给运维团队增加很大的压力,
05 面向服务架构设计与实践
58同城的简化模型图:
为什么SOA不是微服务架构,因为它仅仅做了一个垂直拆分。所以缺点也很明显:
- 每个服务还是单体架构
- 对ESB严重依赖
06 微服务架构设计与实践
微服务架构即按照水平方向去拆分,又按照垂直方向去拆分
07 服务网格架构设计与实践
08 千亿级互联网案例实践
互联网总体架构设计篇相关推荐
- 互联网架构(一)总体架构设计
总体架构设计 架构的基本手段就是分与合,先把系统打散,然后再重新组合. 分的过程是把系统拆分为各个子系统/模块/组件.拆的时候首先要解决每个组件的定位问题,然后才能划分彼此的边界,实现合理的拆分. 合 ...
- 通用服务平台之总体架构设计(一)
一晃从事软件行业已经有多个年头,而从事服务器相关后端开发,也有了不短的时间,维护过中小型系统,也曾亲身设计过小型系统,但是一直都感觉不太顺意,不是自己想要的那种服务体系,很多时候都是在重复造轮子,于是 ...
- 云安全防护总体架构设计
安全需求和挑战 从风险管理的角度讲,主要就是管理资产.威胁.脆弱性 和防护措施及其相关关系,最终保障云计算平台的持续安全,以及 其所支撑的业务的安全. 云计算 平台是在传统 IT技术的基础上,增加了一 ...
- 【原创视频】Docker总体架构设计及各模块原理剖析
Docker总体架构设计及各模块原理剖析
- MRS IoTDB时序数据库的总体架构设计与实现
MRS IoTDB时序数据库的总体架构设计与实现 MRS IoTDB是华为FusionInsight MRS大数据套件最新推出的时序数据库产品,其领先的设计理念在时序数据库领域展现出越来越强大的竞争力 ...
- 交通大数据应用细分_大数据之路之交通大数据应用总体架构设计
上期简单介绍了大数据,了解了大数据应用的可行性与必然性,事实上也的确如此,大数据在公共管理(某省的最多跑一次),教育行业(某省交通厅大数据建设),税务行业(某省税务大数据平台应用建设),信息管理(某省 ...
- 3D引擎架构设计篇-姜雪伟-专题视频课程
3D引擎架构设计篇-169人已学习 课程介绍 本课程是针对3D引擎架构设计,涵盖引擎的基础模块,多线程基础框架,大场景加载,地形多纹理优化技术,GPU优化渲染,物理引擎,AI算法以及A ...
- 商品中心中台支持系统(1)-总体架构设计
目录商品中心中台支持系统-总体架构设计修订记录目录1.商品中心商品中心中台支持系统-总体架构设计修订记录日期版本章节描述作者2018-10-25V1.0初始版本无涯目录1.商品中心本文讲述电商系统构建 ...
- 智慧环保平台总体架构设计
一.总体设计 (1)总体架构 根据建设目标,本项目的整体设计如上图所示.分为六个层次. 生态环境一张网 基础数据一朵云 大数据来搭框架 业务应用开满花 科学决策促改善 数据服务你我他 生态环境监测感知 ...
最新文章
- linux命令uname
- 企业组网安全如何保障?SDWAN提供怎样的安全服务?
- 从直播答题看背后的移动音视频开发
- C++ class、struct区别
- 缺氧游戏黑科技计算机,《缺氧》游戏内参数修改图文详解
- accept标头 php,解决PHP中缺少“授权”请求标头的问题
- SQL Server批量插入数据
- 获取指定远程网页内容
- 达梦和oracle数据库对比学习
- SQL语言入门详细教程(更新中)
- 该模型是内置式的MTPA控制,速度环的输出为给定转矩,然后方式1通过求解MTPA方程得到dq给定电流
- PPT怎么设置html颜色代码,PPT怎么设置表格边框颜色 PPT设置表格边框颜色教程
- 你了解光学中群的概念么(群时延、群速度、群速度折射率、群时延色散)
- 通过v$bgprocess查看后台进程
- java bridge_JavaBridge
- 有谁知道怎么处理微信用户头像过期问题,除了本地保存,因为不会用七牛云远程附件
- 通过WebView实现简单的浏览器
- 输入学生的学号及语文、数学、英语成绩, 输出学生各科成绩及率均成绩信息
- 将秒数换算成具体的天时分秒
- 《码出高效:Java开发手册》 四-走进JVM