轻量级 Flash 服务器开发框架  刘恒 鱼之乐游戏工作室 从事 Web/Social Game 研发
内容摘要 <ul><li>Python & Django 简介 </li></ul><ul><li>Python & Django 开发 Flash 服务器实例 </li></ul><ul><li>两种布署方式: Gae, 手动布署 </li>...
Python  & Django  简介 <ul><ul><li>Python </li></ul></ul><ul><ul><ul><li>Simple and not Dirty </li></ul></ul></ul><ul><ul><l...
DRY(Do not Reapte Yourself) <ul><li>之前开发一款休闲游戏的系统设计 </li></ul>
Python  & Django  特点 <ul><ul><li>学习曲线良好,上手容易 </li></ul></ul><ul><ul><li>无需编译 </li></ul></ul><ul><ul><li>不需要重启 Server 即可更改服...
Python  & Django  特点 <ul><ul><li>学习曲线良好,上手容易 </li></ul></ul><ul><ul><li>无需编译 </li></ul></ul><ul><ul><li>不需要重启 Server 即可更改服...
Django 下实现认证系统 (Server 端 ) <ul><ul><li>Model: </li></ul></ul><ul><ul><li>class User( models.Model ): </li></ul></ul><ul><u...
Django 下实现认证系统 (Client 端 ) netConnection = new NetConnection(); netConnection.connect(“http://localhost:8080/amf”); netCon...
ORM (对象 - 关系数据库映射) <ul><li>定义: </li></ul><ul><li>class User( db.Model ): </li></ul><ul><li>app_id  =  db.IntegerProperty()...
(Google App Engine) <ul><li>Google 08 年推出的一款云计算平台 </li></ul><ul><li>很高的免费配额 , 超出免费部分便宜 </li></ul><ul><li>配置使用相当方便 </li></u...
GAE 构成 <ul><li>Web Server </li></ul><ul><li>DataBase </li></ul><ul><li>Local Test Framework </li></ul><ul><li>Memcached </...
GAE 构成 <ul><li>Web Server </li></ul><ul><li>DataBase </li></ul><ul><li>Local Test Framework </li></ul><ul><li>Memcached </...
GAE 免费配额 资源 每日限制 最大速率 请求 4300 万  次请求 3 万  次请求 / 分钟 传出带宽 10 GB 740 MB/ 分钟 传入带宽 10 GB 740 MB/ 分钟 CPU  时间 46  个   CPU  时 72  ...
GAE 超出免费配额后的资费 资源 单位 单价 传出带宽 GB $0.12 传入带宽 GB $0.10 CPU  时间 CPU  小时数 $0.10 存储数据 GB 每月 $0.15 接收电子邮件的收件人 收件人 $0.0001
GAE 限制及缺陷 <ul><li>不能使用线程   </li></ul><ul><li>不能使用 socket, 只开放 80 端口   </li></ul><ul><li>不能使用本地文件系统 </li></ul><ul><li>只支持 p...
自己构建 Django 服务器 <ul><li>Linux 2.6 64 位 </li></ul><ul><li>Apache & mod_python  </li></ul><ul><li>Mysql </li></ul><ul><li>Me...
Django Performance
Python+Django 的不足 <ul><li>Django 是一套 Web 开发框架,不能进行 socket 编程 , 不适合做延迟要求很小的应用 </li></ul><ul><li>国内 Python 社区人员相对较少 </li></u...
服务器优化的一些心得 <ul><ul><li>Pysco 将 python 转换为 C 提升性能 </li></ul></ul><ul><ul><li>不处理静态数据,静态数据交给 Nginx </li></ul></ul><ul><ul><l...
Django Performance
Django on Apache Lighttpd Nginx Apache is Best for Django
Encode & Decode <ul><li>Encode way Speed </li></ul><ul><li>XML </li></ul><ul><li>Pyamf(AMF) </li></ul><ul><li>Amfast(AMF) ...
Memcached ( 分布式 Key-Value 缓存系统) <ul><li>配置 Settings.py: </li></ul><ul><li>  CACHE_BACKEND = 'memcached://127.0.0.1:11211/‘...
NetConnection & RemoteObject <ul><li>NetConnection  RemoteObject </li></ul>
<ul><li>先谢国家 </li></ul><ul><li>再谢大家 </li></ul>Mail:windytwang@gmail.com Blog:windytwang.javaeye.com
Upcoming SlideShare
Loading in...5
×

轻量级Flash服务器开发框架(刘恒)

2,475

Published on

Published in: Education, Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,475
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
38
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide
  • 做一个统计,开发服务器的人,用 PHP 的, JAVA 的, C++ 的, Python 的。 (使用过 Python 的人 )
  • 优点:手动序列化 / 反序列化 反馈周期太长(编译,重启服务) 直接写 SQL 效率低,容易出错 Debug 困难 没有本地单元测试框架,容易引发新 BUG 前端后端定义多套数据结构,重复劳动且不好维护
  • 维护一个地方,记住一个名字 DataBase,Python 脚本 ,As 脚本共用一套数据结构,一套命名,数据库的表, AS 里直接有一个对应类 Python 实现服务的函数名 和可供远程调用的服务名统一
  • 维护一个地方,记住一个名字 DataBase,Python 脚本 ,As 脚本共用一套数据结构,一套命名,数据库的表, AS 里直接有一个对应类 Python 实现服务的函数名 和可供远程调用的服务名统一
  • GAE 支持 Django 框架,但是数据层,需要重写 , 不过使用方法类似,并且 Djagno 的 Roadmap 上看到,将会完全支持 GAE 的 Model 定义方法
  • 轻量级Flash服务器开发框架(刘恒)

    1. 1. 轻量级 Flash 服务器开发框架 刘恒 鱼之乐游戏工作室 从事 Web/Social Game 研发
    2. 2. 内容摘要 <ul><li>Python & Django 简介 </li></ul><ul><li>Python & Django 开发 Flash 服务器实例 </li></ul><ul><li>两种布署方式: Gae, 手动布署 </li></ul><ul><li>Django 框架的限制 </li></ul><ul><li>服务器优化的一些心得 </li></ul>
    3. 3. Python & Django 简介 <ul><ul><li>Python </li></ul></ul><ul><ul><ul><li>Simple and not Dirty </li></ul></ul></ul><ul><ul><li>Django </li></ul></ul><ul><ul><ul><li>不仅仅是 Rails 的 Python 版本 </li></ul></ul></ul><ul><ul><ul><li>DRY( Do not Repeat Yourself ) </li></ul></ul></ul><ul><ul><ul><li>MTV 框架 (Model,Template,Viewer, 类 MVC) </li></ul></ul></ul>
    4. 4. DRY(Do not Reapte Yourself) <ul><li>之前开发一款休闲游戏的系统设计 </li></ul>
    5. 5. Python & Django 特点 <ul><ul><li>学习曲线良好,上手容易 </li></ul></ul><ul><ul><li>无需编译 </li></ul></ul><ul><ul><li>不需要重启 Server 即可更改服务 </li></ul></ul><ul><ul><li>ORM 好用,操作类一样操作数据库 </li></ul></ul><ul><ul><li>维护一个地方,记住一套名字 </li></ul></ul>
    6. 6. Python & Django 特点 <ul><ul><li>学习曲线良好,上手容易 </li></ul></ul><ul><ul><li>无需编译 </li></ul></ul><ul><ul><li>不需要重启 Server 即可更改服务 </li></ul></ul><ul><ul><li>ORM 好用,操作类一样操作数据库 </li></ul></ul><ul><ul><li>维护一个地方,记住一套名字 </li></ul></ul>所有都是自动完成的 你只需要关心这里
    7. 7. Django 下实现认证系统 (Server 端 ) <ul><ul><li>Model: </li></ul></ul><ul><ul><li>class User( models.Model ): </li></ul></ul><ul><ul><li>name = models.CharField( max_length=10 ) </li></ul></ul><ul><ul><li>password = models.CharField( max_length=10 ) </li></ul></ul><ul><ul><li>update_time = models.DateTimeField() </li></ul></ul><ul><ul><li>Services: </li></ul></ul><ul><ul><li>class Login(object): </li></ul></ul><ul><ul><li>def login( name,password ): </li></ul></ul><ul><ul><li>user = User.objects.filter(name=name) </li></ul></ul><ul><ul><li>if( user and user.password == password ): </li></ul></ul><ul><ul><li>return True </li></ul></ul><ul><ul><li>return False </li></ul></ul>
    8. 8. Django 下实现认证系统 (Client 端 ) netConnection = new NetConnection(); netConnection.connect(“http://localhost:8080/amf”); netConnection.call(“ Login.login &quot;, responder, “liuheng”,”123456”); 服务器上同时可以显示如下调用信息,方便 Debug Call Login.register(“liuheng”,”123456” ) Debug ‘hello’ Return True
    9. 9. ORM (对象 - 关系数据库映射) <ul><li>定义: </li></ul><ul><li>class User( db.Model ): </li></ul><ul><li>app_id = db.IntegerProperty() </li></ul><ul><li>app_type = db.IntegerProperty() </li></ul><ul><li>name = db.StringProperty() </li></ul><ul><li>pic = db.StringProperty() </li></ul><ul><li>使用: user= User() </li></ul><ul><li>user.app_id = 1 </li></ul><ul><li>user.save() #insert or update </li></ul><ul><li>user.delete() #delete </li></ul><ul><li>user = User.objects.filter( app_id=1 ) #select </li></ul>DataBase AS Class
    10. 10. (Google App Engine) <ul><li>Google 08 年推出的一款云计算平台 </li></ul><ul><li>很高的免费配额 , 超出免费部分便宜 </li></ul><ul><li>配置使用相当方便 </li></ul><ul><li>很好的可扩展性(云计算的特性:分布式计算,分布式存储,容错处理) </li></ul>GAE
    11. 11. GAE 构成 <ul><li>Web Server </li></ul><ul><li>DataBase </li></ul><ul><li>Local Test Framework </li></ul><ul><li>Memcached </li></ul><ul><li>Logging </li></ul><ul><li>System moniter </li></ul><ul><li>Version Control </li></ul><ul><li>Timed task </li></ul>
    12. 12. GAE 构成 <ul><li>Web Server </li></ul><ul><li>DataBase </li></ul><ul><li>Local Test Framework </li></ul><ul><li>Memcached </li></ul><ul><li>Logging </li></ul><ul><li>System moniter </li></ul><ul><li>Version Control </li></ul><ul><li>Timed task </li></ul>+Apache +Mysql +Memcached +Cacti +Crontab = GAE
    13. 13. GAE 免费配额 资源 每日限制 最大速率 请求 4300 万 次请求 3 万 次请求 / 分钟 传出带宽 10 GB 740 MB/ 分钟 传入带宽 10 GB 740 MB/ 分钟 CPU 时间 46 个 CPU 时 72 个 CPU 分钟 / 分钟
    14. 14. GAE 超出免费配额后的资费 资源 单位 单价 传出带宽 GB $0.12 传入带宽 GB $0.10 CPU 时间 CPU 小时数 $0.10 存储数据 GB 每月 $0.15 接收电子邮件的收件人 收件人 $0.0001
    15. 15. GAE 限制及缺陷 <ul><li>不能使用线程   </li></ul><ul><li>不能使用 socket, 只开放 80 端口   </li></ul><ul><li>不能使用本地文件系统 </li></ul><ul><li>只支持 python and Java </li></ul><ul><li>服务器在国外,响应时间比较慢 </li></ul><ul><li>国内不稳定,随时有被封杀的可能 </li></ul><ul><li>数据备份不方便 </li></ul>限制 缺陷
    16. 16. 自己构建 Django 服务器 <ul><li>Linux 2.6 64 位 </li></ul><ul><li>Apache & mod_python  </li></ul><ul><li>Mysql </li></ul><ul><li>Memcached </li></ul><ul><li>Python </li></ul><ul><li>(python-mysql,python-memcached) </li></ul><ul><li>Django </li></ul><ul><li>Amfast </li></ul>
    17. 17. Django Performance
    18. 18. Python+Django 的不足 <ul><li>Django 是一套 Web 开发框架,不能进行 socket 编程 , 不适合做延迟要求很小的应用 </li></ul><ul><li>国内 Python 社区人员相对较少 </li></ul><ul><li>Pyamf/Amfast 目前在 Django 暂时不支持 Produce/Consumer 模型 (Amfast+GAE 支持 ) ,如需要需手动实现长连接 </li></ul>
    19. 19. 服务器优化的一些心得 <ul><ul><li>Pysco 将 python 转换为 C 提升性能 </li></ul></ul><ul><ul><li>不处理静态数据,静态数据交给 Nginx </li></ul></ul><ul><ul><li>使用 Apache+Threaded, 而不是 Lighttpd,Nginx </li></ul></ul><ul><li>AMF 替代 XML, 使用 Amfast 而不是 Pyamf </li></ul><ul><li>尽可能多的使用 Memcached, 而不是数据库 </li></ul><ul><ul><li>尽量使用 NetConnection ,而不是 RemoteObject </li></ul></ul>
    20. 20. Django Performance
    21. 21. Django on Apache Lighttpd Nginx Apache is Best for Django
    22. 22. Encode & Decode <ul><li>Encode way Speed </li></ul><ul><li>XML </li></ul><ul><li>Pyamf(AMF) </li></ul><ul><li>Amfast(AMF) </li></ul>
    23. 23. Memcached ( 分布式 Key-Value 缓存系统) <ul><li>配置 Settings.py: </li></ul><ul><li> CACHE_BACKEND = 'memcached://127.0.0.1:11211/‘ </li></ul><ul><li>Class User: # 给 User 类加上缓存 </li></ul><ul><li>@staticmethod </li></ul><ul><li>def get( name ): </li></ul><ul><li> user = cache.get ('user_%s'%name) </li></ul><ul><li>if( not user ): </li></ul><ul><li>try: </li></ul><ul><li>user = User.objects.get(name=name) </li></ul><ul><li>cache.set('user_%s'%user.name,user) </li></ul><ul><li>except: </li></ul><ul><li>pass </li></ul><ul><li>return user </li></ul><ul><li>def save(self): </li></ul><ul><li>super(User,self).save() </li></ul><ul><li># 先 Save, 后更新 Cache </li></ul><ul><li> cache.set ('user_%s'%user.name,user) </li></ul>
    24. 24. NetConnection & RemoteObject <ul><li>NetConnection RemoteObject </li></ul>
    25. 25. <ul><li>先谢国家 </li></ul><ul><li>再谢大家 </li></ul>Mail:windytwang@gmail.com Blog:windytwang.javaeye.com
    1. ¿Le ha llamado la atención una diapositiva en particular?

      Recortar diapositivas es una manera útil de recopilar información importante para consultarla más tarde.

    ×