阅读更多
项目名称: Eurasia3
发起时间: 2004年
代码托管:http://code.google.com/p/eurasia

项目介绍:
Eurasia3 是一种能够支持百万级同时在线长连接用户数量的 HTTP 服务器, 或者每秒处理上万次 CGI 请求的常规应用服务器。
Eurasia3 同时也泛指以 Eurasia3 应用服务器为核心的一系列组件形成的应用程序框架, 主要是一个嵌入式对象数据库 MissileDB, 和一个 JavaScript 框架 NJF。
Eurasia3 基于 Stackless Python。

产品信息:
运行平台: 支持 Stackless Python 2.5 的系统, 包括各种嵌入式平台
开发语言: Stackless Python
开源协议: BSD License

项目成员:
沈崴, 高级架构师, 上海,项目发起人。
赖勇浩, 某公司技术负责人,广州。
王健, 某公司技术负责人, 经理, 广州。
魏中华, 项目经理, 广州。
庄上林, 项目经理, 广州。


是什么促使你们发起/开始这个项目?
Eurasia 最初源于某个大型人工智能项目, 是为了解决大量逻辑数据的存储和管理的问题而形成的一个 Web 管理系统, 并发展成一套 AJAX 框架。
而 Eurasia3 项目则是源于一系列关于 Web Game 的尝试。我们试图在浏览器上在不使用任何插件和 Flash 的情况下, 就能实现即时类游戏的效果并维持几十乃至上百万人同时在线, 这最终导致了 Eurasia3 框架的产生。


该项目面向哪些使用群体?
黑客, Web Game 和 Web IM 从业人员, 对前沿技术感兴趣的人以及 Comet 爱好者。

举个例子说明下用户使用您的软件能做什么?
基于浏览器的 MMORPG, 玩家在地图上漫游时所看到的一切都是即时的。
基于浏览器的 Web IM, 服务器能负载传统 IM 服务器那样多的在线人数, 消息发送是即时的, 浏览器用户不需要插件就可以互传文件。
Comet 应用, 服务器程序可以在任何时候使用原生 Python 代码远程调用客户浏览器上的 JavaScript 函数。
在一两百块钱 200-300 MHz 主频的嵌入式系统 (诸如路由器, Stackless Python 官方发行版中已经带有我们贡献的补丁可以使 Stackless Python 运行在这类系统上) 上运行以 Eurasia3 为基础的网站可以接近或达到和常规服务器一样的性能。

您认为有多少人使用这个软件/项目/服务?
至少有四家以上的公司正在使用基于 Eurasia 的软件。

有什么迹象表明您的项目很成功?
尽管 Eurasia3 项目主要是面向黑客的, 并且我们相当低调 ──── 你知道我们主要还是以自己使用为主, 也回馈一下社区, 这并不会带来实际的利益。但是还是吸引了相当多的关注。
尽管 Eurasia3 目前仍然在 alpha4 阶段, 但是从 alpha2 开始我们就已经许多项目在实际使用 Eurasia3 了, 这些产品还是颇令我们满意的。

您觉得最大的惊喜是什么
尽管 Python 的框架已经很多, 我们也不期望 Eurasia3 在将来某一天像 Django 那样流行, 但是对 Eurasia3 感兴趣的人还是相当多, 有些人甚至表示在将来 Eurasia3 正式发布时用它来替代 Django (甚至 Nginx), 这比较意外。

您在该项目中遇到的最大挑战是什么?
最大的挑战是时刻保持领先。尽管目前 Eurasia3 是业内比较尖端的技术, 但是我们知道迟早会有超越 Eurasia3 的技术出现, 在此之前我们会努力保持领先。

您在该项目中认为获得成功的要素有哪些?
黑客的关注和参与。
持续地在正式项目中进行检验。
保证劣质的代码和编程思想不进入项目, 保证代码不膨胀不失控。

