「分布式技术专题」事务型、分析型数据资源隔离机制

资源隔离

在分布式系统里通常将进程进行资源隔离,然后在同一个进程里的各种业务都共享线程池对外提供服务,这就经常会遇到这样的问题:分析型的负载较高,抢占了线程池里的大部分线程资源,从而会造成事务业务的服务质量下降;或者某个业务负责较高,使其他的业务质量下降。同一个进程内新加入一个业务,这个业务会抢占其他业务的资源,从而造成系统的不稳定,比如业务性能抖动;难以调试,比如同一个进程里的10个业务共享同一个线程池,当出现故障时难以通过简单的日志判断是哪个业务出了问题。因此,希望通过一种机制处理上面的问题,资源隔离的方式包括进程隔离和线程隔离。
在这里插入图片描述
resources_isolation

隔离类型

1.进程隔离

进程级别隔离通常指的是容器化隔离,比如通过使用docker实现业务进程之间的资源隔离;

2. 线程隔离

线程级别隔离是指给每个跑在进程里的业务都按业务类型创建一个线程池,从而实现线程级别细粒度的资源隔离,线程隔离具有以下优势:
•提高业务可靠性,减少业务受其他业务影响的程度,当一个业务耗尽自身的线程资源后也不会影响另外一个业务的服务质量;
•降低新加入的业务的给系统带来的风险,比如当前系统的一个进程用例中有10个业务。当新加入一个业务时,必然会抢占此前10个业务的线程资源,从而给系统带来不稳定,比如性能抖动;
•利于调试,给每一个业务都分配一个线程池名称,当业务出故障时,通过线程池名称可以很方便地定位是哪个业务出了故障,并且通过监控线程池的请求失败次数、超时次数、拒绝请求次数等可以实时的反应当前业务服务质量。

资源隔离的实现

1.内存资源隔离

监控每个任务的进程树或者线程树,进程树和线程树使用的总物理内存或者总虚拟内存量超过了预先设置值,则依次发送TERM和KILL两个信号将整个进程树杀死。也可以通参数配置进行资源隔离。

2.CPU资源隔离

CPU资源按照百分比进行使用和隔离,通过参数的参数实现的,这种方式能够保证每个节点上的cpu资源得到充分的共享和使用,从而产生较高的CPU利用率。限制每个执行容器的CPU资源使用上限,通过严格限制cpu使用上限,即使机器上仍有大量空闲CPU资源,也不会允许使用。限制使用的CPU上限,需要注意的是,资源管理系统允许配置每个节点上可使用的物理cpu个数,以及物理cpu与虚拟cpu个比例,而用户申请资源时,只能申请虚拟cpu。

3.IO资源隔离

IO资源分为磁盘IO和网络IO两种。IO资源的隔离比CPU和内存复杂的多,为了量化IO资源,通过“虚拟磁盘”(vdisk),使用cgroup的blkio模块实现磁盘IO隔离。当然,在实现该功能之前,还需要将IO资源加入调度器管理的范畴,比如公平调度器或者容量调度器,可以对磁盘IO和网络IO进行调度。

以上为事务型、分析型数据资源隔离机制,「分布式技术专题」是国产数据库hubble团队精心整编,专题会持续更新,欢迎大家保持关注

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值