Chinaunix首页 | 论坛 | 博客
  • 博客访问: 424464
  • 博文数量: 43
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 518
  • 用 户 组: 普通用户
  • 注册时间: 2015-12-14 12:10
个人简介

邮箱:oxwangfeng@qq.com

文章分类

全部博文(43)

文章存档

2021年(1)

2018年(7)

2017年(9)

2016年(26)

我的朋友

分类: 架构设计与优化

2016-01-21 16:14:48

调度设计的基本概念

用户组(UserGroup):特定地区,特定运营商的用户集合,比如北京联通用户、上海电信用户、成都移动用户等。任何一个来源IP一定属于一个用户组。用户组全集
称为UGS。

域名组(DomainGroup):域名集合,同一个域名组中的所有域名针对同一个用户组,一定调度到同一个CDN节点。域名组全集称为DGS。

CDN节点(node)

调度单元(ScheduleUnit):每个调度单元是一个二元组,其中ug属于UGS,dg属于DGS。调度单元全集为SUS。

调度系统的工作是什么?

针对调度单元全集SUS中的每一个调度单元,为其调度相应的服务CDN节点。

设计核心要素

1:调度单元均有分时段的带宽预期消耗

调度单元的带宽预期消耗按照时段来进行设置。数据来源应该来自于离线的数据日志分析,也可以根据预期进行提前设置。

ExpectedBandwidth:(UG, DG, TimeRange) =>  Bandwidth

2:每个用户组均有分级服务节点

每个用户组均有预期的三级服务节点:FirstClass, SecondClass, ThirdClass。每一级均是一个节点的集合。每个用户组应该从FirstClass逐级寻找服务节点。








选举leader

1.jimdbget key= TOSCANINI_ELECT_PREFIX的值;

2.如果jimdbkey不存在,表示可能是过期的;也可能是本来就不存在;如果key不存在,则通过jimdb. SetExNx(TOSCANINI_ELECT_PREFIX,nowTimestamp, electtimeout);第二个是当前的时间戳,第三个参数是过期时间;并且设置electLock.Leader = true
3.如果jimdbkey存在,则检查上次本server是否是leader,如果是leader,则这次继续当leader,如果不是leader,则继续下次循环;
  也就是说只要机器不down,只要第一次是leader,本server一直是leader;除非这个server down了,并且过期了,其他server才能继续当leader
阅读(4161) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~