高性能以及高可用

高性能的实践方案:

  • 集群部署,通过负载均衡减轻单机压力。

  • 多级缓存,包括静态数据使用 CDN、本地缓存、分布式缓存等,以及对缓存场景中的热点 Key、缓存穿透、缓存并发、数据一致性等问题的处理。

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

  • 考虑 NoSQL 数据库的使用,比如 HBase、TiDB 等,但是团队必须熟悉这些组件,且有较强的运维能力。

  • 异步化,将次要流程通过多线程、MQ、甚至延时任务进行异步处理。

  • 限流,需要先考虑业务是否允许限流(比如秒杀场景是允许的),包括前端限流、Nginx 接入层的限流、服务端的限流。

  • 对流量进行削峰填谷,通过 MQ 承接流量。

  • 并发处理,通过多线程将串行逻辑并行化。

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

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

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

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

  • 程序逻辑优化,比如将大概率阻断执行流程的判断逻辑前置、For 循环的计算逻辑优化,或者采用更高效的算法。

  • 各种池化技术的使用和池大小的设置,包括 HTTP 请求池、线程池(考虑 CPU 密集型还是 IO 密集型设置核心参数)、数据库和 Redis 连接池等。

  • JVM 优化,包括新生代和老年代的大小、GC 算法的选择等,尽可能减少 GC 频率和耗时。

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

 

高可用的实践方案:

  • 对等节点的故障转移,Nginx 和服务治理框架均支持一个节点失败后访问另一个节点。

  • 非对等节点的故障转移,通过心跳检测并实施主备切换(比如redis的哨兵模式或者集群模式、MySQL 的主从切换等)。

  • 接口层面的超时设置、重试策略和幂等设计。

  • 降级处理:保证核心服务,牺牲非核心服务,必要时进行熔断;或者核心链路出问题时,有备选链路。

  • 限流处理:对超过系统处理能力的请求直接拒绝或者返回错误码。

  • MQ 场景的消息可靠性保证,包括 Producer 端的重试机制、Broker 侧的持久化、Consumer 端的 Ack 机制等。

  • 灰度发布,能支持按机器维度进行小流量部署,观察系统日志和业务指标,等运行平稳后再推全量。

  • 监控报警:全方位的监控体系,包括最基础的 CPU、内存、磁盘、网络的监控,以及 Web 服务器、JVM、数据库、各类中间件的监控和业务指标的监控。

  • 灾备演练:类似当前的“混沌工程”,对系统进行一些破坏性手段,观察局部故障是否会引起可用性问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值