许式伟的架构课
许式伟
七牛云CEO
立即订阅
19936 人已学习
课程目录
已更新 71 讲 / 共 77 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 怎样成长为优秀的软件架构师?
免费
基础平台篇 (21讲)
01 | 架构设计的宏观视角
02 | 大厦基石:无生有,有生万物
03 | 汇编:编程语言的诞生
04 | 编程语言的进化
05 | 思考题解读:如何实现可自我迭代的计算机?
06 | 操作系统进场
07 | 软件运行机制及内存管理
08 | 操作系统内核与编程接口
09 | 外存管理与文件系统
10 | 输入和输出设备:交互的演进
11 | 多任务:进程、线程与协程
12 | 进程内协同:同步、互斥与通讯
13 | 进程间的同步互斥、资源共享与通讯
14 | IP 网络:连接世界的桥梁
15 | 可编程的互联网世界
16 | 安全管理:数字世界的守护
17 | 架构:需求分析 (上)
18 | 架构:需求分析 (下) · 实战案例
19 | 基础平台篇:回顾与总结
加餐 | 我看Facebook发币(上):区块链、比特币与Libra币
加餐 | 我看Facebook发币(下):深入浅出理解 Libra 币
桌面开发篇 (16讲)
20 | 桌面开发的宏观视角
21 | 图形界面程序的框架
22 | 桌面程序的架构建议
23 | Web开发:浏览器、小程序与PWA
24 | 跨平台与 Web 开发的建议
25 | 桌面开发的未来
26 | 实战(一):怎么设计一个“画图”程序?
27 | 实战(二):怎么设计一个“画图”程序?
28 | 实战(三):怎么设计一个“画图”程序?
29 | 实战(四):怎么设计一个“画图”程序?
30 | 实战(五):怎么设计一个“画图”程序?
31 | 辅助界面元素的架构设计
课外阅读 | 从《孙子兵法》看底层的自然法则
加餐 | 想当架构师,我需要成为“全才”吗?
32 | 架构:系统的概要设计
33 | 桌面开发篇:回顾与总结
服务端开发篇 (14讲)
34 | 服务端开发的宏观视角
35 | 流量调度与负载均衡
36 | 业务状态与存储中间件
37 | 键值存储与数据库
38 | 文件系统与对象存储
39 | 存储与缓存
40 | 服务端的业务架构建议
41 | 实战(一):“画图”程序后端实战
42 | 实战(二):“画图”程序后端实战
43 | 实战(三):“画图”程序后端实战
44 | 实战(四):“画图”程序后端实战
45 | 架构:怎么做详细设计?
46 | 服务端开发篇:回顾与总结
加餐 | 如何做HTTP服务的测试?
服务治理篇 (11讲)
47 | 服务治理的宏观视角
48 | 事务与工程:什么是工程师思维?
49 | 发布、升级与版本管理
50 | 日志、监控与报警
加餐 | 怎么保障发布的效率与质量?
51 | 故障域与故障预案
52 | 故障排查与根因分析
53 | 过载保护与容量规划
54 | 业务的可支持性与持续运营
55 | 云计算、容器革命与服务端的未来
56 | 服务治理篇:回顾与总结
架构思维篇 (8讲)
57 | 心性:架构师的修炼之道
用户故事 | 站在更高的视角看架构
58 | 如何判断架构设计的优劣?
59 | 少谈点框架,多谈点业务
60 | 架构分解:边界,不断重新审视边界
加餐 | 实战:“画图程序” 的整体架构
61 | 全局性功能的架构设计
62 | 重新认识开闭原则 (OCP)
许式伟的架构课
登录|注册

18 | 架构:需求分析 (下) · 实战案例

许式伟 2019-06-14
你好,我是七牛云许式伟。
今天,我们继续上一讲关于架构第一步 “需求分析” 的讨论。为了能够获得更加具体的观感,我们选了两个实战的案例,如下:
打造 “互联网”;
存储新兵 “对象存储”。

案例: 打造 “互联网”

