写点什么

架构师训练营作业 (第四周)

用户头像
王海
关注
发布于: 2020 年 06 月 30 日

一个典型的大型互联网系统使用了哪些技术方案和手段,主要解决什么问题?请列举。



  • CDN

内容分发网络,本质依然是一个缓存,而且将数据缓存在离用户最近的地方,使用户以最快的速度获取数据,即所谓网络访问第一跳。

由于CDN部署在网络运营商的机房,这些运营商又是终端用户的网络服务提供商,因此用户请求路由的第一跳就达到了CDN服务器,当CDN中存在浏览器请求的资源时,从CDN直接返回给浏览器,最短路径返回响应,加快用户访问速度,减少数据中心负载压力。

  • 负载均衡

​为了解决单台机器的处理能力上限,需要以集群的方式部署一组应用服务器提高请求连接数量、响应速度以及服务器可用性。通过软件负载算法如轮询、随机、hash、加权等路由一组应用服务器共同提供服务。

  • 动静分离

动态资源(jsp、ftl、thymeleaf)与静态资源(js、css、img)分开部署。在一个网站中,静态资源(js、css、img)是比较占宽带资源的,动态资源占带宽很小。1M带宽=128k/s,如果我们静态资源与动态资源存放在同一台服务器上面,当静态资源不断增多的时候,我们的服务器访问时扛不住,因为静态资源消耗过多的带宽,导致静态资源无法访问或者访问非常的慢。

  • 分布式缓存

数据的快速读取,以空间换时间,提高并发、响应数据,减少直接对数据库或其他存储方案的冲击,毕竟磁盘IO的寻址速度还是很慢的,匹配不了CPU的计算速度,造成CPU资源的浪费。

  • 消息队列

异步处理、系统解耦、流量削峰。

  • 分布式文件系统

​通过分布式文件系统,解决存储容量问题、容灾能力,例如HDFS可以在廉价的机器上提供高吞吐量的数据访问,海量的数据存储,通过复制集解决可靠性、可用性问题

  • 分布式一致性

​在分布式系统中,数据一致性是一个难点,在不同场景下采取的方式也不一样。

在金融场景下,要保证数据的一致性,通常采用二阶段提交,TCC等手段进行数据的一致性处理,虽然性能、吞吐量不高,但能保证数据的一致性。

在非金融场景下,可采用可靠消息机制保证数据的一致性,通常还会增加失败补偿策略进行数据的纠正。

  • 链路追踪

分布式系统中,一个请求的调用链路会很长,很复杂,如何发现链路中哪个节点处理的响应时间问题,解决方法是通过在请求中的生成唯一的traceid,串联不同span中调用关系,最终通过日志采集组织请求中各个阶段的指标参数进行可视化,及时发现调用问题。

  • 日志采集与展示

分布式系统中服务器日志、系统日志等存储在成百上千个节点服务器上,如何快速定位日志是分布式系统需要解决的问题。目前开源的解决方案,是通过EFLK进行日志的采集、转换、存储、展示。

  • 指标监控报警

​分布式系统中服务器的性能监控、app的性能监控等问题,目前开源的解决方案是通过promotheus时序数据库进行指标信息的采集,通过granfa进行可视化展示,根据规则报警。

  • 数据库分库分表

随着数据量的增长,数据库的性能将会遇到瓶颈。通过对数据进行分片存储,减少单个节点的数据量,借助多台服务器进行水平扩展,提高数据操作的各方面性能。分库分表的手段有hash、范围映射表等。

​当然数据库的分库分表也会带来数据迁移的困难,通常情况下通过增加中间层减少变化对上层系统的影响,例如Mycat



发布于: 2020 年 06 月 30 日阅读数: 79
用户头像

王海

关注

还未添加个人签名 2018.06.17 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营作业 (第四周)