面试-如何设计一个高并发 高可用的系统

回答这个问题可以分为以下 几 点 (但最好都要结合着自己的业务系统,讲述下自己系统中的应用):

  • 系统拆分

  • Cache(缓存)

  • MQ

  • 数据库拆分(分库分表)

  • 读写分离

  • HTML 页面静态化

  • CDN 加速

high-concurrency-system-design

1系统拆分

将一个系统拆分为多个子系统,使用 Spring Cloud 或者 dubbo 来做。然后每个系统连一个数据库,这样本来就一个库,现在多个数据库,不也可以扛高并发么。

1.1 系统拆分成多个应用有以下优点:

针对可并发 高可用的优点:

可扩展

应对系统业务增长的方法通常采用横向(Scale out)或纵向(Scale up)的方向进行扩展。分布式系统中通常要采用Scale out的方式进行扩展。因为不同的功能会面对不同的负荷变化,因此采用微服务的系统相对单块系统具备更好的可扩展性。当在大促活动期间,我们可以通过增加实例个数来扛过活动期价瞬时流量

高可靠

微服务间独立部署,一个微服务的异常不会导致其它微服务同时异常。通过隔离、融断等技术可以避免极大的提升微服务的可靠性

技术异构

在一个大型系统中,不同的功能具有不同的特点,并且不同的团队可能具备不同的技术能力。因为微服务间松耦合,不同的微服务可以选择不同的技术栈进行开发。

同时,在应用新技术时,可以仅针对一个微服务进行快速改造,而不会影响系统中的其它微服务,有利于系统的演进。

比如在示例中,如果因为库存系统数据量变大,我们需要数据由当前的sqlite数据库修改为MySQL,可以仅修改Inventory Service,而不需要要求整个系统的数据库全部替换。

其他优点:

各服务职责单一,逻辑清晰,多个服务模块间可并行研发;

简化部署,单一模块的更新不会影响到其他服务

灵活组合,在微服务架构中,可以通过组合已有的微服务以达到功能重用的目的。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值