写点什么

架构师训练营 - 命题作业 第 4 周

用户头像
水边
关注
发布于: 2020 年 07 月 01 日

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

答:

1、GeoDNS:跨地域的域名解析服务;

功能:根据用户所在地域,返回该地域的域名 IP;

解决的问题:让用户就近访问服务,减少网络损耗。


2、负载均衡:服务横向扩展方案,比如 LVS、HaProxy、Nginx 或者最简单的 DNS 轮询。

功能:后端有多台服务器提供服务,通过负载均衡,让用户的访问根据一定的访问策略,均匀的落到不同的服务器上。

解决的问题:降低单台服务器的压力,提升响应速度,对于 LVS、Nginx 等,还可以做到故障检测和转移。


3、CDN:内容分发网络;

功能:在不同的地域部署内容缓存服务器,然后根据用户所在地域,就近返回请求数据;

解决的问题:用户可以就近获取请求数据,避免了网络堵塞或链路过长等问题带来的请求慢或失败。


4、数据库读写分离:

功能:一台用于业务写入的主数据库服务器,多台用于业务读取的从数据库服务器;

解决的问题:单台数据库读写压力过大的问题,主数据库做写入保障,不至于因为读压力造成写入失败,另外提供多台从数据库,可以横向扩展,分散读取压力。

需要注意的是:至少要 2 台以上的数据库用于读取,因为每台数据库都会有 100%的写压力。


5、消息中间件:

功能:提供接收生产者消息,并提供消息队列的订阅推送功能,以及消息的可靠性保障;

解决的问题:

1、多个服务之间的业务解耦,避免服务相互依赖太紧密,造成业务维护困难;

2、削峰:通过 Qos 流量控制,避免突发业务请求,造成下游压力从而崩溃;

3、异步处理:对于用户不关注的业务,通过消息异步处理,然后快速返回,避免用户等待。


6、Redis 分布式缓存:

功能:提供统一的内存缓存服务;

解决的问题:确保多台服务器的缓存一致性,如果使用内存缓存,可能多台服务器缓存会出现差异,从而导致请求前后 2 次不一致。


7、分布式部署:

功能:根据业务不同,拆分出不同的项目进行开发和分别部署,对外提供服务;

解决的问题:模块化、微服务化,方便维护和可扩展。


8、全文检索:

功能:提供统一的数据采集和搜索服务,比如 ES

解决的问题:海量数据的查找性能低下,查询结果不够丰富的问题。


9、DevOps:

功能:自动化的配置、部署、测试、运维一整套工具和流程管理。

解决的问题:大规模服务的统一配置管理、统一的发布和自动化测试、运维工具,避免人工操作失误的可能,同时包括安全测试、冒烟测试等。


10、分布式事务:

功能:在多服务的运行时,保障原子性事务操作的技术能力;

解决的问题:分布式部署过程中,一些原子性事务要求的操作,比如订机票,需要支出、到账、出票、出保险这 4 个事务,要么全完成,要么都不操作。


11、分布式锁:

功能:对一些冲突资源的操作顺序保障;

解决的问题:分布式部署过程中,要对一些有冲突的资源加锁操作,比如秒杀,要保障不会出现超卖和少卖的问题,需要分布式锁的支持。


12、数据挖掘和推荐:

功能:完成海量数据的分析和标签管理;

解决的问题:分析用户习惯,推荐关联数据,比如 ITEM CF 基于物品的推荐,USER CF 基于用户的推荐等。

发布于: 2020 年 07 月 01 日阅读数: 87
用户头像

水边

关注

还未添加个人签名 2019.04.14 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营 - 命题作业 第 4 周