大型互联网应用系统使用的方案
一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述。
首先,宏观上讲可以分以下架构
再次,每一个架构都会解决不同的问题,有些也会解决一类问题。
前端架构:
登录认证:后端可jwt实现,token、session、cookie,用户名和密码,滑动锁,二维码等。
gesDNS-智能域名解析: 解决ip地址来源,根据不同地区访问不同的数据中心。
CDN-内容分发网络:缓存,解决图片或其它文件加载速度的问题,一般放在近运营商侧。
浏览器和http技术:可以缓存session、cookie、及其它信息,加速访问。
TFS-分布式文件系统:解决文件的上传下载分发问题,还有数据备份、数据安全问题等。
反向代理:负载均衡,限流、缓存等功能。
网关及应用架构:
cloudgateway网关架构:路由、熔断、限流、负载均衡等,限流有计算器、队列、令牌桶等实现。
动态页面静态化:加速访问
业务拆分:关注点分离,解决复杂业务分模块运营部署。
服务层架构:
微服务架构:springboot ,业务拆分,单独部署开发维护。
eureka:服务注册和发现
feign:cloud的内部实现负载均衡,本质还是http的方式。
rpc:dubbo等解决微服务间的通讯问题。
消息队列:rabbitMq等,异步通信,通过对象传输,削峰填谷的作用。
分布式缓存:redis缓存读频繁的数据,比如redis的应用。其它缓存,guavacache可以缓存本地热数据、memecached也可作为分布式缓存。
分布式锁:解决竞争资源,比如秒杀库存抢夺、订单重复提交等。
任务调度系统:对数据的定时发送,定时同步等
服务监控:调用链跟踪zipkin、skywalking等
健康检查:Actuator、boot-admin等。
存储层架构:
mysql集群:主备,冷热分离,一致性强的可以用。
mongo集群:对结构化要求不强的可以使用,支持大量并发。
分布式对象存储: 可以解决对象文件的存储。
分库分表:解决大量数据的存储和检索等。
后台架构:
搜索引擎:Lucene等对文本的快速搜索。
推荐引擎:对客户感兴趣的产品进行推送。
大数据平台:对各个产品线的不同维度的数据分析不同的指标,来制定不同的运营策略。
数据仓库:智能检索。
配置中心: 经常变动的业务配置,实现灰度和动态发布等
运维安全:
数据监控和报警:zabbix等
攻击防护:高仿,渗透测试等。
评论