您对该项目有哪些期望?
一个使用 Eurasia3 编写的 Web Game, 事实上我们正在着手这件事情, 这在明年或许就会实现。然后就是大家在启动一个很酷的项目或者一个奇怪的想法时会自然而然地想到 Eurasia3。或许这些都不会真的出现, 但对我们也没有损失。

如果您能对项目进行修改,您会改善哪些地方?
文档, 当然了。从 alpha2 开始接口一直在缓慢变化, 到下一个冻结特性的 alpha5 版本或许会有更剧烈的变动, 而文档一直是滞后的。这也导致了许多用户的不满, 当然也包括我自己在内, 因为连我们自己都有许多产品都是基于老版本的。

你们如何来协调项目?
SVN、Gtalk

你们把所有精力都投入在这个软件上,还是有其他的什么工作?
我们大部分人都有自己的公司, 并且正带着自己的团队在做一些看上去很有前途的东西。

那你们一般花多长时间在这个项目上?
每周20小时, 10 小时, 或者 0小时。你知道在没有灵感时与其放一些垃圾代码进去, 还不如不写,

你们用的开发环境是什么
操作系统: Linux (主要是 Ubuntu)
编辑器: vim, gedit

项目里程碑
1999 年 NJF 框架开始设计, 这是 Eurasia 最早的组成部分。
2004 年 Eurasia 项目开始。
2006 年 9 月 Eurasia 2.0.2 版以 BSD License 开源, 年底 Eurasia3 项目开始。
2007 年 12 月 Eurasia 3.0.0 alpha 发布。
2008 年 Eurasia 3.0.0 alpha4 发布。

其他人如何给你们提供建议?
Eurasia3 用户组 http://groups.google.com/group/eurasia-users

对JavaEye的印象
感谢 JavaEye 对脚本语言推广所做的贡献, 祝 JavaEye 越办越好。
18
0
评论 共 34 条 请登录后发表评论
34 楼 dhgdmw 2009-01-22 16:52
哦,好东东
33 楼 wills 2008-10-11 09:38
我非常同意meng9999的看法,如果是应用于WebIM或是WebGame,还不如用Socket.这不仅是因为我所从事的是Flash 相关的WebGame这一行,当然我自己也在研究Socket服务器.
另外,eishn,也说得对,HTTP本质上是一个TCP跟TCP的Socket在底层通讯上没什么不同. 我只是稍看了一下 Eurasia3 的一些Demo,发现是在多以文本通讯.如果从Ajax的结合度上说,没有效率问题,但是如果使用Flash开发的WebIM或是WebGame,就差很远了.因为Flash可以使用AMF3经过压缩的纯二进制格式,它的效率远比文本要高. 另外,我也看了一下Eurasia3的测试数据,我不知道发送数据的内容是什么,但是我自己开发的基于Apache mina2的Socket,在我自己的机器上测试,处理10000req/s很轻松[CPU 12%].发送的内容是AMF3 400Bytes的聊天消息.
32 楼 hongliang 2008-09-18 11:08
这是JavaEye有新闻以来最有价值的一条

感谢eishn的努力!

推荐各位去看看这里:

http://code.google.com/p/eurasia/wiki/Eurasia3Book

写的非常YD....
31 楼 aaron2007 2008-09-17 20:14
呵呵支持支持
30 楼 meng9999 2008-09-17 18:39
Eurasia3 的结构设计还是比较好的, js + python 网络框架;


29 楼 meng9999 2008-09-17 18:38
webgame 现在主要是流行flash (as3)  + c/c++ (on linux)开发;
其实网络框架倒还是比较好做,最终还是用户体验上,flash端的动画和创意上;
一个朋友公司开发的flash游戏, 5台服务器支持1-2W个用户并发,已经比较困难;
还在优化;


