一个典型的大型互联网应用系统使用了哪些技术方案和手段
任何一个题目的提出都应该对应去解决相应的问题,一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题,还不如说一个大型互联网应用基本都会遇到什么问题,如何来解决?
问题
高并发,大流量
海量数据
用户分布广泛,网络情况复杂
安全环境恶劣
需求迭代快,发布频繁
渐进式发展
应该具备哪些能力
高性能
高可用
可伸缩
可扩展
安全
如何解决上述问题
先介绍一个大型的互联网系统应该包含哪些部分:
针对上述问题,我们挨个架构来分析
前端架构
App及Web开发技术
浏览器及Http技术
CDN
动静分离
图片服务
反向代理
DNS
网关及应用架构
网关架构
负载均衡
nginx、Varnish、Apache TS、HAProxy、Squid
动态业务静态化
业务拆分
服务层架构
微服务架构
spring cloud、dubbo、thrift
分布式消息队列
rabbitmq、nsq、activemq、rocketmq、qmq、kafka
分布式缓存
redis
分布式一致性服务
zookeeper、etcd、redis、数据库
存储架构
分布式文件
hdfs、GFS、Squid
分布式关系数据库
TIDB、OceanBase
NoSql数据库
HBase、redis、mongodb
后台架构
大数据平台
搜索平台
推荐引擎
数据仓库
hive、spark、fink、storm
运维与安全
数据采集与展示
grafana、elasticsearch、Logstash、Logstash
数据监控与报警
bosun、grafana
攻击与防护
数据加密与解密
可伸缩
垂直伸缩硬件和网络吞吐能力,提升单机性能
比如使用RAID独立荣誉磁盘矩阵,增加I/O能力,使用固态硬盘代替机械硬盘,增大机器内存,扩展机器cpu核数
水平伸缩,应对突发流量
这个就需要服务首先保证具有水平伸缩能力,如果是纯后端服务,要保证服务提供负载均衡能力,保证服务本身被均匀调用,比如消费mq消息进行处理的服务,保证消费group一致,并且消息队列本身支持动态增加consumer。如果是http服务,要保证反向代理服务器自动增加服务ip映射。
评论