写点什么

架构师训练营第四周作业

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

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


大型互联网应用系统也是从为了解决特定问题的小型系统演进而来的,在不同的发展阶段,会遇到不同问题,随着业务的增长系统也会变得越来越复杂,访问量由量变引起的质变也会给系统带来瓶颈。为了应对这些几乎所有互联网应用都会遇到的问题,人们提出了所谓“架构模式”。


一、分层,通常指水平分层,把整个业务处理流程进行端到端的水平切分,更多的是业务无关的应用层面分离,目的是分离关注点,解耦依赖,使得各层可以更加聚焦于本层的责任,以各自不同的速率发展。举例来说:一般将系统水平拆分为领域层、应用层、基础设施层,依赖关系从内向外,领域层是最稳定最核心的业务逻辑;应用层对外提供一个易用的接口,负责组装和调用领域层,同时跨横切面的关注点,如日志、事务等也在这层实现;基础设施层对上负责接入外部流量,对下负责数据持久化。


二、分割,是指垂直切分,即将之前大而全的业务功能切分为多个不同的业务子系统,每一个子系统都可以有自己的技术栈和数据存储。对应到组织架构,每个子系统也是组织的边界。举例来说:大的系统可以拆分为不同的子域,如核心域、通用域、支撑域,每个域对应一个或多个子系统,解决的是被拆分后的子问题。对于电商系统来说就是商品、订单、库存、账号、物流等等子系统。


三、分布式,即利用多台服务器实现水平扩展,相比于使用运算速度更快,性能更强服务器的垂直扩展方式,水平扩展具备几乎无限的扩展能力,且成本低廉。但是分布式会给系统开发带来巨大挑战,需要更多的基础设施来保证开发和运维的持续。对于大型互联网应用来说,分布式是必经之路。


四、集群,即利用多台服务器部署相同的应用同时对外提供服务,一般需要前置负载均衡来路由前端的请求流量。集群中的服务器也不全都是平等的,比如 MySQL 的主从模式。


五、缓存,即利用不同设备读写速度差异,或不同物理距离差异,缓存可以大大加快用户获取数据的速度。比如 CPU 的多级缓存、本地内存缓存、分布式的 Redis 缓存、部署在各地运营商机房的 CDN 缓存等等。


六、异步,即相对于调用方等待被调用方完成后返回的同步调用,异步调用不等待执行结果而是立即返回。异步有利于系统或模块间的解耦,提高系统可用性。但异步同时也具有复杂,不容易调试,对事务性支持不友好的缺点。比如响应式编程、消息队列的发布订阅等。


七、自动化,对于大型互联网应用来说,分层,分割和分布式集群会使用大量的服务器(或虚拟机),那么自动化无人值守的运维就显得尤其重要。


用户头像

一剑

关注

还未添加个人签名 2017.11.23 加入

还未添加个人简介

评论

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