架构师训练营第四周:系统架构

作业一
一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述。
CDN
通过在离用户最近的运营商机房存储静态内容,提升响应速度,提高用户体验,同时减少后端服务器压力。但是在数据修改时,需要通知运营商各个数据中心,数据同步过程需要时间,可能造成数据不一致。
网关
请求过滤,实现类似于防火墙的功能,可以屏蔽不安全请求或者恶意攻击
请求鉴权,对于某些需要授权访问的信息,实现鉴定功能
反向代理,对外暴露一个入口,将内部逻辑或服务透明化,有益于安全,也能在后期系统重构时屏蔽掉变化
反向代理
无论内部系统结构多么复杂,都通过反向代理组件实现统一出入口,屏蔽内部逻辑。
负载均衡
相同服务横向扩展时,通过负载均衡组件按照策略分配请求,平衡各个后端服务实例的负载。
服务注册、服务发现
服务注册和发现是成对出现的两个组件,在大型互联网系统中,相同服务会部署很多实例,这些实例可能发生动态变化,而且频率可能比较高,如果手工维护新增或删除的服务ip,工作繁重低效且容易出错,所以增加服务注册组件,让服务实例自动告诉注册中心自己的ip,消费者直接通过服务发现组件得到全部ip后,根据策略选择调用真实服务。具体选型之前写过博文总结,请斧正,<https://www.howardliu.cn/service-registry-and-discovery/>。
配置中心
配置中心通过系统管理配置信息,在配置发生变化时,不需要修改系统代码,甚至不需要重启服务。将配置都放在配置中心中,还能保护线上敏感配置信息的安全性,而且,大部分配置中心还附带审计效果。
调用链监控
大型互联网系统中,各个系统之间会互相调用,共同完成一个功能。因此,当请求发生故障时,不知道具体是哪块出现问题。另外,服务多了之后,彼此之间的请求不容易被很好的控制,甚至会出现环形调用。有了调用链监控之后,可能很清楚的知道服务之间调用的链条,也能知道问题出在哪个环节。
服务监控
服务监控是为了在服务运行期间监控服务器、服务实例、请求等各项指标,实现异常告警、问题追溯等。
日志监控
大型互联网系统必然服务很多,如果出现问题就需要登录到各个服务器上排查,绝对影响效率,而且很多系统采用容器化技术,日志查起来更是费劲。所以需要一个统一收集日志的系统,便于日志查询、追溯。
消息队列
消息队列可以实现两个目的:削峰、异步,这两个都是提升系统负载能力的有效手段。
分布式缓存
分布式缓存是缓存的升级版,通过分布式存储系统提供更强大的服务能力。一般是将查询数据放在缓存中,这样当用户查询数据时,就能够直接从缓存中获取,不需要给数据库太多压力。
数据库
包括关系型数据库和NoSQL数据库。大型互联网系统中,关系型数据库一般会采用分库分表结构,这样通过横向扩展数据库,提升服务能力,避免单库称为瓶颈。NoSQL数据库是有两种目的,通常存储行数超过关系型数据库,可以作为关系型数据库的集中存储;另外,还能够支持很多关系型数据库不能支持的数据。
熔断、降级、限流
熔断可以解决瞬时请求过多或者异常请求过多对后端服务造成的损害;降级是为了在请求高峰时,减少优先级低的请求,保护优先级高的请求;限流是将请求频率控制在一定范围内,不至于因为请求过多对后端服务造成压力。
容器技术
实现高效快速部署,而且借助注册中心、配置中心等外围组件,可以实现相同代码部署多个环境中。
作业二:根据当周学习情况,完成一篇学习总结
本周内容太多,还没有完全吃透。先上几个总结的点,复习之后再继续补充。
架构设计的目标是为公司盈利,架构演进的目标是提升用户体验;
架构需要设计及演进,设计的标准是动静分离、冷热分离、业务分离,演进的标准是分清主次;
架构模式
1. 分层:在横向上分隔系统角色
2. 分隔:在纵向上分隔组件单元
3. 分布式:这是分层、分隔的主要目的
4. 集群:经过分层、分隔后的服务的一组实例
5. 缓存:CDN、反向代理、本地缓存、远程缓存
6. 异步:将业务操作分为多个阶段,提高系统可用性、加快响应速度、削峰
7. 冗余:数据冗余备份、服务冗余
8. 自动化:无人值守实现系统自愈
9. 安全
系统衡量标准
1. 高性能
2. 高可用
3. 可伸缩
4. 可扩展
5. 安全
作业提交
作业提交地址: https://jinshuju.net/f/FXMpbx
版权声明: 本文为 InfoQ 作者【看山】的原创文章。
原文链接:【http://xie.infoq.cn/article/389f5461b23944ceaea8b13ed】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论