作业:一个典型的大型互联网架构演进采用的技术
一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?
1、业务应用和数据库分离;
解决问题:降低系统服务器的 CPU、内存、IO 方面的瓶颈;
2、使用分布式缓存 redis、memerycache 等,
解决问题:降低数据库的 IO 访问,降低数据的查询时间,提高接口查询效率和 TPS;
3、数据库主从复制,读写分离,数据库主用库来写,从库用来读;
解决问题:降低主库的 IO 压力,充分利用从库的资源;
4、软件层,NGINX 反向代理负载均衡调度;
解决问题:应用多实例部署,集群化,提高业务处理能力,提高业务可用性
5、通过 CDN 访问静态资源
解决问题:提高静态资源的访问速度;
6、部署分布式文件服务器
解决问题:提高静态文件的访问速度;
7、部署 ElasticSearch 类 NOSQL
解决问题:提高数据查询效率,并可存储海量的数据;
8、部署分布式数据库服务器、分部署缓存
解决问题:提高业务数据的存储容量,水平扩展服务节点;
9、按业务模块对业务数据库分库,对大表进行分表、数据分片;
解决问题:降低单个数据库或集群的性能压力;降低单表的大小;
10、对数据进行冷热数据分离;
解决问题:提高常用数据的查询效率,降低存储资源的成本;
11、根据业务模块、业务功能,对业务组件进行拆分、解耦;
解决问题:解耦业务组件,可独立部署,提升单个业务组件的处理能力;
12、采用分布式消息队列,异步方式处理业务
解决问题;提高业务处理并发能力;提高可用性;消除并发访问高峰
13、对业务服务器节点冗余部署
解决问题:防止单点故障;
14、多机房分布部署,部署主备容灾节点
解决问题:异地容灾备份,防止业务故障导致的
15、升级服务器配置,提高 CPU 、内存、更换 SSD
解决问题:提高单台服务器的性能,提高处理能力;
16、采用微服务架构,容器化部署
解决问题:可实现快速部署,提高版本迭代效率;
17、架构分层,横向、纵向进行划分
解决问题:各个模块解耦,职责单一,便于分解给不同的团队去开发实现;
18、统一的 API 接入网关
解决问题:流量控制,安全策略控制;
19、对 REDIS、ElasticSearch 、KAFKA 等中间件根据业务模块进行垂直拆分;
解决问题:业务数据量太大,单个集群水平扩容已经达到了性能瓶颈;
20、打造中台底座能力
解决问题:将基础能力公共化,上层业务调用基础服务,加快业务迭代速度;
评论