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

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

on

  • 3,216 views

 

Statistics

Views

Total Views
3,216
Views on SlideShare
3,177
Embed Views
39

Actions

Likes
3
Downloads
37
Comments
0

2 Embeds 39

http://events.swfsh.com 30
http://www.slideshare.net 9

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • 做一个统计,开发服务器的人,用 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服务器开发框架(刘恒) 轻量级Flash服务器开发框架(刘恒) Presentation Transcript

  • 轻量级 Flash 服务器开发框架 刘恒 鱼之乐游戏工作室 从事 Web/Social Game 研发
  • 内容摘要
    • Python & Django 简介
    • Python & Django 开发 Flash 服务器实例
    • 两种布署方式: Gae, 手动布署
    • Django 框架的限制
    • 服务器优化的一些心得
  • Python & Django 简介
      • Python
        • Simple and not Dirty
      • Django
        • 不仅仅是 Rails 的 Python 版本
        • DRY( Do not Repeat Yourself )
        • MTV 框架 (Model,Template,Viewer, 类 MVC)
  • DRY(Do not Reapte Yourself)
    • 之前开发一款休闲游戏的系统设计
  • Python & Django 特点
      • 学习曲线良好,上手容易
      • 无需编译
      • 不需要重启 Server 即可更改服务
      • ORM 好用,操作类一样操作数据库
      • 维护一个地方,记住一套名字
  • Python & Django 特点
      • 学习曲线良好,上手容易
      • 无需编译
      • 不需要重启 Server 即可更改服务
      • ORM 好用,操作类一样操作数据库
      • 维护一个地方,记住一套名字
    所有都是自动完成的 你只需要关心这里
  • 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
  • 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
  • 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
  • (Google App Engine)
    • Google 08 年推出的一款云计算平台
    • 很高的免费配额 , 超出免费部分便宜
    • 配置使用相当方便
    • 很好的可扩展性(云计算的特性:分布式计算,分布式存储,容错处理)
    GAE
  • GAE 构成
    • Web Server
    • DataBase
    • Local Test Framework
    • Memcached
    • Logging
    • System moniter
    • Version Control
    • Timed task
  • GAE 构成
    • Web Server
    • DataBase
    • Local Test Framework
    • Memcached
    • Logging
    • System moniter
    • Version Control
    • Timed task
    +Apache +Mysql +Memcached +Cacti +Crontab = GAE
  • GAE 免费配额 资源 每日限制 最大速率 请求 4300 万 次请求 3 万 次请求 / 分钟 传出带宽 10 GB 740 MB/ 分钟 传入带宽 10 GB 740 MB/ 分钟 CPU 时间 46 个 CPU 时 72 个 CPU 分钟 / 分钟
  • GAE 超出免费配额后的资费 资源 单位 单价 传出带宽 GB $0.12 传入带宽 GB $0.10 CPU 时间 CPU 小时数 $0.10 存储数据 GB 每月 $0.15 接收电子邮件的收件人 收件人 $0.0001
  • GAE 限制及缺陷
    • 不能使用线程  
    • 不能使用 socket, 只开放 80 端口  
    • 不能使用本地文件系统
    • 只支持 python and Java
    • 服务器在国外,响应时间比较慢
    • 国内不稳定,随时有被封杀的可能
    • 数据备份不方便
    限制 缺陷
  • 自己构建 Django 服务器
    • Linux 2.6 64 位
    • Apache & mod_python 
    • Mysql
    • Memcached
    • Python
    • (python-mysql,python-memcached)
    • Django
    • Amfast
  • Django Performance
  • Python+Django 的不足
    • Django 是一套 Web 开发框架,不能进行 socket 编程 , 不适合做延迟要求很小的应用
    • 国内 Python 社区人员相对较少
    • Pyamf/Amfast 目前在 Django 暂时不支持 Produce/Consumer 模型 (Amfast+GAE 支持 ) ,如需要需手动实现长连接
  • 服务器优化的一些心得
      • Pysco 将 python 转换为 C 提升性能
      • 不处理静态数据,静态数据交给 Nginx
      • 使用 Apache+Threaded, 而不是 Lighttpd,Nginx
    • AMF 替代 XML, 使用 Amfast 而不是 Pyamf
    • 尽可能多的使用 Memcached, 而不是数据库
      • 尽量使用 NetConnection ,而不是 RemoteObject
  • Django Performance
  • Django on Apache Lighttpd Nginx Apache is Best for Django
  • Encode & Decode
    • Encode way Speed
    • XML
    • Pyamf(AMF)
    • Amfast(AMF)
  • 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)
  • NetConnection & RemoteObject
    • NetConnection RemoteObject
    • 先谢国家
    • 再谢大家
    Mail:windytwang@gmail.com Blog:windytwang.javaeye.com