架构师训练营第四周 - 作业
一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述。
答:
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
解决的问题:海量数据的查找性能低下,查询结果不够丰富的问题。
评论