网上博彩论坛
你的位置:网上博彩论坛 > 博彩问答 >

博彩问答 饿了么chaosmonkey实现

博彩问答 饿了么chaosmonkey实现

背景
公司目前的服务设计大部分满足 design for failure 理念。随着业务复杂度的提升,我们很难再保证对系统故障的容错性。我们需要工具来验证服务的容错性,基于这个需求我们使用了 tc 工具,并开发了chaosmonkey工具。本文主要围绕这两个工具进行讲述。
TC流控
基本概念
Netem 是 Linux 2.6 及以上内核版本提供的一个网络模拟功能模块。该功能模块可以模拟出局域网诸如低带宽、传输延迟、丢包、乱序、重复等情况。
基本原理
包从进入tc开始,分为多个qd(qdisc)。每个qd可以包含多个子qd,qd彼此连接形成一颗树。每个qd上可以附加filter,选择进入哪个child。流量控制控发不控收。
基本操作
# 网络延迟 # sudo tc qdisc add dev eth0 root netem delay 100ms # 网络丢包 # sudo tc qdisc add dev eth0 root netem loss 1% # 基于filter # 192.168.33.1被延迟,其他地址无效果 # sudo tc qdisc add dev eth0 root handle 1: prio # sudo tc qdisc add dev eth0 parent 1:1 handle 10: netem delay 1s loss 2% # sudo tc filter add dev eth0 protocol ip parent 1: prio 1 u32 match ip dst 192.168.33.1 flowid 1:1 # 删除规则 # sudo tc qdisc del dev eth0 root缺点
tc 工具在配置时比较繁琐,不能模拟一段时间内的故障,不能作为一个服务定期演练。自己开发的chaosmonkey可以满足以上条件。
chaosmonkey
功能
chaosmonkey基于golang开发,它包含三个功能:网络故障模拟、服务重定向、资源限制。如图。





网络故障模拟
用户向服务发送http请求,服务解析参数,模拟丢包、延迟,其中主要使用的package是 netlink 。部分代码如下:
// 用户提交的参数 type addNetwork struct { Duration uint32 Limit *network.LinkLimit } type LinkLimit struct { Latency uint32 Jitter uint32 Loss float32 Corruption float32 } //设置丢包、延迟 func (l *Link) AddLimit(limit LinkLimit) error { netemQdiscAttrs := netlink.NetemQdiscAttrs{ Latency: limit.Latency, Jitter: limit.Jitter, Loss: limit.Loss, CorruptProb: limit.Corruption, } qdiscAttrs := netlink.QdiscAttrs{ Parent: netlink.HANDLE_ROOT, LinkIndex: l.Attrs().Index, } netem := netlink.NewNetem(qdiscAttrs, netemQdiscAttrs) if err := netlink.QdiscAdd(netem); err != nil { return fmt.Errorf("qdisc add %v: %v", netem, err) } log.Infof("AddLimit finish with %v", netem) return nil }服务重定向
服务主要使用exec包执行iptables命令,部分代码如下:
// 用户提交的参数 type startRedirect struct { Duration uint32 Redirectors []redirector.Redirector Name string } type Redirector struct { Protocol string `json:"protocol"` Destination string `json:"destination"` Dport string `json:"dport"` Target string `json:"target"` } //增加iptables规则 for _, r := range redirectors { if err := ipt.Append("nat", "OUTPUT", "-p", r.Protocol, "-d", r.Destination, "--dport", r.Dport, "-j", "DNAT", "--to", r.Target); err != nil { return fmt.Errorf("append tables %v: %v", r, err) } log.Infof("append iptables rule finish: %v", r) ... } func (ipt *IPtables) Append(table string, chain string, rulespec ...string) error { cmd := append([]string{"-t", table, "-A", chain}, rulespec...) return ipt.run(cmd...) } func (ipt *IPtables) runWithOutput(args []string, stdout io.Writer) error { args = append([]string{ipt.path}, args...) var stderr bytes.Buffer cmd := exec.Cmd{ Path: ipt.path, Args: args, Stdout: stdout, Stderr: &stderr, } err := cmd.Run() if err != nil { return &Error{*(err.(*exec.ExitError)), stderr.String()} } return nil }资源限制
主要使用的packge是 fs 和 configs 。代码如下:
type addResources struct { Pids []int Pattern string Duration uint32 Limit resources.Limit } type Limit struct { Cpu int64 Memory int64 BlkioReadBPS uint64 `json:"blkio_read_bps"` BlkioReadIOPS uint64 `json:"blkio_read_iops"` BlkioWriteBPS uint64 `json:"blkio_write_bps"` BlkioWriteIOPS uint64 `json:"blkio_write_iops"` } // 设置cgroup config := limit.toConfig() monkey, err := factory.CreateManager(config) ... for _, pid := range pids { if manager, err := factory.GetManager(pid); err != nil { return fmt.Errorf("get manager for pid %d: %v", pid, err) } else { p := &process{manager: manager, pid: pid, monkey: monkey, wait: r.wait} if err := p.start(duration); err != nil { return fmt.Errorf("process apply monkey: %v", err) } else { r.processes = append(r.processes, p) } } } if err := monkey.Set(config); err != nil { return fmt.Errorf("set monkey config: %v", err) } else { log.Infof("set monkey %v for pids %v", limit, pids) }参考文档
linux高级流控 netlink cgroups

