写点什么

架构实战营毕业总结

用户头像
知莫问
关注
发布于: 2 小时前

一、概念

什么是集群消费和广播消费?

集群消费就是同一个消息只会被集群里的一个消费消费,广播消费就是同一个消息会被集群里的每个消费消费。

去 IOE

它是阿里巴巴造出的概念。其本意是,在阿里巴巴的 IT 架构中, I 是指“IBM”,O 是指“Oracle”,E 是“EMC”。去 IOE 就是去掉 IBM 的小型机、Oracle 数据库、EMC 存储设备,代之在开源软件基础上开发的系统。

以 IBM、Oracle 和 EMC 为代表的三大国际巨头组成的 IT 系统一直是中国企业信息化的“黄金搭档”,随着云计算和开源软件技术的成熟应用,这种高大上的“黄金搭档”必将走下神坛。

OLAP、OLTP 的区别


数据处理大致可以分成两大类:联机事务处理 OLTP(On-line transaction processing)、联机分析处理 OLAP(On-Line Analytical Processing)。OLTP 是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。OLAP 是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。


OLAP 是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。

OLTP 是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易;

时间局部性

这一时间访问的数据,下一时间很可能也会被访问

空间局部性

这个位置的数据被访问,下一个位置的数据很可能也会被访问。

分布式事务的 3 中形式

  1. 事件表

  2. 分布式消息队列

  3. TCC 代码入侵新很强,每个接口都要实现成 3 个接口

架构设计 4 类图

  1. 系统架构图

  2. 系统黑盒图

  3. 系统白盒图

  4. 系统序列图(时序图)

二、技巧

  1. 分库是为了解决单实例连接数限制的。如果并发不高,不需要分库。

  2. 加 kafka 一般是为了对接多个需要同步的系统,或者为了批量刷盘。

  3. 日志型、流水型、动态型、轨迹型的数据都可以用 redis,比如说用户的浏览历史,滴滴司机的轨迹。

  4. 备选架构设计:先排列组合创造,然后再评估,评估就是 trade-off,所以架构设计/软件设计 = 创造 + 取舍(trade-off)。

  5. 读写分离是为了解决单机的读性能瓶颈,分库分表是为了解决单机的写性能瓶颈。

  6. 如果是 P5/P6,是很有可能通过跳槽来提升等级的,但是如果你现在已经是 P7/P8,几乎不可能通过跳槽来提升等级。

  7. 所有的存储系统介绍:https://db-engines.com/en/

  8. 将开源项目的架构图重新画一遍,会有更深入的理解。

  9. 一致性保证:牛逼就自己实现 Raft 算法、不牛逼就直接使用 Zookeeper。

  10. F5 至少 2 台,否则会出现单点故障。

  11. VIP(Virtual IP Address)用来做高可用。

  12. 在计算服务性能时,忽略 CPU 频率的差异,忽略内存的影响,主要是计算性能和存储性能。

  13. 存储空间不是瓶颈,因此机房之间可以互备数据,也就是说每个机房都可以有全量数据。

  14. 库存是强一致性,不会两个机房都写同一份数据,同一个用户的库存每次都会写到同一个机房,并且这个用户的库存也只会从这个机房里读取,其他机房可能有这个用户的库存信息,但是那只是为了备份数据。

  15. 内存和硬盘相对来说不值钱,所以不用刻意去计算。

  16. SOA 在传统行业应用:异构、变化慢,微服务应用于互联网企业:同构,变化快。

  17. SOA 服务相对比较大,一个系统就是一个服务。

  18. 微服务其实应该是小服务,并不是微服务,因为服务太多会产生通信成本、维护成本等等。

  19. 微服务架构师端对端分层架构的业务层,单个微服务可以是整洁架构、微内核架构等。

  20. 租户的 2B 平台可做成微服务,因为平台一般是同一家公司开发的。

  21. 爬虫平台:抓取服务、存储服务、解析服务、分析服务。

  22. 网络调用大于 CPU 的计算时间。

  23. 微服务架构和单体架构的区别是微服务是分布式架构,需要拆分、分布。

  24. 只拆分代码不拆分数据不算微服务,只算微服务演进的中间状态。

  25. 全链路跟踪(比如 Skywalking,普罗米修斯?)只是在检测错误的时候使用,不能一直开着。

  26. 使用 v1/v2 路径版本,可以拷贝代码来实现。

  27. 数据中台用 dataworks,maxcompute 等。

三、问答

备选方案从哪里来?

头脑风暴得出 5、6 个,最后确定 3 个。

为啥 canal 不直接到 es, 还要加个 Kafka, 是因为 es 的刷盘速度跟不上 canal 吗?

有多个系统需要 binlog 消息。

业务系统在不影响整体复杂度的时候,高性能是不是越高越好?

不是,复杂系统的高性能很难估算,一般都是上线之后进行优化。

备选架构哪个得分最多就选哪个吗?

不是,要按优先级排序。

一个架构系统中即用 Kafka,也用 RocketMQ 吗?

事件和日志用 kafka,例如用户点击和操作,用户轨迹、大数据的数据传递等;业务消息用 RocketMQ,例如用户充值成为 VIP 后,一系列的后续通知。

什么时候使用广播消费?

这种消费往往应用在有状态的服务,比如缓存服务器去消费消息更新自己的缓存数据,那么每一台缓存服务器都需要拿到消息。

有哪些常用分片方式?

  • ID 分段

  • ID Hash/Range

  • 时间分段,适合日志、流水等。

每次都要自己测试性能的话,很耗费时间和精力,怎么办?

  1. 参考官方测试数据,但不能全信;

  2. 第三方性能测试对比,相对更客观

多少数据算 Big Data?

1T 容量以上

多级负载均衡对性能有影响吗?

性能影响可以忽略不计。

ClickHouse 和 Hadoop 有什么优缺点

Hadoop 生态强大,ClickHouse 支持 SQL 查询,很适合配合 MySQL 使用。

改成分区存储有什么不同?

分区之后有可能可以使用单机

视频网站的带宽成本是主要成本,用 CDN 并没有减少总体访问带宽,那么为何用 CDN 可以降低带宽成本?

微服务按业务拆分步骤

  1. 业务专家/业界案例/先粗后细划分业务领域

  2. 按三个火枪手决定拆分几个微服务

  3. 使用多对一、一对一、一对多的微服务拆分方式

微服务按性能拆分

  1. 按流量拆分,提升性能

  2. 按业务重要程度(比如支付、监管、安全等等),降低业务间的影响程度

  3. 按可用性,比如经常出问题的服务

  4. 按稳定性,业务是否在不断迭代

合并微服务的技巧

  1. 使用多对一方式合并,不能使用多对多方式,也就是合并的过程中不要拆分服务,否则就太复杂了

  2. 逐步合并

四、灵感

可以做一个系统出来,专门用来辅助系统架构设计。架构师只需要输入一些关键数据,然后系统就能生成多个备选方案。像中间件多维度的对比,其实都是通用的信息,系统做起来很简单。中间件的特性也可以根据时间的推移不断更新。而且相关参数可以由操作员自己来调整。


用户头像

知莫问

关注

还未添加个人签名 2019.11.25 加入

还未添加个人简介

评论

发布
暂无评论
架构实战营毕业总结