28 楼 hideto 2008-09-17 17:46
Web Game关注度越来越大了,僧多粥少啊。。。
27 楼 eishn 2008-09-17 14:21
没错, 以后会改成 Comet, 邮件列表里面有说到
26 楼 coolmenu 2008-09-17 14:09
svn 里面的 Pushlet 应该为Comet 吧, demo 里面的程序都不能运行
25 楼 ray_linn 2008-09-17 13:52
Stackless python并不是什么先进技术,不过是重复重复再重复的事情,我特别想看看更贴近实际的一次性能测试。
24 楼 ray_linn 2008-09-17 13:51
有一分ting写的MicroThread的论文可以看看,不过最好的方法还是去探索源代码了。
23 楼 eishn 2008-09-17 13:43
hi meng9999, Flash + Socket + Python (Twisted?) 这个方案也不错的
至于 select, 现在我们一般用 poll (epoll) 来代替, 并发多的话会更好一些。

fxsjy, Eurasia3 和 PHP 不大好比较, 他们关注的领域不一样。
22 楼 fxsjy 2008-09-17 13:05
请问与apache + php 比起来,如何?
21 楼 meng9999 2008-09-17 13:03
我原来开发软交换服务器,一个纯C写的基于UDP的SIP协议的服务器,
就使用c的selcet进行网络IO的处理,大概一般的PC服务器上,同时
处理1W个注册请求,就已经不错了;



20 楼 meng9999 2008-09-17 12:56
呵呵 , comet 我关注了很长时间; 原来使用glassfish应用服务器,它在新的版本里头支持了comet。 后来测试的时候,发现长连接这些服务费并不在行; 主要是
web服务器本来就是使用HTTP协议进行设计的;所以现在我的WEBIM实现方法还是
js<------->servlet
这样很传统,但很多案例说明这样是最稳定的;
最近我发现flash也不错,大部分浏览器都安装了FLASH;
于是有了了比较'激进'的想法:
js<-------flash-------socket--->python
这样做应该还是比较好的,根据这样的架构,我想一个服务器支持几万个连接总可以的;
但沈崴的架构还更加'激进':
js<------http长连接-------->python的网络架构
这种方式的应用,特别是http长连接,现在的应用还比较少;号称百万级别,有待测试;







19 楼 eishn 2008-09-17 12:22
yaws 看上去很强大, 可惜我不是很熟悉, 看上去目前 yaws 作的测试和我的侧重点还不一样, 以后有空我会对比一下。Erlang 和 Stackless Python 线程在级别上是差不多的, 现在他们的比较还不是很多, 所以我也比较期待。
18 楼 coolmenu 2008-09-17 12:18
mochi_web 也是应用服务器, 现在是等于比较 erlang vs stackless python..
17 楼 pi1ot 2008-09-17 12:00
比较关心是否和yaws做过同条件下的对比测试
16 楼 eishn 2008-09-17 11:56
hi pi1ot, Eurasia3 是应用服务器, 在动态页面上有优势, 并在同类别的应用服务器中遥遥领先, 但在静态页面的性能上则不如 Apache 这些服务器。所以 Eurasia3 和 Apache 不是竞争的, 也没有超越这些服务器的打算

