聊聊高可用的 11 个关键技巧

大家好,我是Tom哥

大型互联网架构设计,讲究一个四件套组合拳玩法,高并发高性能高可用高扩展

如果能掌握这四个方面,应付大厂面试以及日常工作中的架构方案设计基本不是什么难题。

今天,Tom哥就带大家学习下高可用都有哪些设计技巧?

一、系统拆分

有句古话 “牵一发而动全身”。

面对一个庞然大物,如果没有一个合理的分工分层。任何一个小小失误都会被无限放大,酿成巨大灾难。

万物相通,回到我们的软件架构。

早前的系统都是单体系统,比如电商业务,会员、商品、订单、物流、营销等模块都堆积在一个系统。每到节假日搞个大促活动,系统扩容时,一扩全扩,一挂全挂。只要一个接口出了问题,整个系统都不可用。

“鸡蛋不能放在一个篮子里”,这种连带风险换谁都承受不起。

因此,系统拆分 成了更多人的选择。

慢慢的就有了我们现在看到的微服务架构,将一个复杂的业务域按DDD的思想拆分成若干子系统,每个子系统负责专属的业务功能,做好垂直化建设,各个子系统之间做好边界隔离,降低风险蔓延。

二、解耦

软件开发有个重要原则“高内聚、低耦合”。

小到接口抽象MVC 分层,大到 SOLID 原则23种设计模式。核心都是降低不同模块间的耦合度,避免一处错误改动影响到整个系统。

就以开闭原则为例,对扩展是开放的,对修改是关闭的。随着业务功能迭代,如何做到每次改动不对原来的旧代码产生影响。

Spring 框架给我们提供了一个很好的思路,里面有个重要设计 AOP ,全称(Aspect Oriented Programming),面向切面编程。

核心就是采用动态代理技术,通过对字节码进行增强,在方法调用的时候进行拦截,以便于在方法调用前后,增加我们需要的额外处理逻辑。

当然还有一个重要思路就是事件机制,通过发布订阅模式,新增的需求,只需要订阅对应的事件通知,针对性消费即可。不会对原来的代码侵入性修改,是不是会好很多。

三、异步

同步指一个进程在执行请求的时候,若该请求需要一段

  • 11
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值