麻将锦标赛开赛时间: 每月第 2 周的周六晚上 8 点!博彩问答



 

热点资讯

相关资讯



Powered by 网上博彩论坛 @2013-2022 RSS地图 HTML地图

网站统计——

  • 谷歌搜索留痕推广
  • 谷歌搜索留痕排名技术
  • 谷歌快速排名
  • 留痕方法
  • 谷歌搜索快速方法
  • google搜索留痕程序
  • 谷歌快速排名
  • 澳门太阳城
  • 最大博彩公司
  • 谷歌搜索关键词排名
  • 搜索留痕程序
  • 谷歌排名出售
  • 谷歌蜘蛛池排名
  • 搜索留痕软件
  • 缅甸果敢赌场
  • 电子游艺规则
  • 谷歌留痕推广
  • google引流程序
  • 谷歌快速排名
  • google引流程序
  • 留痕推广
  • 大西洋城赌场
  • 买球地址
  • 搜索留痕
  • 搜索留痕程序出售
  • 谷歌蜘蛛池排名技术
  • 留痕程序
  • 如何提高google搜索排名
  • 数字币博彩
  • 洗钱方法
  • Google留痕收录
  • 最新谷歌搜索留痕排名
  • 搜索留痕
  • Google留痕收录
  • google搜索留痕
  • 数字币博彩网站
  • 足球投注平台
  • 博彩推广话术
  • 推广引流方法
  • 引流方法
  • 博彩推广话术
  • 网上博彩推广引流
  • 数字币赌场
  • 皇冠现金网
  • 蜘蛛池排名
  • 谷歌蜘蛛池
  • 留痕程序出售
  • google搜索留痕程序
  • 比特币网上赌场
  • 洗钱平台
  • 搜索留痕
  • 博彩推广方式
  • 网上博彩推广
  • 快速排名
  • 搜索留痕程序
  • bbin平台大全
  • 体育博彩公司排名
  • 留痕排名技术
  • 最新谷歌关键词排名
  • 推广渠道
  • 谷歌快速排名
  • 博彩推广
  • 世界杯赌球地址
  • 皇冠博彩公司
  • 谷歌排名出售
  • 博彩引流渠道
  • 搜索留痕程序
  • google搜索留痕
  • 引流渠道
  • 果敢网上赌场
  • 世界杯赌球
  • 搜索留痕方法
  • 博彩搜索留痕
  • 博彩引流
  • 博彩引流
  • 搜索留痕
  • 缅甸网上赌场
  • 欧洲杯赌球
  • 谷歌搜索排名
  • 留痕程序
  • 网上博彩推广引流
  • 留痕技术
  • 搜索留痕技术出售
  • 澳门威尼斯人网上赌场
  • 外围博彩
  • 博彩网站推广
  • 推广引流
  • 留痕程序出售
  • 谷歌推广引流技术
  • 推广引流方法
  • 美国在线赌场
  • 沙巴体育投注平台
  • 最新谷歌搜索留痕
  • 谷歌蜘蛛池排名技术
  • 网站推广方法
  • 留痕程序出售
  • 博彩推广方法
  • 菠菜论坛
  • 买球平台
  • 谷歌搜索留痕
  • 蜘蛛池排名
  • 博彩公司推广渠道
  • 谷歌搜索留痕
  • 博彩公司推广渠道
  • 真钱游戏
  • 网上赌球地址
  • 赌球平台推荐
  • 赌球网址
  • 博彩包网
  • 买球app
  • 澳门博彩公司
  • 威尼斯人赌场
  • 博彩平台推荐
  • 美国博彩网站
  • 缅甸实体赌场
  • 柬埔寨网上赌场
  • 柬埔寨在线赌场
  • 韩国博彩
  • 支持人民币的博彩公司
  • 世界五大比特币交易所
  • 欧易是哪个国家的
  • 中币跑路
  • 亚洲博彩公司
  • 合法网上赌场
  • 马尼拉赌场
  • 支持人民币的博彩公司
  • 大陆博彩平台
  • 澳门新葡京娱乐城
  • 老挝赌场
  • 世界赌场排名
  • 网上博彩公司排行
  • 菠菜论坛
  • 东南亚赌博网站
  • 虚拟币博彩
  • 澳门百家乐网址
  • 网上博彩导航
  • 区块链百家乐游戏
  • 马来西亚博彩公司
  • 越南赌场
  • 区块链百家乐
  • 香港娱乐场
  • 澳大利亚赌博网站
  • 足球赔率
  • 菲律宾网上赌场
  • 数字币博彩网站
  • 足球投注网站
  • 百家乐论坛
  • 皇冠体育博彩公司
  • 网上赌博网站
  • 网上博彩推广话术
  • 谷歌搜索快速方法
  • 网上博彩推广话术
  • 数字币赌场
  • 皇冠博彩公司
  • 世界杯博彩公司
  • 英国博彩公司
  • 网上博彩合法化
  • 新加坡赌场
  • 比特币网上赌场
  • 怎么洗钱
  • 加密货币博彩平台
  • 世界杯赌球网址
  • 网上赌球地址
  • 博彩推广方式
  • 印度尼西亚博彩公司
  • 国际包网
  • bbin平台直营
  • 亚洲体育博彩平台
  • 越南博彩公司
  • 百家乐路单
  • 澳门博彩官网
  • 博彩网推荐
  • 澳门太阳城网址
  • 百家乐网址
  • 世界杯赌球网址
  • 皇冠博彩网址
  • 洗钱方法
  • 买球网站
  • 欧洲杯赌球平台
  • 皇冠现金网
  • 外围赌球平台
  • 果敢赌场
  • 买球技巧
  • 全球最大博彩公司
  • 电子游艺
  • 真人电子游戏
  • 骰宝游戏规则
  • 亚洲体育博彩平台
  • 澳门在线赌场
  • 缅甸赌场地址
  • 赌球平台
  • 赌场如何赢钱
  • 世界杯买球网站
  • 真人牌九游戏
  • 世界杯买球官网
  • 时时彩平台
  • 六合彩预测
  • 威尼斯人网上赌场
  • 外围赌球网站
  • 赌博网址
  • 彩票群
  • 微信赌博群
  • 韩国首尔赌场
  • 赌钱游戏
  • 美国网上赌场
  • bbin官网
  • 沙巴体育官网
  • 博彩平台推荐
  • 数字币博彩网站
  • 比特币网上赌场
  • 世界赌场名单
  • 美国赌场攻略
  • 菠菜论坛排名
  • 菠菜论坛排名
  • 缅甸网上赌场
  • 支持人民币的博彩公司