设计一个高并发、高性能、高可用、高扩展、安全性的项目

高并发的目标

高性能:快速访问

高可用:服务能一直正常使用

高可扩展:流量高峰能否

安全性:提供安全访问和数据加密、安全存储的策略

高性能架构:

性能指标:响应时间或吞吐量

从IO和计算两个角度:

预处理:1.预计算,比如抢红包场景,可以提前计算好红包金额缓存起来,发红包时直接使用即可

               2.缓存预热:通过异步任务提前预热数据到本地缓存或者分布式缓存中。

               3.各种池化技术的使用,包括HTTP请求池、线程池、数据库和Redis连接池等。

输入:1.集群部署,通过负载均衡减轻单机压力。

           2.限流,前端限流、Nginx接入层的限流、服务端的限流

           3.削峰,对流量进行削峰填谷,通过MQ承接流量

处理:1.多线程并发处理

           2.JVM优化,包括新生代和老年代的大小、GC算法的选择

           3.锁选择,读多写少的场景用乐观锁,或者考虑通过分段锁的方式减少锁冲突

存储:1.多级缓存,包括静态热点数据使用CDN(内容分发网络)、动态热点数据用jvm缓存、

           redis分布式缓存等,以及对缓存场景中的热点key、缓存穿透、数据一致性等问题的处理。

           2.分库分表和索引优化,以及借助搜索引擎解决复杂查询问题。

返回:1.异步化:将次要流程通过多线程、MQ、甚至延时任务进行异步处理。

从IO角度: 

        1.减少IO次数,比如数据库和缓存的批量读写、RPC的批量接口支持、或者通过冗余数据的             方式干掉RPC调用

        2.减少IO时的数据包大小,包括采用轻量级的通信协议、合适的数据结构、去掉接口中的多            余字段、减少缓存key的大小、压缩缓存value等

高可用

指标:可用性 = 正常运行时间 / 系统总运行时间

搭建集群:如Ngnix集群、kafka集群、Redis集群

限流:1.接口限流:Sentinel-阿里巴巴提供的分布式服务架构的流量控制组件

           2.验证码

流量削峰:消息队列进行削峰

服务降级:关闭非核心功能

熔断:若大流量活动(如秒杀)位于服务器A上,而商品管理功能也在服务A上,则其它服务不再请求商品管理功能,一面服务被拖慢。

高可扩展

指标:扩展性=性能提升比例/机器增加比例

存储层拆分:分库分表

业务层拆分:按照业务拆分多个微服务

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值