大型互联网应用系统所使用的技术方案

用户头像
olderwei
关注
发布于: 2020 年 07 月 01 日

大型互联网系统所使用的技术方案,我觉得可以从以下几个方面来看:

高性能

1、读写分离,主要解决数据库读的问题,例如一般会部署一主多从,主库负责写,从库负责读。这个方案就会涉及到主从复制延时的问题,比如主写成功了,但是从还没有复制,这样就到导致数据读不到。

2、缓存,主要是解决读压力,因为大部分互联网系统都是读多写少的应用,所以可以把数据缓存起来,包括使用本地缓存、分布式缓存、CDN、动静分离等技术方案;但在使用缓存的时候我们就要去考虑常见的缓存穿透、缓存击穿、缓存雪崩问题。

3、分库分表,主要解决数据库写的问题,例如一般会将写入量比较大的表进行分、分表,然后以某一字段进行分片路由来解决单一表写压力过大的问题,这个方案需要我们设计比较均衡的路由算法。

4、NoSQL及搜索引擎,解决存储以及搜索的问题,一般会引入mongodb来存储一些非结构化的数据以及引入Elasticsearch解决搜索的的问题。

5、异步,主要解决写压力,比如双十一零点的订单量非常大,如果都写库会对数据库造成非常大的压力,所以可以采用异步队列来进行削峰,将订单都写入队列,然后消费队列来处理订单。

6、Reactor模式,解决海量连接的问题,比如Netty,boss线程负责处理连接,work线程服务处理请求,可以保证更多的并发连接。

高可用

1、冗余,从应用层来看,服务一般部署多台来保证一台宕机后,其他机器能接管服务。从存储层来看,数据一般也会冗余,在其他机器上存一定数量的副本,保证一台数据宕机后,保证数据是可读的。

2、降级,保证系统在压力大的情况下能正常提供服务,如双十一场景中,可以将评论功能不开放。

3、熔断,保证下游服务出现问题的时候,能够进行熔断,不调用下游服务,保证服务的可用性。

4、限流,保证只有有限的请求能够进行正常调用,不会让更多的请求压垮服务。

5、异地多活,也就是不同的地域的机房部署相同的业务,保证不会因为某一机房的网线等故障引发服务不可用。

6、监控系统,对系统所有可能出问题的地方都要进行监控打点以及配置报警,能够及时发现系统问题。

7、分布式调用链,在分部署部署后,整个请求的调用链会特别长,所以需要分布式调用链在每个系统打点后上报,最终汇总会,可以分析系统存在的问题。

8、自动部署、灰度发布及回滚,解决上线失败带来的可用性问题。

可扩展

1、分层架构,业务拆分,每个业务就独立部署,独立升级。

2、分布式消息队列,使用消息队列来降低系统的耦合性。

3、分布式服务框架,将可复用的业务进行剥离,通过服务框架来进行远程调用

4、分布式远程配置中心,修改线上配置不需要重启服务。

可伸缩

1、负载均衡,反向代理,保证可以随时扩容机器。

2、无状态服务,保证扩容时不需要迁移状态数据。

3、一致性hash算法,保证缓存扩容时命中率不会急剧下降。

安全

1、防XSS攻击,防SQL注入,防CSRF攻击等。

2、数据脱敏处理,防止用户敏感信息暴露。

3、秘钥加密管理,比如数据库密码不要直接配置在文件中,需要进行加密,然后用的时候进行解密。

4、风险控制,需要识别出风险用户,比如在抢优惠券的时候,需要识别出机器刷抢等等。

5、运维安全,服务器权限、数据库权限回收。



发布于: 2020 年 07 月 01 日 阅读数: 37
用户头像

olderwei

关注

还未添加个人签名 2018.04.26 加入

还未添加个人简介

评论

发布
暂无评论
大型互联网应用系统所使用的技术方案