一个典型的大型互联网应用系统使用的技术方案
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 等
现在要求高可用,高性能。
高性能增加机器目的在于“扩展”处理性能;高
可用增加机器目的在于“冗余”处理单元。
评论 (1 条评论)