归档 2014年8月

最后更新于 .

算起来,从离开腾讯自己创业已经过去一年半了,其中经历了太多事情,也有太多的东西想要记录和分享给大家,所以开了这个系列,希望能记录下来。
先说一下目前自己处于的状态,因为目前的状态会严重影响我对事情的判断,而很可能一年后的自己看到自己今天写的话会觉得全是扯淡。
目前公司已经拿到投资。
公司总共17个人,其中创始人包括我共3个,分别负责渠道、产品、技术。
研发团队分3个组,分别是android、cocos2dx、后端,人数分别是4、3、3;产品 2人;美术1人;渠道1人。
挤在一个130平的房子内,周一至周六都上班,周一~周五都是最早10点下班,周六让大家早点走,6点吧。
研发的进度的话,android来开发一个完整的棋牌游戏在1.5月左右。
cocos2dx也是这样一个时间表。
我们后端是用的python,所以开发会很快,一般在一周内就能写出一个可玩的牌桌内逻辑。
现状大体就是这样,先在这临时存个档,一会再读回来。
先从1年半前说起吧。
2013年3月份,自己从腾讯正式离职,当时还处于国内互联网“开放”吵得比较火的时候,而自己手里是有几款能盈利的pc应用的,所以相当于自己给自己发工资,日子过的还不错,也没怎么觉得多有压力。
到4月份,自己其中的一个产品被腾讯下线;再到8月份,自己另一款产品也被腾讯下线。
话说被下线的当天 ...

最后更新于 .

在很早的时候,就听网上的文章说:

python有GIL,所以在单进程内,即使使用多线程也无法利用到多核的优势,同一时刻,python的字节码只会运行在一个cpu上。

以前也是奉为真理,直到今天在对自己的python server做性能测试的时候,发现一个python进程的cpu居然达到了120%。

当用c++编程的时候,如果使用多线程,那么确实进程cpu超过100%非常正常,但是对python来说,似乎这样就和网上的文章冲突了。

所以还是决定自己亲身试验一下,编写代码如下:

from thread import start_new_thread

def worker():
    while 1:
        #print 1
        pass

for it in range(0, 15):
    start_new_thread(worker, ())


raw_input()

 

运行环境为: centos6.4 64位, python 2.7.

得到的结果如下:

E588C2D7 1608 42CC B800 AD5338C87F47

可以清楚的看到,pid为31199的python进程cpu达到了787.9%,接近理论能达到的最大值 800%。

而上方的8个cpu也分别达到了近100 ...

最后更新于 .

最近在做游戏服务分层的时候,一直想把mysql的访问独立成一个单独的服务DBGate,原因如下:

  1. 请求收拢到DBGate,可以使DBGate变为无状态的,方便横向扩展
  2. 当请求量或者存储量变大时,mysql需要做分库分表,DBGate可以内部直接处理,外界无感知
  3. 通过restful限制对数据请求的形式,仅支持简单的get/post/patch/put 进行增删改查,并不支持复杂查询。这个也是和游戏业务的特性有关,如果网站等需要复杂查询的业务,对此并不适合
  4. DBGate使用多进程模式,方便控制与mysql之间的链接数,进行mysql访问量阀值保护
  5. 方便在DBGate上进行访问量统计,慢查询统计、权限控制等等一系列逻辑
  6. 目前是使用python,以后要使用其他语言进行mysql操作时,只要进行标准的http请求即可,不会出现不兼容的情况

当然坏处也是有的:

  1. 首当其冲就是单次请求的响应时间变长,毕竟中间加了一层服务,并且还是http格式
  2. 部署上比原来复杂了一些,很多对mysql直接操作的思维需要进行转变,一开始可能会有些不适

不过总的来说,还是利大于弊,所以最终还是决定搭建DBGate

当然,我们不可能去手工挨个写每个库表对应的restful服务,值得庆幸的是django和flask都提供了对应的解决方案,我们一个个介绍.

Flask

参考链接: flask-restless

flask-restless使用方法比较简单,我直接贴一下代码即可:

# -*- coding: utf-8 -*-

import datetime
from flask ...

每日归档

上个月

2014年7月

下个月

2014年9月

归档