从对信息科技的影响面来说,最为标志性的两个事件,一个是计算机的诞生,另一个是互联网的诞生。
我们前面在 “05 | 思考题解读: 如何实现可自我迭代的计算机?”这一讲中,已经剖析过一个 MVP 版本的计算机是什么样的。
今天,我们就以 “互联网” 这个产品为题,看看应该怎么去做需求分析。
我们想象一下,把我们自己置身于互联网诞生之前。互联网并不是第一张网。在此之前的信息世界中,更多的是某个企业专用的局域网。不同的企业会选择不同公司所提供的网络方案。这些网络方案缺乏统一的规划,彼此并不兼容。
那么,怎么才能打造一个连接人与人、企业与企业,甚至是物与物,能够 “连接一切” 的 “互联网”?
首先,从根源需求来说,我们期望这不是某个巨头公司的网,也不是政府的网。这是需求的原点,这一点上的不同,产生的结果可能就很不一样。
如果我们忽略这一点,就有可能会把它做成微信网(WechatNet),或者中国网(ChinaNet)。它们可能会是一张巨大的网,但都不是 “互联网”。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《许式伟的架构课》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(27)

  • 黄强
    互联网产品的核心需求或稳定点是“连接”,安全等其他需求属于变化点,所以在互联网产品设计中,连接交给了稳定的协议、物理设施等,安全交给软件层来实现以利于扩展

    作者回复: 👍

    2019-06-14
    16
  • Longerian
    这是 Google 设计 GFS 的背景导致的,网页库存储,或者日志型存储的共同特征是单个文件很大,可以到几个 G 级别,这样的话文件系统的元数据就会减少到单台机器就可以存储的级别。

    这句话咋理解?

    作者回复: 存储空间=单文件平均大小*文件数。在相同集群规模下,单文件平均大小越大,文件数越少。比如平均大小1M,和平均大小1G,文件数差1024倍。而元数据集群规模与文件数从正比,所以平均尺寸1G的集群,元数据规模非常小。

    2019-06-14
    11
  • 一门深入 长时薰修
    2019-06-14
    7
  • MJ
    【题外话】老师,是否了解中型企业关于安全的架构,一般怎么做,有没有好的推荐参考?最近做这事比较急。

    作者回复: 安全涉及面太广,不知道你关注点是什么?

    2019-06-14
    4
  • 水木年华
    老师讲的第一个案例,打造“互联网”。里面讲到了构建互联网基础设施,还要在启动阶段开发杀手级应用来吸引客户。

    我一下子就想到了区块链上的公链EOS,一直在努力做公链基础建设的事情。这还不够,官方也发布了一个社交应用Voice,希望把这个应用打造成为一个杀手级应用。

    不同的场景,相同的打法。这种架构需求分析的思路原来是相通的。

    作者回复: 我没有研究过voice,但是我判断可能还是有很大不同。互联网的两个应用email和www,都是去中心的,并不存在某个企业可以操控它(这和微信很不一样)。如果voice也是一样完全公开协议,分散部署(每个企业数据在自己这里),那么我觉得这个事情是成立的,如果voice是一个某个公司的app,那么和公链的关联就很勉强。

    2019-06-15
    1
    3
  • 晓凉
    感谢许老师的分享,我问两个问题。老师说大数据存储方式在从hadoop转向对象存储,目前有什么好的开源对象存储方案推荐。另外关于树形结构的操作,我的理解是正在被修改的两个节点,只要其中一个不是另一个的祖节点,就应该可以同时修改,所以叶节点都可以同时修改。老师说树结构的并发性能问题主要来自哪些方面。

    作者回复: 修改操作要么都成功要么都不成功,所以这是一个分布式事务。另外,传统树状结构在找文件的过程是要一层层目录解析下去的,在分布式元数据的情况下查询效率较低。

    2019-06-14
    3
  • 梦醒十分
    许老师分析了pc时代和移动互联网两个方面的存储需求,从而从需求分析出适合的技术发展趋势。很有洞察力!
    2019-06-14
    3
  • honnkyou
    “SAN,我们不用细分析就知道它们不是文件型存储的最佳选择”
    老师这句话不是很理解,另外,对象存储底层也是块存储设备吧。我理解的对象存储是在文件系统之上又封装了一层,不知道对不对。

    作者回复: 嗯,应该说不在讨论范围,反正他上面还有一个其他的存储

    2019-06-14
    2
  • Geek_88604f
    桶下可以建很多层级的目录,这个是不是树形结构?

    作者回复: 假的,基于 ListPrefix api 模拟出来的

    2019-06-14
    2
  • 随心而至
    当一张表或者一个文件太大了时候,人们就会想办法把它分开。Kafka里面有partition,MongoDb有sharding,elastic search也有sharding,redis有slot,RDB有分库分表,等等。刚刚入行,说的不一定对,如有错误,请老师指正。

    作者回复: 分开是自然的,否则物理上也放不下

    2019-06-14
    2
  • hantics
    老师,hdfs分布式文件系统也是分散到各台机器上,通过namenode来组织,处理的也不仅是日志,我理解数据库类型数据都可以处理啊。 OBS类型我只觉得优势在可以存储图像、视频等异构类数据,具体还有其他什么优势嘛?

    作者回复: hdfs和obs最大差别还是meta server,一个是fs,一个是kv。这意味着obs集群容量限制几乎没有,这个优势是非常重要的。

    2019-08-01
    1
  • 木 易
    老师,现在越来越多的应用是各种web端,我们直接申请账号,在浏览器中编辑文档,可以实时保存,只要有网络,随时随地都可以协作办公,这种业务必须保证存储的高可用和可靠性,这种类型的业务用到的存储技术,底层用到的是对象存储技术吗。

    作者回复: 不一定,后面我们会分析到

    2019-06-20
    1
  • Dimple
    以前一直不理解桶(Bucket)这个东西,只知道在云存储上建一个桶,才能开始云存储。这下明白了,也是之前太懒了,都没深入研究。
    2019-06-19
    1
  • Chen
    学会了如何说服团队使用对象存储,😄
    2019-06-18
    1
  • 科春
    我看贵司的官方网站中提供视频监控边缘节点的云存储,然而平安城市类的项目,视频监控既有视频数据也有图片数据,分别都是周期性保存。那么监控视频前端采集的数据是视频流,存储是如何看待这类数据以及这类业务应用对存储的要求是什么呢?七牛云和传统监控厂商所提供的云存储有什么区别?

    作者回复: 七牛云上有很多这类视频监控类业务应用,比如海康萤石、中移动的和目摄像头等。他们的共同特征是:上行量大、存储有周期性(对象存储可以设置文件的lifetime,主要就是针对这类场景)。一般传统监控厂商都会基于七牛云这类云存储对外提供服务。

    2019-06-17
    1
  • Aaron Cheung
    打卡18 翻回国内不易…

    作者回复: 辛苦了

    2019-06-16
    1
  • Eason
    自己虽毕业多年,许老师,第二个案例分析,感觉有点论文的影子。论述背景,提出挑战,综诉现有方案为什么不满足,然后提新的方案。
    2019-06-15
    1
  • prader
    对象存储,自己简单的理解是,通过数据库上的表,建立文件和路径的映射。
    2019-10-27
  • Geek_88604f
    感谢老师的答复!重新理解一下:稳定点是用户对存储对象的增删改查,变化点是不同的存储结构(数据结构)。需要根据数据结构的特点选择不同的存储类型。
    2019-10-04
  • Geek_88604f
    重温了《需求分析下》,文中关于存储的需求分析中什么是核心稳定点?什么是变化点?个人认为存储的稳定点是用户对存储对象的增删改查,变化点是存储系统的类型(包括文件系统、数据库、KV等)。如何隔离变化点则通过存储网关来实现,使得用户不用感知底层的变化和扩展。不知道理解是否正确,请老师指正。

    作者回复: 存储类型是结果(解决方案)不是原因(需求)。我们分析需求的时候不应该把解决方案放到需求中去分析。

    2019-10-03
收起评论
27
返回
顶部