架构师训练营 - 学习笔记 - 第四周

发布于: 2020 年 06 月 29 日
架构师训练营 - 学习笔记 - 第四周

这周是端午节,有几个亲戚来了,所以没赶上直播,只能看录播了。

这周主要互联网分布式系统架构演化及案例,对我来说比较陌生(本人没做过 Web 开发,只做过嵌入式C/C++,Android 移动开发(API 15, 现在 Android 10, API 29),目前在做 DevOps 相关工作(和 Web 沾点边))。。。额, 这周没多少感悟,因为之前都没做过、经历过,要坚持思考并持续输出真的是很难。。。想放弃有一千、万个理由,但坚持就只有一个——真的很想去做这件事。

下面为笔记。

感悟

先说问题

在做个人演讲、技术总结、技术汇报时,首先说问题(Why),为什么要做这件事情,遇到了什么问题。然后再说运用了哪些技术方案去解决它(What). 切忌一上来就说架构、技术方案等。因为你在公司做事都是业务驱动的,技术是服务于业务的,纯粹为了酷炫的技术而去修改设计是没有什么业务价值的。

架构都是从简单做起的

架构都是从简单开始,根据业务,一步步迭代的。就像淘宝这样的大型架构,也是从0开始,从简单的设计开始,一步步优化迭代。不要想一下子搞了一个很复杂的架构,根据当前的业务,能够支撑就好。当支撑业务的发展遇到瓶颈和问题时,不断重构、升级架构。

三点基本原则:

  • 保持简单

  • 合适就好

  • 迭代演进

Let it Fail

不要默默无闻地去解决问题,让它失败,让问题暴露出来,让大家都意识到问题的严重性,然后你再去解决,这样你的价值才会被体现出来。

名词

PV: Page View 日均页面浏览量

互联网分布式系统架构演化 - 2020/6/25 - 星期四 端午节

互联网系统面临怎样的挑战?

  • 高并发,大流量

  • 高可用

  • 海量数据

  • 用户分布广泛,网络情况复杂

  • 安全环境恶劣

  • 需求快速变更,发布频繁

  • 当然需要我们 DevOps 做持续集成、持续部署、持续交付啦😊

  • 渐进式发展

应对高并发挑战的两个技术方向

垂直伸缩

  • 通过升级硬件和网络吞吐能力

  • RAID 增加磁盘 I/O 吞吐能力

  • SSD 固态硬盘/大内存/增加网络接口/多 CPU

  • 简单、短期伸缩性方案

  • 缺点

  • 达到某个程度后,增加计算能力需要更多的花费

  • 垂直伸缩有物理极限

  • 操作系统的设计或者应用程序自身制约着垂直伸缩最多只能达到某个点

水平伸缩

  • 通过增加服务器提升计算能力的一类架构方法

  • 伸缩的圣杯,它可以克服垂直伸缩带来的单位计算成本随计算能力增加而迅速飙升的问题

  • 总是可以增加更多的服务器,不会想垂直伸缩那样遭遇到单台服务器的极限

互联网架构演化 - 11 个阶段

0. 最简单的互联网应用架构

  1. 应用数据分离

  1. 使用缓存改善系统性能

  1. 使用应用服务器集群改善系统的并发处理能力

4. 数据库读写分离

  1. 使用反向代理和 CDN 加速网站响应

  1. 使用分布式文件系统和分布式数据库系统

  1. 使用 NoSQL 和搜索引擎

  1. 业务拆分

  1. 微服务及中台化

  1. 大数据与智能化

互联网架构模式

架构模式

每一个模式描述了一个在我们周围不断重复发生的问题以及该问题解决方案的核心。这样,你就能一次又一次的使用该方案而不必做重复的工作。关键在于可重复性

  • 分层

  • 将系统在横向维度上切分成几个部分,每个部分负责一部分相对比较单一的职责,然后通过上层对下层依赖和调用组成一个完整的系统。

  • 分割

  • 纵向方面对软件进行切分

  • 分布式

  • 分布式应用和服务

  • 分布式静态资源

  • 分布式数据和存储

  • 分布式计算

  • 集群

  • 缓存

  • CDN

  • 反向代理

  • 本地缓存

  • 远程缓存

  • 异步

  • 提高系统可用性

  • 加快网站响应速度

  • 消除并发访问高峰

  • 冗余

  • 服务器冗余运行,数据冗余备份

  • 自动化

  • DevOps 自动化运维

  • 安全

  • XSS 攻击,SQL 注入

如何衡量一个系统的架构设计

高性能

高可用

可伸缩

可扩展

安全

互联网架构技术一览

  • 前端架构

  • App 及 Web 开发技术

  • 浏览器及 HTTP 优化技术

  • CDN

  • 动静分离

  • 图片服务

  • 反向代理

  • DSN

  • 网关及应用层架构

  • 网关架构

  • 负载均衡

  • 动态页面静态化

  • 业务拆分

  • 服务层架构

  • 微服务框架

  • 分布式消息队列

  • 分布式缓存

  • 分布式一致性(锁)服务

  • 存储层架构

  • 分布式文件

  • 分布式关系数据库

  • NoSQL 数据库

  • 后台架构

  • 大数据平台

  • 搜索引擎

  • 推荐引擎

  • 数据仓库

  • 运维与安全

  • 数据采集与展示

  • 数据监控与报警

  • 攻击与防护

  • 数据加密与解密

分布式系统架构案例 - 2020/6/27 - 星期六

听了 4 个案例,相当于参加了一个技术会议了。

维基百科技术架构

LVS: 负载均衡服务器,路由选择服务器

GeoDNS: 地理 DNS

Image server: 文件服务器,用与下载图片等大文件,类似于 CDN.

Distributed Object Cache(Memcached): 分布式缓存服务器,存储热点数据。

Squid: 反向代理服务器

Application servers: 应用服务器 PHP

淘宝

  • 2003.5 - 2004.1

  • LAMP

  • MySQL 读写分离

  • 业务中中心化

  • 庞大的系统(Denali) 拆分

  • 拆分系统

  • 拆分数据库

  • 组织结构支持

  • 简化&管控

宅米网技术变迁

1.0

2.0

3.0

新浪微博

参考链接

https://xie.infoq.cn/article/18a36f29c365c8ae9ea0d6bd2

https://xie.infoq.cn/article/43a7c2c934aeb7e501ac92761

https://xie.infoq.cn/article/9030faeb4c4497a89939a4062

https://xie.infoq.cn/article/1b5a043bfc55ef2fb073b131f

用户头像

心在飞

关注

还未添加个人签名 2017.10.15 加入

2个女儿的爸爸 | 程序员 | CS 反恐精英

评论

发布
暂无评论
架构师训练营 - 学习笔记 - 第四周