Your SlideShare is downloading. ×
0
轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

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

2,446

Published on

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

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

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
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 定义方法
  • Transcript

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

    ×