架构师训练营第四周 - 作业

用户头像
桔子
关注
发布于: 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

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



用户头像

桔子

关注

还未添加个人签名 2018.11.15 加入

还未添加个人简介

评论

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