第四周作业
问题:一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述。
1.简单服务LAMP模式的单机应用->集群
用大量的节点去支持高并发,因为单点的性能瓶颈很容易就被达到,使用负载均衡将负荷转移到不同的节点上,且能够支持动态的扩容,根据并发量决定投入的集群数量
2.单体应用->分布式
将复杂服务进行分割分层后部署在不同节点上,这样可以保证每个节点上有独立的CPU、内存、存储资源,发生资源争用的可能行也会很大程度的降低,主要包括:分布式应用和服务(微服务、RPC)、分布式静态资源、分布式数据和存储、分布式计算(大数据)
3.直接访问底层数据库->缓存
当并发较大时,数据库很快就成为制约并发的瓶颈,是否所有的数据需要每次都从数据库获取?静态资源的加载如果都需要来访问我们的文件服务器是否加载速度很慢?为了解决以上问题,我们可以考虑增加缓存,动静分离,将静态资源放CDN上,动态数据也不是每次都变更的,热点数据缓存在内存中,使用反向代理也可以缓存一部分资源。
4.同步业务->异步
将业务分为若干个阶段,是不是每个阶段都需要直接依赖一下阶段的结果?还是可以相对独立的进行处理,只要把数据共享出来,不影响下一阶段的处理就可以了。在大型互联网应用中,异步是削峰解耦的重要手段,异步能够提高系统的可用性、响应速度。在实际应用中我们通过内部线程池以及mq等方式实现异步。
5.单一节点->冗余
互联网应用要求7*24小时不宕机的运行,但是服务器总有可能出现故障,想要保证主服务器宕机的情况下服务不中断、数据不丢失,就需要一定程度的服务器冗余、数据冗余。
6.微服务带来的新的技术需求:自动化
在原来单机服务的情况下,监控都很简单,随着分布式、集群等技术的引入,靠运维人工值守已经难以承受重荷,这种情况下自动化就显得越来越重要,监控、告警、灰度发布、熔断、服务自动降级等变得越来越被重视起来。
7.安全
互联网应用的开放特性使得它在安全方面面临着巨大的挑战,身份认证、鉴权、防止XSS攻击、对垃圾信息以及敏感信息的过滤等,成为了每个互联网应用在设计时必须要考虑的事情。
评论