gqf2008, Eurasia3 对于简单应用诸如 Web IM、股票行情 性能相对要好一点, 但是随着运算的复杂, 传输量的增大, Eurasia3 的性能会很快下降。作 Game, 性能不一定会超过征途。Eurasia3 只是提供了一个不存在瓶颈的平台, 性能还是和具体应用和程序质量相关。不过 "不存在瓶颈" 并不是扯蛋的说法, 因为目前绝大多数应用服务器的架构本身都存在性能瓶颈和上限。我们本身有 WebGame 的计划, 基于这点, 我们自己不会选择 Eurasia3 之外的框架。
15 楼 pi1ot 2008-09-17 11:31
看eishn的帖子,长短连接性能全面领先,颇有超越apache或者其他流行web server的意图?

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • http、smtp协议封装

    用c++封装的http和smtp协议,可以实现http下载和邮件客户端,实现了邮件的发送

  • 用.net发送 Email 帮助类 EmailHelper

    上一篇转人家的, 虽然复制粘贴简单, 但找参数都要找半天的…… 发送邮件不就是知道人家的地址,再输入主题和内容就可以了嘛! 1. 配置文件 App.config 2. EmailHelper 类 using System; using System.Collections.Gener

  • SMTP说明(与HTTP的对比)

    SMTP简单说明 下去是因特网电子邮件系统的总体情况: 从该图中我们可以看到它有3个主要组成部分:用户代理(user agent)、邮件服务器(mail server)和简单邮件传输协议( Simple Mail Transfer Protocol ,SMTP)。用户代理允许用户阅读、回复、转发、保存和撰写报文。微软的Outlook和 Apple Mail 是电子邮件用户代理的例子。完成邮件撰写时,邮件代理向其邮件服务器发送邮件,此时邮件放在邮件服务器的报文队列中。邮件服务器形成了电子邮件体系结构的核心。

  • 轻量级邮件发送组件:基于 Socket/SMTP 协议的浅层封装

    Java 发送邮件组件,大家第一时间想到的就是 JavaMail。JavaMail 本身也不大,才 500kb 的 jar 包,足够轻量级。而今天为大家介绍的,可以说“羽量级”,核心一个类就可以发送邮件了,除了依赖 JDK 无须依赖什么。如果我们了解 SMTP 协议以及 Socket 的简单使用,就知道其中过程并不复杂——实质都是基于文本的协议交互。

  • 邮件协议SMTP、POP3和IMAP

    IMAP提供邮件服务器与邮件客户端之间的双向通信,客户端的操作都会反馈到服务器上,对邮件进行的任何操作,服务器上的邮件也会做相应的动作。也就是说,你在本地对邮件进行的操作和邮箱服务器是同步的。他可以使用邮件客户端对邮件进行接收以及操作。比如移动该邮件,删除该邮件,标记该邮件为已读,但是这些操作并不会反馈到邮箱服务器上。也就是说,你在本地对邮件进行的操作和邮箱服务器是不同步的。SMTP服务器通过查询DNS得到对方邮箱的POP3服务器,然后将邮件通过SMTP协议传送给对方的POP3服务器或IMAP服务器。

  • [源码和文档分享]基于SMTP协议和POP3协议实现的邮件收发客户端

    一、概要设计 1.1 抽象数据类型定义 主要定义了三个抽象数据类型: Base64 功能:用于发送邮件时进行编码,以及接收邮件时进行解码 数据部分:无 操作部分:编码(encode)、解码(decode) SMTP 功能:简单邮件传输协议类。用于实现SMTP协议中各种命令调...

  • smtp协议邮件发送工具MailUtil的配置文件

    #发送方的邮箱账号 mail.username=****@sina.cn #发送方的邮箱密码 mail.password=***** #使用的协议(JavaMail规范要求) mail.transport.protocol=smtp #发件人的邮箱的 SMTP 服务器地址 mail.smtp.host=smtp.sina.cn #需要请求认证 mail.smtp.auth=true #某...

  • 计算机网络实验:如何用SMTP协议发送邮件?(C#实现)

    实验目的: (1)掌握SMTP协议各个字段的含义; (2)掌握利用SMTP协议发送电子邮件。 实验内容: 设计一个页面,利用SMTP协议,实现发送一封邮件,具体要求如下: (1)可输入邮箱地址,编写邮件内容; (2)有邮件发送提示,利用协议发送邮件。 设计 SMTP界面入下图: 另外: 没有163邮箱可以先注册一个,下面要用到,然后登陆邮箱,找到POP3/SMTP/IMAP,选择开启服务IMAP/SMTP服务和POP3/SMTP服务,下拉新增授权码,然后申请一个,待会...

  • SMTP协议发送附件 MIME扩充协议

    SMTP协议发送附件 MIME扩充协议

  • SMTP 协议邮件发送工具封装

    文章目录1. 前言1.1 说明1.2 建议1.3 源码2. 发件人邮箱开通smtp 服务2.1 为什么要开通smtp 服务2.2 开启服务的步骤2.3 普通邮箱开启服务图文3. 工具类封装3.1 邮件依赖管理3.2 日志依赖管理3.3 邮件工具类封装4. 工具类测试及效果演示5. 模拟邮件发送接口及接口测试 1. 前言 1.1 说明 &nbsp;&nbsp;&nbsp;&nbsp;此处为Jav...

  • 一个关于SMTP 的封装类

    今天网友问我要SMTP 的封装类,我顺便共享在网上,换点积分,实在是太穷了,别怪我。想免费的自己去CODEPROJECT上面去下载,这个是我比较喜欢的一个。 地址如下:http://download.csdn.net/detail/saiolive/9565972

  • SMTP协议介绍

    1、SMTP介绍 基本概念 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件 的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议簇,它帮助每台计算机在发送或中转信件 时找到下一个目的地。通过SMTP协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了,整个过程 只要几分钟。SMTP服务器则

  • php 利用smtp封装类发送邮件

    1. smtp封装类,二开注意名称不要与已有冲突还要注意位置放正确, 比如我这里重命名为smtp_email.php,放在classes文件夹下     &amp;lt;?php class smtp_email { /* Public Variables */ public $smtp_port; public $time_out; public $host_n...

  • php使用smtp封装类发送邮件

    <?php date_default_timezone_set('Asia/Shanghai'); // 'Asia/Chongqing' or 'PRC' require_once ('mail.class.php'); $smtpserver = "smtp.163.com";//SMTP服务器 $smtpserverport =25;//SMTP服务器端口 $smtpusermai

  • QT SMTP发送邮件(封装库)

    SMTP是一组用于从源地址到目的地址传送邮件的规则,并且控制信件的中转方式。SMTP协议属于TCP/IP协议族,它帮助每台计算机在发送或中转信件时找到下一个目的地。通过SMTP协议所指定的服务器,我们就可以把E—mail寄到收信人的服务器上了,整个过程只需要几分钟。SMTP服务器是遵循SMTP协议的发送邮件服务器,用来发送或中转用户发出的电子邮件。 本文作者原创,转载请附上文章出处与本文链接。 程序暂时闭源,但提供免费,版本也会一直更新。目前正在测试阶段,首发...

  • SMTP实现发送邮箱2(封装版)

    SMTP.h #ifndef __SMTP_H__ //避免重复包含 #define __SMTP_H__ #include &lt;iostream&gt; #include &lt;list&gt; #include &lt;WinSock2.h&gt; using namespace std; const int MAXLEN = 1024; const int ...

  • 三种使用SMTP协议发送邮件的方法

    第一、.NET类库种自带的SMTP类:SmtpMail         在.NET中的System.Web.Mail名字空间下,有一个专门使用SMTP协议来发送邮件的类:SmtpMail,它已能满足最普通的发送邮件的需求。这个类只有一个自己的公共函数--Send()和一个公共属性—SmtpServer,您必须通过SmtpServer属性来指定发送邮件的服务器的名称(或IP地址),然后再调用Se

  • 使用.net的SmtpMail发送邮件及本机SMTP的简单配置

    这是我在这里发的第一篇文章        这几天,我做了一个有关发邮件的程序,也查了不少资料,下面把主要部分总结一下。        首先,当然是配置本机SMTP服务拉,如果是采用非本机的SMTP服务则不用做这一步(废话)。先打开Internet信息服务,右击 SMTP虚拟服务器--属性--访问--中继--添加,然后输入你的ip就可以了(当然如果为了方便你也可以输入127.0.0.1),确定,配置

  • 随笔:Python发送SMTP邮件方法封装

    随笔:Python发送SMTP邮件方法封装 封装的方法可以用来发送附件 import smtplib from email.mime.text import MIMEText from email.header import Header from email.mime.multipart import MIMEMultipart from email.utils import parseaddr, formataddr class Send_smtp_email_report(object):

Global site tag (gtag.js) - Google Analytics