写点什么

一个典型的大型互联网应用系统使用的技术方案

用户头像
落朽
关注
发布于: 2020 年 11 月 15 日

1、处理请求

消息格式判断:一般通过消息头,也就是定长 header 来判断消息是否正确,完整。屏蔽大部分无效请求 api 请求的鉴权:通过 session 判断,来判断是否消息是否通过。

2、请求转发:

  • 负载均衡

DNS 负载均衡:处理地理级别负载均衡,转发到服务器,粗粒度就近转发

硬件的负载均衡:通过单独的硬件设备来实现负载均衡,这类设备和路由器,交换机类似,可以理解为用于负载均衡的基础网络设备。典型 F5 和 A10,这个可以单独转发哪个机房

软件负载均衡:通过软件实现负载均衡(nginx 和 LVS),转发到某个服务器处理数据转发

  • 消息队列

异步处理:提供系统的吞吐量

应用解耦:比如各个系统之前的解耦,如订单系统,库存系统的解耦

流量削锋:防止请求量过大引起服务的不可用,多用于秒杀,抢购

日志处理:最简单的 kafka

消息总线:单个系统之间消息处理,如 EventBus

  • 缓存

更快读写的存储介质+减少 IO+减少 CPU 计算=性能优化。

浏览器缓存:浏览器可以缓存一些静态资源,比如图片、js、css 等,这些都是不常变化的内容,所以没有必要每次都去请

CDN 缓存:客户端会先检查浏览器的缓存,若缓存过期则会像 CDN 发送请求(Request),CDN 检查缓存数据还未过期,那么直接返回响应(Response),只需两步搞定。但是,CDN 缓存过期,那么需要向应用服务器(Web Server)发起请求,获得新的数据响应,这部分新的数据按一定的缓存策略会选择是否缓存在 CDN 中

本地缓存:一般放到内存中比如 guava cache 或者 map 等

高性能缓存:最常见的 redis 缓存

引起问题:缓存穿透,缓存雪崩,缓存击穿

  • 数据存储

关系性数据库:mysql,oracle,sql server 等

Nosql 数据:MongoDB,redis

大数据用的一些存储:HIve,Hadoop 等

现在要求高可用,高性能。

高性能增加机器目的在于“扩展”处理性能;高

可用增加机器目的在于“冗余”处理单元。


用户头像

落朽

关注

还未添加个人签名 2018.03.26 加入

还未添加个人简介

评论 (1 条评论)

发布
用户头像
分析的内容很好
2020 年 11 月 20 日 20:34
回复
没有更多了
一个典型的大型互联网应用系统使用的技术方案