Ryu eventlet学习总结

本文介绍了Ryu控制器中Eventlet的使用,从Ryu的启动过程开始,探讨了Coroutine和Eventlet的概念。Eventlet是一个高性能的Python并发库,通过GreenPile和GreenPool实现协程的并发执行。文章通过实例展示了GreenPool如何实现线程池功能,并通过多人群聊程序演示了Eventlet的便利性。Ryu利用Eventlet进行模块替换,以实现高效的事件处理。最后,文章比较了coroutine和thread的优缺点,强调了Ryu在SDN控制器中的优势。
摘要由CSDN通过智能技术生成

前言

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是通过

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值