架构师训练营第四周作业
问题:
一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述。
解答:
假设这个大型互联网系统的整体架构如下。
从可能遇到的主要几个问题,来总结各层应该如何解决
1. 性能
提高性能的手段:
1、通过缓存提高读能力
2、增服务器,降低单点压力
3、减少交互次数
4、缩短通讯链路
等等等等....
为了提高性能每一层可以做的事情
互联网应用层:
常用数据提前缓存到本地。
对请求结果进行缓存。
多次单个请求,合并成一次批量请求。
压缩请求报文。
接入层:
静态资源通过CDN获取。
提供就近接入的入口。
横向扩展节点数量。
垂直增加机器性能。
网关层:
横向扩展节点数量。
垂直增加机器性能。
应用服务层&支撑服务层:
使用分布式缓存/NoSQL,提高读能力。
使用消息队列,同步改异步。
使用性能更高的通信方式(例如用RPC替代Http)
需要大量计算的业务,提前计算出结果,互联网应用层直接查询结果。
数据库做分库分表,提高读写能力。
数据库做读写分离,或者将读请求放到读性能更高存储中,例如HBase、ES。
横向扩展节点数量。
垂直增加机器性能。
2. 可用性
从系统整体架构考虑,可以采用的方案:
提供灾备环境(冷备或者热备)
同城双活/异地多活
采用集群模式部署应用服务或者中间件
异常情况下主动的服务降级
3.扩展性/伸缩性
从系统整体架构考虑,可以采用的方案:
将服务器以容器的方式标准化部署,方便随时扩展
所有的请求都是无状态的
实时监控服务器状态,智能判断扩展/收缩
4. 安全性
互联网应用层:
APP加固、混淆
使用HTTPS协议
对报文内容加密,使用对称或者非对称加密方式
主动扫描代码,防常见安全问题的,例如:SQL注入、跨站攻击脚本等
接入层:
DDOS主动防御
网关层:
请求的权限控制
应用服务层&支撑服务层:
敏感数据(身份证、电话等)加密保存
数据权限控制,防止越权查询、修改数据
版权声明: 本文为 InfoQ 作者【W_T】的原创文章。
原文链接:【http://xie.infoq.cn/article/ae1b7637426b4e934e44b32db】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论