文章目录

  • 序言
  • 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 千亿级互联网案例实践

互联网总体架构设计篇相关推荐

  1. 互联网架构(一)总体架构设计

    总体架构设计 架构的基本手段就是分与合,先把系统打散,然后再重新组合. 分的过程是把系统拆分为各个子系统/模块/组件.拆的时候首先要解决每个组件的定位问题,然后才能划分彼此的边界,实现合理的拆分. 合 ...

  2. 通用服务平台之总体架构设计(一)

    一晃从事软件行业已经有多个年头,而从事服务器相关后端开发,也有了不短的时间,维护过中小型系统,也曾亲身设计过小型系统,但是一直都感觉不太顺意,不是自己想要的那种服务体系,很多时候都是在重复造轮子,于是 ...

  3. 云安全防护总体架构设计

    安全需求和挑战 从风险管理的角度讲,主要就是管理资产.威胁.脆弱性 和防护措施及其相关关系,最终保障云计算平台的持续安全,以及 其所支撑的业务的安全. 云计算 平台是在传统 IT技术的基础上,增加了一 ...

  4. 【原创视频】Docker总体架构设计及各模块原理剖析

    Docker总体架构设计及各模块原理剖析

  5. MRS IoTDB时序数据库的总体架构设计与实现

    MRS IoTDB时序数据库的总体架构设计与实现 MRS IoTDB是华为FusionInsight MRS大数据套件最新推出的时序数据库产品,其领先的设计理念在时序数据库领域展现出越来越强大的竞争力 ...

  6. 交通大数据应用细分_大数据之路之交通大数据应用总体架构设计

    上期简单介绍了大数据,了解了大数据应用的可行性与必然性,事实上也的确如此,大数据在公共管理(某省的最多跑一次),教育行业(某省交通厅大数据建设),税务行业(某省税务大数据平台应用建设),信息管理(某省 ...

  7. 3D引擎架构设计篇-姜雪伟-专题视频课程

    3D引擎架构设计篇-169人已学习 课程介绍         本课程是针对3D引擎架构设计,涵盖引擎的基础模块,多线程基础框架,大场景加载,地形多纹理优化技术,GPU优化渲染,物理引擎,AI算法以及A ...

  8. 商品中心中台支持系统(1)-总体架构设计

    目录商品中心中台支持系统-总体架构设计修订记录目录1.商品中心商品中心中台支持系统-总体架构设计修订记录日期版本章节描述作者2018-10-25V1.0初始版本无涯目录1.商品中心本文讲述电商系统构建 ...

  9. 智慧环保平台总体架构设计

    一.总体设计 (1)总体架构 根据建设目标,本项目的整体设计如上图所示.分为六个层次. 生态环境一张网 基础数据一朵云 大数据来搭框架 业务应用开满花 科学决策促改善 数据服务你我他 生态环境监测感知 ...

最新文章

  1. linux命令uname
  2. 企业组网安全如何保障?SDWAN提供怎样的安全服务?
  3. 从直播答题看背后的移动音视频开发
  4. C++ class、struct区别
  5. 缺氧游戏黑科技计算机,《缺氧》游戏内参数修改图文详解
  6. accept标头 php,解决PHP中缺少“授权”请求标头的问题
  7. SQL Server批量插入数据
  8. 获取指定远程网页内容
  9. 达梦和oracle数据库对比学习
  10. SQL语言入门详细教程(更新中)
  11. 该模型是内置式的MTPA控制,速度环的输出为给定转矩,然后方式1通过求解MTPA方程得到dq给定电流
  12. PPT怎么设置html颜色代码,PPT怎么设置表格边框颜色 PPT设置表格边框颜色教程
  13. 你了解光学中群的概念么(群时延、群速度、群速度折射率、群时延色散)
  14. 通过v$bgprocess查看后台进程
  15. java bridge_JavaBridge
  16. 有谁知道怎么处理微信用户头像过期问题,除了本地保存,因为不会用七牛云远程附件
  17. 通过WebView实现简单的浏览器
  18. 输入学生的学号及语文、数学、英语成绩, 输出学生各科成绩及率均成绩信息
  19. 将秒数换算成具体的天时分秒
  20. 《码出高效:Java开发手册》 四-走进JVM

热门文章

  1. 含稀土铕双功能荧光磁性纳米粒子/包裹磁性稀土荧光复合物纳米微球的性能与表征
  2. 一阶线性常微分方程解法总结 Summary of Solving First Order Linear Ordinary Differential Equation (ODE)
  3. 关于函数或者数列极限保号性的直觉理解(图解)
  4. 记录java中两个可能导致安全问题的代码
  5. 计算机学院第三周语法组及算法组作业
  6. 先进制造业的中国之路
  7. 基于51单片机的电子时钟万年历温度仿真数码管显示
  8. 质量管理(新旧)七种工具
  9. 关于在机房打游戏的检讨
  10. 二进制转十进制(c语言)