三高框架设计要点

三高定义:高性能 ,高可用 ,高扩展

高性能 :高性能核心观点是不浪费性能,即最大可能性利用已有性能,去除无效运算。高性能通过高并发和低延时来保证。

高并发

  1. 分库分表
  2. 系统拆分,即常用的微服务处理,将请求分散到不同的机器,将流程分到不同的模块处理,通常与分库分表一同使用,避免数据库成为性能瓶颈.
  3. 读写分离,与缓存基本类似,适用于读多写少,但是同样存在数据一致性的问题。
  4. 消息队列,将并行转为串行,然后利用多线程或微服务并行处理,将并发处理量控制在系统可承受范围内,保证系统的可用性。
  5. 限流,过滤无效请求,降低IO次数,降低数据库的无效处理。

低延时

  1. 预计算,部分场景可以提前计算数据,将结果放入缓存。
  2. 缓存预热,提前将数据到本地缓存或者分布式缓存中。
  3. JVM优化,包括新生代和老年代的大小、GC算法的选择等,尽可能减少GC频率和耗时。
  4. 锁选择,读多写少的场景用乐观锁,或者通过分段锁的方式减少锁冲突,尽量不要使用排他锁,在特殊情况下,可以借助排他锁实现特殊的熔断机制
  5. 索引优化,以及借助搜索引擎解决复杂查询问题

高可用:高可用有四个核心点:

  1. 集群:包括业务集群和数据集群,保证服务宕机之后有其他集群可以处理业务,保存数据。
  2. 监控 :监控是极为重要的预防手段之一,目的是在服务发生问题之前提现处理可能出现的问题,预防服务宕机。
  3. 告警响应 :告警同监控,也是预防手段之一,目的是在服务超出预警阈值之后,抢出处理时间,来解决问题或者保存数据。
  4. 容灾:容灾通常由集群和数据备份来处理,目的是降低突然出现问题而没有时间解决或保存数据造成的损害。

高扩展:拆分是提升系统扩展性最重要的一个思路,它会把庞杂的系统拆分成独立的,有单一职责的模块。相对于大系统来说,考虑一个一个小模块的扩展性当然会简单一些。将复杂的问题简单化,这就是我们的思路

  1. 合理的分层架构:比如上面谈到的互联网最常见的分层架构,另外还能进一步按照数据访问层、业务逻辑层对微服务做更细粒度的分层(但是需要评估性能,会存在网络多一跳的情况)。
  2. 存储层的拆分:按照业务维度做垂直拆分、按照数据特征维度进一步做水平拆分(分库分表)。
  3. 业务层的拆分:最常见的是按照业务维度拆(比如电商场景的商品服务、订单服务等),也可以按照核心接口和非核心接口拆,还可以按照请求源拆(比如ToC和To
    B,APP和H5 )
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值