<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Tim[后端技术] &#187; Erlounge</title>
	<atom:link href="http://timyang.net/tag/erlounge/feed/" rel="self" type="application/rss+xml" />
	<link>http://timyang.net</link>
	<description>Tim&#039;s blog, 关于后端架构、互联网技术、分布式、大型网络应用、NoSQL、Key Value等</description>
	<lastBuildDate>Mon, 02 Aug 2010 15:34:40 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>CN Erlounge IV tweets</title>
		<link>http://timyang.net/erlang/cn-erlounge-iv-tweets/</link>
		<comments>http://timyang.net/erlang/cn-erlounge-iv-tweets/#comments</comments>
		<pubDate>Sat, 14 Nov 2009 05:40:00 +0000</pubDate>
		<dc:creator>Tim</dc:creator>
				<category><![CDATA[Erlang]]></category>
		<category><![CDATA[Erlounge]]></category>

		<guid isPermaLink="false">http://timyang.net/?p=494</guid>
		<description><![CDATA[前言
本文整理了Erlounge IV Erlang杭州开发者大会现场的记录的Tweets列表，建议先到 http://ecug.org/agenda/ 下载演讲文档，以便理解上下文。
Twitter的优势是小之美，整理成一篇大文章比较杂乱，仅希望能给不在现场的读者在阅读演讲稿时提供一些参考的信息。
文中 @user 方式表示用户的 twitter id，下文中提到的部分讲师Twitter id为@litaocheng @eric33yu @zoomq @sj_mackenzie @qiezi @bobcui @xushiwei @houmingyuan @aimingoo 同时也欢迎follow我的twitter: @xmpp

(Erlounge IV第一天参会人员合影)
Day 1
@litaocheng 的《Erlang开发实践》如果要做Erlang具体开发的话（而不是所谓“架构”），建议看看后续公布的视频，这个是非常好的教程。由于当时没抢到无线IP，所以没有twitter记录
@eric33yu 的 《Erlang系统调优》开始了，放弃无线上网，开始用手机发，幸亏BB打字快
Erlang process 调度原则 尽量让一个cpu忙
讲的都是实战精华，比如斑马书中提到进程字典不是一个好的编程习惯，但yufeng从实战角度鼓励用进程字典，因为进程字典性能非常好。
模式匹配相同的标签尽量放在一起 如tuple，以提高效率
讲erlang集群 所有节点都需要相互维持一个tcp连接 并要相互维持一个90s一次的心跳 开销很大
讲erlang大量数据不要用tuple,array,list来存 最好用ets
linux systemtap 来观测程序(profiler)很有用 非侵入式 不需要修改程序
Erlang发送binary时候最好大于256长度，否则每份数据都需要copy，比如一次广播发送多份下行数据。
讲erlang上不要把ulimit -n 设太高 因为每个handler 需要占用约200字节开销 即使没用
yufeng讲他每做一个服务器程序，都投入30%时间编写log代码记录重要参数 以便运行期间观察
讲erlang中如需跨语言通讯 推荐asn.1(不少现场同学也倾向于protocol buffers)
Erlang中config set/get不适合用独立进程去做 推荐ets
发现大部分erlang programmer是c++ 出身, 特别关注IO效率, cpu利用, 多核, 上下文切换开销, 内存分配/回收，总而言之就是性能, 另外一方面也许是 [...]]]></description>
			<content:encoded><![CDATA[<h3>前言</h3>
<p>本文整理了Erlounge IV Erlang杭州开发者大会现场的记录的Tweets列表，建议先到 <a href="http://ecug.org/agenda/">http://ecug.org/agenda/</a> 下载演讲文档，以便理解上下文。<br />
Twitter的优势是小之美，整理成一篇大文章比较杂乱，仅希望能给不在现场的读者在阅读演讲稿时提供一些参考的信息。<br />
文中 @user 方式表示用户的 twitter id，下文中提到的部分讲师Twitter id为@<a href="http://twitter.com/litaocheng">litaocheng</a> @<a href="http://twitter.com/eric33yu">eric33yu</a> @<a href="http://twitter.com/zoomq">zoomq</a> @<a href="http://twitter.com/sj_mackenzie">sj_mackenzie</a> @<a href="http://twitter.com/qiezi">qiezi</a> @<a href="http://twitter.com/bobcui">bobcui</a> @<a href="http://twitter.com/xushiwei">xushiwei</a> @<a href="http://twitter.com/houmingyuan">houmingyuan</a> @<a href="http://twitter.com/aimingoo">aimingoo</a> 同时也欢迎follow我的twitter: @<a href="http://twitter.com/xmpp">xmpp</a><br />
<a title="Erlounge, Hangzhou by TimYang.net, on Flickr" href="http://www.flickr.com/photos/38692385@N03/4101649113/"><img src="http://farm3.static.flickr.com/2751/4101649113_0dec208b03.jpg" alt="Erlounge, Hangzhou" width="500" height="333" /></a><br />
(Erlounge IV第一天参会人员合影)</p>
<h3>Day 1</h3>
<p>@litaocheng 的《Erlang开发实践》如果要做Erlang具体开发的话（而不是所谓“架构”），建议看看后续公布的视频，这个是非常好的教程。由于当时没抢到无线IP，所以没有twitter记录</p>
<p>@eric33yu 的 《Erlang系统调优》开始了，放弃无线上网，开始用手机发，幸亏BB打字快</p>
<p>Erlang process 调度原则 尽量让一个cpu忙</p>
<p>讲的都是实战精华，比如斑马书中提到进程字典不是一个好的编程习惯，但yufeng从实战角度鼓励用进程字典，因为进程字典性能非常好。</p>
<p>模式匹配相同的标签尽量放在一起 如tuple，以提高效率</p>
<p>讲erlang集群 所有节点都需要相互维持一个tcp连接 并要相互维持一个90s一次的心跳 开销很大</p>
<p>讲erlang大量数据不要用tuple,array,list来存 最好用ets</p>
<p>linux systemtap 来观测程序(profiler)很有用 非侵入式 不需要修改程序</p>
<p>Erlang发送binary时候最好大于256长度，否则每份数据都需要copy，比如一次广播发送多份下行数据。</p>
<p>讲erlang上不要把ulimit -n 设太高 因为每个handler 需要占用约200字节开销 即使没用</p>
<p>yufeng讲他每做一个服务器程序，都投入30%时间编写log代码记录重要参数 以便运行期间观察</p>
<p>讲erlang中如需跨语言通讯 推荐asn.1(不少现场同学也倾向于protocol buffers)</p>
<p>Erlang中config set/get不适合用独立进程去做 推荐ets</p>
<p>发现大部分erlang programmer是c++ 出身, 特别关注IO效率, cpu利用, 多核, 上下文切换开销, 内存分配/回收，总而言之就是性能, 另外一方面也许是 @eric33yu 忽悠成功 <img src='http://timyang.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>恶狼战役的视频很震撼，这个是在ppt上看不到的 2:20 PM Nov 7th<br />
<a href="http://code.google.com/p/erlbattle/"><img class="alignnone" title="erlang battle" src="http://erlbattle.googlecode.com/files/replay-pic-s.png" alt="" width="383" height="206" /></a></p>
<p>erlang由于没有共享变量，所以进程间通讯是用message还是ets(memory db)的使用技巧是语言的特色 2:22 PM Nov 7th</p>
<p>恶狼战役的项目专门给初学者练手用，都是用基本语法，没用什么什么高级特性 2:38 PM Nov 7th</p>
<p>现在来自香港的老外Stewart Mackenzie讲 An Erlang Implementation of Restms，中英文夹杂很幽默，引起笑声阵阵 3:12 PM Nov 7th</p>
<p>@sj_mackenzie讲他选择erlang的故事，平时他是靠java make $ 3:14 PM Nov 7th</p>
<p>@sj_mackenzie解释了message queue的作用，并对比了xmpp, AMQP, atompub的一些不足，所以他建议用RestMS 3:34 PM Nov 7th</p>
<p>@sj_mackenzie对key value store 也很感兴趣，他推荐了另外一个erlang based riak, 也是一个dynamo克隆 http://riak.basho.com/ 3:47 PM Nov 7th</p>
<p>@sj_mackenzie 开始介绍 dynamo 理论了，这个是网上ppt没有的，so yet another dynamo fans. <img src='http://timyang.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  3:49 PM Nov 7th</p>
<p>@sj_mackenzie 介绍 riak performance, 单机上write 18k/s, read 25k/s 3:53 PM Nov 7th<br />
@sj_mackenzie 介绍 riak 还有一个link的特性，就像html的link一样，又向老外了解了一些link的细节 3:59 PM Nov 7th</p>
<p>@sj_mackenzie 现在是trustno1讲cuda变成，开场白是Parallel和concurrent的区别 4:27 PM Nov 7th</p>
<p>trustno1讲concurrent is coarse-grained Parallelism 4:33 PM Nov 7th</p>
<p>trustno1讲&#8221;premature optimization is the root of all evil&#8221;翻译成“过早优化是万恶之源”是不准确的，premature应该说是草率的优化更准确 4:45 PM Nov 7th</p>
<p>trustno1今天继续走“让听众听不懂”的路线，说是如果大家都听懂了他就给领导交辞呈，现在正在讲直流电平位移转为有符号数，然后突然停下来问大家前面内容有没有疑问，没人回应，然后话题继续 5:17 PM Nov 7th</p>
<h3>Day 1, Evening</h3>
<p>现在是 @bobcui 和 @qiezi 来分享actor erlang进程模型在c++事件，用51.com好友接口服务来做业务场景说明 8:10 PM Nov 7th</p>
<p>@bobcui 正在介绍51.com底层服务concurrent实现思路，coroutine协程每秒可以切换200万次，比context switch有很大优势 8:27 PM Nov 7th</p>
<p>@bobcui 介绍完coroutine spawn之后，引起听众讨论协程的一些缺陷，比如调度器没法主动调度，没有隔离，单个process出了问题没法像erlang那样隔离保护，伪erlang粉丝与纯erlang粉丝展开了pk 8:51 PM Nov 7th<br />
<img class="alignnone size-full wp-image-497" title="c_coroutine" src="http://timyang.net/blog/wp-content/uploads/2009/11/c_coroutine.png" alt="c_coroutine" width="407" height="302" /><br />
(插图：51.com C++实现的轻量级进程模型)</p>
<p>纯erlang粉丝Ery Lee质疑这套c++的协程模型ac_actor,“这套模型有商用吗”, @bobcui 急了，&#8221;我们51.com已经有一百多台服务器在跑这个&#8221; 9:05 PM Nov 7th</p>
<p>@xushiwei 开讲各种服务器编程模型的区别，进程fork方式，Boost ASIO, 轻量process其实都很相似，不管由os还是应用来管理调度，核心问题是看哪个进程够轻量 9:27 PM Nov 7th</p>
<p>@xushiwei 谈到Boost ASIO缺点不够优雅，业务代码被切分支离破碎。但轻量级进程实现简单自然，易于维护且高效，不可避免是服务器编程发展方向 9:35 PM Nov 7th</p>
<h3>Day 2</h3>
<p>御风行的 @houmingyuan 讲网络程序的压力测试，使用erlang/otp的client比c++/python一样的机器人简单方便很多(原话：舒服太多)，一个erlang process一个机器人，代码约1500行，一个星期可以做得非常完善，包括流量监控支持 10:42 AM Nov 8th<br />
<img class="alignnone size-full wp-image-498" title="erlang_cm" src="http://timyang.net/blog/wp-content/uploads/2009/11/erlang_cm.png" alt="erlang_cm" width="341" height="275" /><br />
(插图：御风行的Erlang连接服务器)</p>
<p>御风行的连接服务器/网关，由c++改成erlang之后,代码由7924减少到2000行，状态机状态及事件都减少到一半以下。以及模式匹配比c++优雅舒适很多,性能和c++差不多，而且erlang是新手写的，c++是老手 11:02 AM Nov 8th</p>
<p>御风行的erlang连接服务器/网关，6500并发下，测试流量达到3w-4w packet/s 11:18 AM Nov 8th</p>
<p>说到erlang连接服务器6500并发下，测试流量达到3w-4w packet/s，不少提问没找到缺陷，又伤害了现场不少c++, boost asio粉丝脆弱的心灵 11:26 AM Nov 8th</p>
<p>@eric33yu 补充erlang内存分配的方式，erlang有200多种内存分配的方式，比一般同学自己写的内存池有不可比拟的优势。另外由于大部分erlang大牛都是c++/erlang双剑客，所以大部分c++粉丝的质疑都被轻松驳回 11:36 AM Nov 8th</p>
<p>发现erlang缺少一本类似effective java/c++这样的书，现场工程师有很多类似问题    12:48 PM Nov 8th</p>
Similar Posts:<ul><li><a href="http://timyang.net/architecture/game-backend/" rel="bookmark" title="December 25, 2008">陈杰谈网游服务器的后端技术</a></li>

<li><a href="http://timyang.net/misc/2010-tech-plan/" rel="bookmark" title="December 28, 2009">2010年技术实践计划</a></li>

<li><a href="http://timyang.net/architecture/2010-tech-predictions/" rel="bookmark" title="December 31, 2009">2010年的技术架构建议</a></li>

<li><a href="http://timyang.net/web/pubsubhubbub/" rel="bookmark" title="October 29, 2009">PubSubHubbub的价值</a></li>

<li><a href="http://timyang.net/lua/lua-coroutine-vs-java-wait-notify/" rel="bookmark" title="April 27, 2009">Lua coroutine vs Java wait/notify</a></li>
</ul><!-- Similar Posts took 16.785 ms -->]]></content:encoded>
			<wfw:commentRss>http://timyang.net/erlang/cn-erlounge-iv-tweets/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>参加Erlang开发者大会一些记录</title>
		<link>http://timyang.net/erlang/cn-erlounge-iii/</link>
		<comments>http://timyang.net/erlang/cn-erlounge-iii/#comments</comments>
		<pubDate>Fri, 26 Dec 2008 14:58:20 +0000</pubDate>
		<dc:creator>Tim</dc:creator>
				<category><![CDATA[Erlang]]></category>
		<category><![CDATA[Erlounge]]></category>

		<guid isPermaLink="false">http://timyang.net/blog/?p=11</guid>
		<description><![CDATA[Erlang开发者大会是我参与过的最温馨的一个小规模会议，没有赞助商广告，不用抢网络，有免费午餐和下午茶(水果)，第二天还有免费的中午大餐。感谢xushiwei和赞助商们(盛大，金山及 opengoss)，让大家能够在这么一个温馨的场所进行交流。
第一天有2个有关web game的session, 其中jackyz的麻将程序业务逻辑竟然是用JS完成的，“用Erlang写业务逻辑太繁琐了”，他是如是说。另外一个是金山的韩拓的基于Flash的象棋程 序，同时里面还实现了一个AI的机器人，他这个demo已经在google code上开源了，见 erl-chess。
前文提到过的一次演讲陈杰谈网游服务器的后端技术，演讲是在第一天下午分组讨论会上。分组讨论的遗憾是很难取舍，嫌自己分身无术。周敏的MapReduce和另外一个Topic Erlang VM我也很感兴趣，但没法同时参与了。
另外还有几个相对深奥的Topic, 比如TrustNo1谈的冯诺依曼机的缺陷，Mryufeng的Inside the erlang VM，E2dynomo, 光听名字就很深奥。听众听完都没胆量提问了。
尾声是在ery.lee讲的Erlang电信网管软件应用, EryLee走得比较前沿，他已经用Erlang开发出大规模的商用软件了。他讲述了他从繁琐的Java EE，SOA转向轻量级的Erlang后端+Ruby on Rails前端的经历。Ery的观点比较激进，但是我比较认可。他提到目前主流的应用程序实际上都是在处理数据，实际上是一个数据流的处理，但是使用流行 的OO方式去解决问题，首先经常考虑的却是我怎么样写一个class, 或者我要用一个什么样的设计模式。但是FP语言如Erlang从第一行开始就是对数据真正的业务处理，可以更精简的完成任务。
其中我也很荣幸在大会中讲了一个XMPP Jabber的话题，于在场的开发高手进行了探讨，获益颇多。
Similar Posts:5%的神话(关于开发效率与职业方向)

关于阙宏宇lighttpd与mod_cache在twitter上的一些讨论

Lua coroutine vs Java wait/notify

Twitter停用Cassandra原因分析

陈杰谈网游服务器的后端技术
]]></description>
			<content:encoded><![CDATA[<p>Erlang开发者大会是我参与过的最温馨的一个小规模会议，没有赞助商广告，不用抢网络，有免费午餐和下午茶(水果)，第二天还有免费的中午大餐。感谢<a href="http://blog.csdn.net/xushiweizh" target="_blank">xushiwei</a>和赞助商们(盛大，金山及 <a href="http://www.opengoss.com/" target="_blank">opengoss</a>)，让大家能够在这么一个温馨的场所进行交流。</p>
<p>第一天有2个有关web game的session, 其中jackyz的麻将程序业务逻辑竟然是用JS完成的，“用Erlang写业务逻辑太繁琐了”，他是如是说。另外一个是金山的韩拓的基于Flash的象棋程 序，同时里面还实现了一个AI的机器人，他这个demo已经在google code上开源了，见 <a href="http://code.google.com/p/erl-chess/" target="_blank">erl-chess</a>。</p>
<p>前文提到过的一次演讲<a href="../architecture/game-backend/">陈杰谈网游服务器的后端技术</a>，演讲是在第一天下午分组讨论会上。分组讨论的遗憾是很难取舍，嫌自己分身无术。周敏的MapReduce和另外一个Topic Erlang VM我也很感兴趣，但没法同时参与了。</p>
<p>另外还有几个相对深奥的Topic, 比如TrustNo1谈的<a href="http://docs.google.com/Presentation?id=dds5zgx6_468fkcstm5f" target="_blank">冯诺依曼机的缺陷</a>，Mryufeng的<a href="http://docs.google.com/Presentation?id=ah9sz7kfxfhz_291fj4fkhf4" target="_blank">Inside the erlang VM</a>，<a href="http://docs.google.com/Presentation?id=ah9sz7kfxfhz_299f8x6g7cf" target="_blank">E2dynomo</a>, 光听名字就很深奥。听众听完都没胆量提问了。</p>
<p>尾声是在ery.lee讲的<a href="http://docs.google.com/Presentation?id=ajb63mf8qh8d_649dqdq9hc7" target="_blank">Erlang电信网管软件应用</a>, EryLee走得比较前沿，他已经用Erlang开发出大规模的商用软件了。他讲述了他从繁琐的Java EE，SOA转向轻量级的Erlang后端+Ruby on Rails前端的经历。Ery的观点比较激进，但是我比较认可。他提到目前主流的应用程序实际上都是在处理数据，实际上是一个数据流的处理，但是使用流行 的OO方式去解决问题，首先经常考虑的却是我怎么样写一个class, 或者我要用一个什么样的设计模式。但是FP语言如Erlang从第一行开始就是对数据真正的业务处理，可以更精简的完成任务。</p>
<p>其中我也很荣幸在大会中讲了一个<a href="http://hi.baidu.com/jabber/blog/item/04fda177109bd91cb151b965.html" target="_blank">XMPP Jabber的话题</a>，于在场的开发高手进行了探讨，获益颇多。</p>
Similar Posts:<ul><li><a href="http://timyang.net/programming/mythical-5/" rel="bookmark" title="May 19, 2009">5%的神话(关于开发效率与职业方向)</a></li>

<li><a href="http://timyang.net/programming/lighttpd-mod_cache-twitter/" rel="bookmark" title="July 5, 2009">关于阙宏宇lighttpd与mod_cache在twitter上的一些讨论</a></li>

<li><a href="http://timyang.net/lua/lua-coroutine-vs-java-wait-notify/" rel="bookmark" title="April 27, 2009">Lua coroutine vs Java wait/notify</a></li>

<li><a href="http://timyang.net/data/twitter-cassandra/" rel="bookmark" title="July 12, 2010">Twitter停用Cassandra原因分析</a></li>

<li><a href="http://timyang.net/architecture/game-backend/" rel="bookmark" title="December 25, 2008">陈杰谈网游服务器的后端技术</a></li>
</ul><!-- Similar Posts took 15.233 ms -->]]></content:encoded>
			<wfw:commentRss>http://timyang.net/erlang/cn-erlounge-iii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>陈杰谈网游服务器的后端技术</title>
		<link>http://timyang.net/architecture/game-backend/</link>
		<comments>http://timyang.net/architecture/game-backend/#comments</comments>
		<pubDate>Wed, 24 Dec 2008 23:14:57 +0000</pubDate>
		<dc:creator>Tim</dc:creator>
				<category><![CDATA[架构]]></category>
		<category><![CDATA[Erlounge]]></category>
		<category><![CDATA[网游服务器]]></category>

		<guid isPermaLink="false">http://timyang.net/blog/?p=1</guid>
		<description><![CDATA[在12/20的Erlang开发者大会上，西山居的陈杰(bitcowboy)的演讲《网游服务端寻路》给我的印象非常深刻。他通过一个网游服务器寻路的案例，给大家讲述了在算法，架构，cache，并发编程及借鉴了Erlang的一些先进思路的各种经验及体会。

算法，运营对寻路的要求比普通算法性能要高100倍。2D/3D中分别如何设计算法达到性能要求。
稳定性


将独立的模块封装成单独的进程。
进程间通讯(IPC)使用TCP，为什么使用TCP而不是其他更高效的本地IPC方式？一方面因为大部分项目都有现成稳定的TCP模块，另外一方面更容易将一台服务器拆分到多个服务器，程序完全不用修改。
进程死掉怎么办？进程调用长时间不返回怎么办？
面对3的问题，旁边有另外一游戏架构设计师更是提到他们采取更激进的做法，将所有的进程做成单任务式的，完成任务就结束。分配任务线程为每个任务开新进程。有点象用Erlang中的process或Java中线程池的做法。


一种多进程访问共享内存不需要加锁的设计模式，如图所示。


(Figure: 来源陈杰PPT, 作者为陈杰)

调度进程给寻路进程分配任务，每次一个任务。
寻路进程更新cache为了避免并发访问，先只写入到 local cache
如果所有寻路进程空闲，调度进程会通知其中1个寻路进程将local cache同步到全局cache
如果一个寻路进程指定的时间没有返回，可简单kill之
此模式适合更多使用场合


一种热升级模块的设计模式，简述：新进程使用新端口启用-&#62;通知调度启用新端口-&#62;调度程序将请求转向新端口-&#62;老模块完成手头工作后，被调度告知自动结束。

总的说来，陈杰的演讲反应非常热烈，旁听参与的听众讨论也非常热烈，因为本人不是演讲者，很多细节没法在这里深入表达，PPT中也只是表达了现场的部分观点。
另外这个演讲是以一个小组讨论的形式进行的，这样演讲者和听众的思路非常自由，比单独站台上讲相比可以进行更深入的交流。所以陈杰总是提醒大家，我们还是把这个演讲稿先讲完吧。
对，我们也先把演讲稿看完把，Google Docs 在线预览版：网游服务端寻路
Similar Posts:陈杰谈网游服务器的后端技术

Twitter架构图(cache篇)

FarmVille(美版开心农场)谈架构:所有模块都是一个可降级的服务

利用Gearman来实现远程监控与管理

参加Erlang开发者大会一些记录
]]></description>
			<content:encoded><![CDATA[<p>在12/20的Erlang开发者大会上，西山居的陈杰(bitcowboy)的演讲《<a href="http://docs.google.com/Present?docid=dds5zgx6_429v8d9crgc" target="_blank">网游服务端寻路</a>》给我的印象非常深刻。他通过一个网游服务器寻路的案例，给大家讲述了在算法，架构，cache，并发编程及借鉴了Erlang的一些先进思路的各种经验及体会。</p>
<ul>
<li>算法，运营对寻路的要求比普通算法性能要高100倍。2D/3D中分别如何设计算法达到性能要求。</li>
<li>稳定性</li>
</ul>
<ol>
<li>将独立的模块封装成单独的进程。</li>
<li>进程间通讯(IPC)使用TCP，为什么使用TCP而不是其他更高效的本地IPC方式？一方面因为大部分项目都有现成稳定的TCP模块，另外一方面更容易将一台服务器拆分到多个服务器，程序完全不用修改。</li>
<li>进程死掉怎么办？进程调用长时间不返回怎么办？</li>
<li>面对3的问题，旁边有另外一游戏架构设计师更是提到他们采取更激进的做法，将所有的进程做成单任务式的，完成任务就结束。分配任务线程为每个任务开新进程。有点象用Erlang中的process或Java中线程池的做法。</li>
</ol>
<ul>
<li>一种多进程访问共享内存不需要加锁的设计模式，如图所示。</li>
</ul>
<p><img class="alignnone size-full wp-image-7" title="调度进程" src="http://timyang.net/blog/wp-content/uploads/2008/12/chenjie.gif" alt="调度进程" width="400" height="396" /></p>
<p>(Figure: 来源陈杰PPT, 作者为陈杰)</p>
<ol>
<li>调度进程给寻路进程分配任务，每次一个任务。</li>
<li>寻路进程更新cache为了避免并发访问，先只写入到 local cache</li>
<li>如果所有寻路进程空闲，调度进程会通知其中1个寻路进程将local cache同步到全局cache</li>
<li>如果一个寻路进程指定的时间没有返回，可简单kill之</li>
<li>此模式适合更多使用场合</li>
</ol>
<ul>
<li>一种热升级模块的设计模式，简述：新进程使用新端口启用-&gt;通知调度启用新端口-&gt;调度程序将请求转向新端口-&gt;老模块完成手头工作后，被调度告知自动结束。</li>
</ul>
<p>总的说来，陈杰的演讲反应非常热烈，旁听参与的听众讨论也非常热烈，因为本人不是演讲者，很多细节没法在这里深入表达，PPT中也只是表达了现场的部分观点。</p>
<p>另外这个演讲是以一个小组讨论的形式进行的，这样演讲者和听众的思路非常自由，比单独站台上讲相比可以进行更深入的交流。所以陈杰总是提醒大家，我们还是把这个演讲稿先讲完吧。</p>
<p>对，我们也先把演讲稿看完把，Google Docs 在线预览版：<a href="http://docs.google.com/Present?docid=dds5zgx6_429v8d9crgc" target="_blank">网游服务端寻路</a></p>
Similar Posts:<ul><li><a href="http://timyang.net/architecture/game-backend/" rel="bookmark" title="December 25, 2008">陈杰谈网游服务器的后端技术</a></li>

<li><a href="http://timyang.net/architecture/twitter-cache-architecture/" rel="bookmark" title="October 28, 2009">Twitter架构图(cache篇)</a></li>

<li><a href="http://timyang.net/architecture/farmville/" rel="bookmark" title="March 8, 2010">FarmVille(美版开心农场)谈架构:所有模块都是一个可降级的服务</a></li>

<li><a href="http://timyang.net/linux/gearman-monitor/" rel="bookmark" title="August 26, 2009">利用Gearman来实现远程监控与管理</a></li>

<li><a href="http://timyang.net/erlang/cn-erlounge-iii/" rel="bookmark" title="December 26, 2008">参加Erlang开发者大会一些记录</a></li>
</ul><!-- Similar Posts took 13.390 ms -->]]></content:encoded>
			<wfw:commentRss>http://timyang.net/architecture/game-backend/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
