Ryu eventlet学习总结-程序员宅基地

技术标签: SDN  技术交流  RYU  

前言

OpenDaylight转到RYU以来一直都没有机会好好学习RYU的源码,只学会了编写简单的Application。但是如果要熟悉一个控制器,就要熟悉它的运行原理,熟悉它数据结构,熟悉它的设计模式等等。最近终于有时间好好看RYU的代码,但在看代码的过程中却发现RYU并不简单,其编码风格也非常优雅,非常值得学习。本篇博文主要讲述RYU中使用到的eventlet

RYU开始

运行ryu的在/cmd中没有找到之后,在/bin中找到了两个可执行文件:ryuryu-manager。打开ryu-manager,显示如下:时候,命令是:ryu-manager app.py。第一个要找到就是ryu-manager到底会触发什么程序。


找到/ryu/cmd/manager.py,发现这个文件中的main()函数是整个ryu的入口函数。这个main()函数的内容主要是完成了RYU的初始化配置和启动。Configure使用了oslo,这个在后续的博文中应该会提到。初始化的构成主要包括将app_list里面的内容加入App_Manager的列表中,然后开启协程去协调这些APP完成工作。hubfrom ryu.lib import hub的。继续查看ryu/lib/hub.py。最终找到许多关于eventlet的内容。在hub.py中定义了Event,StreamServerWSGIServer等类,还有一些重要的重要函数如spawn()等。为了更好地学习RYU,学习coroutineeventlet就非常有必要了。

2.1 Coroutine

协程[coroutine]是一个程序组件。相比subroutine, coroutine更一般。coroutine相对与thread而言,又不一样。thread是资源抢占式的存在,而coroutine

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/SDNLAB/article/details/42146965

智能推荐

friends_老友记第一季台词word-程序员宅基地

friends 原来我以为自己有很多的friends,不过后来逐渐发现friends原来~~~如比。 自从我的一个兄弟对我的老婆说了一些远距离恋爱的缺点,但我知道他说这句话的时候,偶有点失落了,我最讨厌别人给我老婆说一些负面的影响了,也许他是无心的,但我却怎么也不想原谅他,那一刻,所有的friends被我在心里划了一段距离。也许是我太在乎我老婆了。不知道 原谅我。现在的我有时会感到好孤单,没人_老友记第一季台词word

Mybatis select标签的用法_mybatis引用<select> 标签-程序员宅基地

本文转载出处:https://www.cnblogs.com/junjie2019/p/10568055.html第一步,在接口中添加方法:public interface UserMapper { SysUser selectById(Long id);}第二步,完成映射文件:<?xml version="1.0" encoding="UTF-8" ?>..._mybatis引用 标签

oracle jdbc balance,JDBC 如何配置RAC 的Load Balance ?-程序员宅基地

PURPOSE-------This document discusses how to implement load balancing from a JDBC applicationthat connects to a RAC configured system.SCOPE & APPLICATION-------------------This material is intende..._oracle jdbc blance

FPGA的发展历史及相关名词解释-程序员宅基地

FPGA如今在各行各业应用广泛,本文介绍了FPGA如何从几十逻辑门的规模发展成现在的数千万逻辑门规模的历史,包含FPGA技术的进步与企业的发展,然后说明了与FPGA相关的几个常见名词的含义,包括PLD、CPLD、ROM、SRAM、FLASH等。_fpga的发展历史

开博了-程序员宅基地

注册帐号这么多年,今天终于开博了,呵呵 不为别的,就是想找个地方记录一下自己的心思。希望看到blog的朋友能改变对我误解。 我是一个很难被别人理解的人吗?曾经与一个很高级的销售聊天的时候,她直接指出她不能走入我的内心深处。她不知道我在想什么!难道不善言辞,不苟言笑,少言寡语是罪魁祸首吗?我很奇怪!我的想法很简单,大家都是我的朋友,我从没有把谁当作坏人过,对人我这么实在,为什么还

测试开发系列之——接口详情(接口预览)功能-程序员宅基地

目录api详情页接口表请求参数参数表ApiVO.javaSQLApiMapper.java的代码修改ApiService.java的代码修改ApiServiceImpl.java的代码修改ApiController.java的代码修改apiView.html的代码修改接口详情的请求和响应接口预览页的效果图接口请求参数ApiRequestParamMapper.java的代码ApiMapper.ja...

随便推点

10.elasticsearch插件五graph插件安装详解-程序员宅基地

铭毅天下,原文地址:blog.csdn.net/laoyang360 https://blog.csdn.net/wojiushiwo987/article/details/51472821一、graph插件介绍graph插件一个新的用于 Elasticsearch 和 Kibana 的插件,通过它们您可以很方便的发现、理解和探索现有数据之间的关系。和 Elastic 的所有产品一样,它的 UI ...

【転載】勝間和代のニュースな仕事術--------第26回 勉強会ブーム_投資対効果-程序员宅基地

勉強会と勉強会の合間に本当の勉強をしよう!第26回 勉強会ブーム参加するだけで安心したり、単なる飲み会の代わりにしていたり…。ブームの様相を呈する勉強会だが、目的意識に欠ける姿勢で参加する人も少なくない。出席する会を厳選し、無理なく続けて、必ず“宿題”をやることが肝心だ。 ここ最近、早朝やアフターファイブに、様々な場所で勉強会が開かれています。内容は、課題_投資対効果

本地yum源的建立,共享yum源建立,yum命令用法,rpm用法_多个yum仓库是共用rpm包么-程序员宅基地

yum的建立yum源是一个软件集合地,只需要搜索并安装想要的软件,它就会帮你解决大部分软件的依赖问题 本地yum源:比如说镜像光盘里一般会附带软件,这时候就可以把光盘当成本地源来安装软件 网络yum源:比如aliyun的镜像网站,这就属于网络源,可以通过互联网把软件下载然后安装 能够从指定的服务器下载RPM包并安装,可以自动处理依赖性关系并且一次性安装所有依赖的包软件包,无需一次次频繁..._多个yum仓库是共用rpm包么

TortoiseGit Manual Cherry picking_cherry_picking in-程序员宅基地

https://tortoisegit.org/docs/tortoisegit/tgit-dug-cherrypick.htmlCherry pickingCherry-picking in TortoiseGit is invoked from the Revision Log Dialog. Within this dialog, se_cherry_picking in

Tomcat6优化配置-程序员宅基地

在WEB的大型应用中,对于Tomcat的配置优化显得尤其重要,它会造成非常严重的并发危机。因此它是除了WEB服务器以及数据库服务器之外,也同时需要大量的时间进行实地的测试与优化。一、修改tomcat配置文件<Connector port="80" protocol="HTTP/1.1" maxHttpHeaderSize="8192" maxThre..._tomcat6优化配置

Mac设置隐藏程序坞响应时间有一秒延迟_mac程序坞反应慢-程序员宅基地

在使用程序坞时,隐藏之后在调用时会有一面中左右延迟解决办法如下:_mac程序坞反应慢