由买买提看人间百态

topics

全部话题 - 话题: 异步
首页 上页 1 2 3 4 5 6 7 8 9 10 下页 末页 (共10页)
g*****g
发帖数: 34805
1
来自主题: JobHunting版 - 关于node的讨论进这里吧
Node是单线程的,所谓的线程池是在底层C里面,用来执行操作系统的一些blocking
call,这样可以避免阻塞event loop。大部分底层调用是异步IO。
Java同样支持异步IO,但上层的很多API都是blocking或者使用了threadlocal的。
q********c
发帖数: 1774
2
来自主题: JobHunting版 - 问一个F的设计题
client不光是browser, 还可以是smart phone, tablets, 以及desktop apps, 完整的
api应该都包括这些吧? 支持同步还是异步传输,当然现在都流行异步,数据格式 (
JSON)等等。
server api应该是标准RESTFUL 接口,支持http的命令,用什么framework, DB等等,
怎么scale up/out? 我就是在瞎扯淡,呵呵。

&
x****u
发帖数: 81
3
来自主题: JobHunting版 - 也来攒下人品,L面经
根本不能说是handle,这方面我不懂,比起其他面试很没自信。对面是两个人,期间扯
不清楚还用了collabedit边写边讲,具体对话如下。大家谨慎阅读,很有可能我说了很
多错的东西,他们也没有当场指出。如果懂行的朋友望指正一下。
对方:reverted index怎么partition,怎么scale
我:按term来hash,用consistent hashing来保证加机器之后数据不用全部reshuffle。
对方:consistent hashing怎么工作的
我:blahblah(写了个小例子解释)
对方:你讲讲加了个node之后发生了什么
我:加了机器后,新机器收到了查某个term的请求,就去老机器上拉数据过来再存着..
(被打断)
对方:client怎么会发请求到新机器
我:因为加了机器之后hash ring更新了,有一部分term的请求导到新机器了
对方:怎么更新的
我:可以用ZooKeeper存机器列表,新机器register到zookeeper后,各client那边的
listener就更新列表
对方:新加的机器怎么知道到哪里去找某个term的数据
我:顺着hash... 阅读全帖
z****e
发帖数: 54598
4
来自主题: JobHunting版 - T a b l e a u 昂塞特面经
发现他们backend很喜欢考多线程
而且对于eventloop,异步这一块有偏好
虽然threadpool也可以,但是现在好像不怎么流行用threadpool
最新的都是一个core对应一个thread,这样便于scale out
最新成果是quasar,这个直接把同步搞成异步,用一个annotation就实现了
建议多看看vert.x,一天到晚就在搞这些东西
streaming我觉得没有必要
不过你要是连streaming都懂,这些都小意思了
streaming最好把rxjava,reactive这些先看看
不过他们也考得很实在,这种公司比较有前途,做的东西也靠谱
z****e
发帖数: 54598
5
来自主题: JobHunting版 - T a b l e a u 昂塞特面经
发现他们backend很喜欢考多线程
而且对于eventloop,异步这一块有偏好
虽然threadpool也可以,但是现在好像不怎么流行用threadpool
最新的都是一个core对应一个thread,这样便于scale out
最新成果是quasar,这个直接把同步搞成异步,用一个annotation就实现了
建议多看看vert.x,一天到晚就在搞这些东西
streaming我觉得没有必要
不过你要是连streaming都懂,这些都小意思了
streaming最好把rxjava,reactive这些先看看
不过他们也考得很实在,这种公司比较有前途,做的东西也靠谱
j********r
发帖数: 127
6
来自主题: JobHunting版 - 讨论一下12306的架构?
我补充一下,异步处理能很好解决并发问题,但是问题是,你定了票之后不知道是否能
定的上,特别是有很多线路可以选择的情况下,如果不小心选择了紧俏的线路,等异步
处理结果出来再去定差一点的线路结果也没票了,这样也不太合理。
如果界面能设计成一个多选一的订单倒是可以接受
比如有多个选择线路,购票人选择几路,按最希望订到的顺序加入订单,最后选择总订
票数,作为一个订单提交给系统,然后系统根据优先顺序提供总订票数。
这里剩下一个问题就是如果订两张票,本来想一起走,结果分成了两趟走,或者一张订
到一张没订到,不能和女盆友一起走估计很郁闷,还需要增加几个选择all or none,
必须同车次等等。
j********r
发帖数: 127
7
来自主题: JobHunting版 - 讨论一下12306的架构?
也是可以解决的,就像你在窗口订票,轮到你,你把你可能需要的车次都问一遍,如果
有就订上,没有的话你也没办法,只能等下一次放票活着别人退票了。
--------------------------
我补充一下,异步处理能很好解决并发问题,但是问题是,你定了票之后不知道是否能
定的上,特别是有很多线路可以选择的情况下,如果不小心选择了紧俏的线路,等异步
处理结果出来再去定差一点的线路结果也没票了,这样也不太合理。
如果界面能设计成一个多选一的订单倒是可以接受
比如有多个选择线路,购票人选择几路,按最希望订到的顺序加入订单,最后选择总订
票数,作为一个订单提交给系统,然后系统根据优先顺序提供总订票数。
这里剩下一个问题就是如果订两张票,本来想一起走,结果分成了两趟走,或者一张订
到一张没订到,不能和女盆友一起走估计很郁闷,还需要增加几个选择all or none,
必须同车次等等。
z****e
发帖数: 54598
8
来自主题: JobHunting版 - 讨论一下12306的架构?

看到结果没用啊,划账没有完成,光看结果其本质就是一个异步
跟古德霸的异步效果没大差别,不过你这么做也不是没有道理
可以用这种方式增强体验
z****e
发帖数: 54598
9
来自主题: JobHunting版 - 讨论一下12306的架构?
另外就是,异步queue和memorydb其实没有啥本质区别
如果你只是想返回的话,异步的目的就是让你尽早返回
现在问题是,票的信息在db硬盘上,你什么时候返回有什么意义?
这里就有了一层io好吧?当你读票的时候,就有了争抢,锁等问题了
这里就有了一个transaction在等着你了,因为是db
难道这个都不考虑了?
g*****g
发帖数: 34805
10
来自主题: JobHunting版 - 锁票是12306 的重要组成部分
很好,13年初讨论这个系统的时候。我就提了解决方案,读写分离,异步出票,云计算
。当时阿里还没参与进来。你要是看看讨论就发现我说得这几条都做了,不是什么计数
器。嘲笑我用异步的直接被打脸了。
y******u
发帖数: 804
11
来自主题: JobHunting版 - 锁票是12306 的重要组成部分
发现你很喜欢模糊概念而从中获利
你那个“一小时才能决定能不能上厕所”的“异步”,跟异步中间件是一回事吗?
t********5
发帖数: 522
12
来自主题: JobHunting版 - 请教一道JavaScript 编程题
这种题不光js可以出 python这种也可以出,基本上你要做的就是build一个小型的api
server,你这里还涉及到异步,不过简单一点你可以写成非异步的抓取,你要做的就是:
1. 用js访问给定的query页面
2. 读取html content
3. 用某种工具来抓取html内容(python有beautifulsoup, js的话你可用npm,手写的
话可以用regex)
4. 用抓到的内容construct data object然后 JSON.parse(objectData) 作为函数的返回
具体的一个例子你可以参考这个的代码 https://www.npmjs.com/package/scrape
N*D
发帖数: 3641
13
大流量高可靠性高弹性的在线服务一般使用异步的通讯,推特的异步通讯RPC平台
finagle就是一个例子。这个是开源的,你感兴趣可以看看https://github.com/
twitter/finagle。实时流处理可以参考https://github.com/twitter/heron,这个是
Storm的二代。离线批处理的,可以参考https://github.com/twitter, scaling/
summingbird,也有用Spark的。
m******e
发帖数: 82
14
来自主题: JobHunting版 - 贡献个系统设计题兼讨论
还是认真回答一下吧:
1. 你可以设想每个银行开放自己的接口,可以操作credit/debit card,在你的系统中
可以抽象一层,对外暴露统一接口,对内处理各种银行。以后有了新的银行就可以在接
口不变的情况下扩展。这时你会发现其实外面有这样的服务了,比如stripe。
2. 直接返回错误用户体验太差,可以添加重试机制,异步扣款,扣款成功邮件提醒。
3. 这是一个compliance问题,涉及法律问题,应该由business的人决定,当然保存了
之后下次再捐款可以很便捷。
4. 不同数据存不同数据库,像个人信息,卡信息可以存rdbms。一些activity之类的可
以存nosql。
5. 要么同步,要么异步,自己分析
6. 用不用queue跟业务量和业务逻辑有关,如果要用就上kafka
7. 数据库变大影响是索引变大,查询更新速度变慢,所有你能想到的优化都说一遍,
比如sharding,read replica,caching
z****e
发帖数: 54598
15
如何线程安全
jcu,concurrenthashmap是答案之一,可以加分
如何scale
同步转异步,io bound节省线程
actor model随便找一个
java当然用vert.x啊
akka也行,但是akka比较难用
lock free的节奏
lock用多了,性能就下来了,lock越少越好
actor model可以实现lock free
但是前提是要完成同步转异步,线程数不能开太多
一般是available cores,比如jvm自身的fork&join pool
vert.x的eventloop pool,这个是available cores*2
因为netty里面需要分一半cpu资源给io,这一句猜的,不确定
因为线程数少了,所以lock数自然也少了,线程多,lock就多
最后写起来很ugly,怎么办?
future/promise, reativex(rxjava)和coroutine,三选一
还记得那个snapshot还是什么用的是erlang么?
最早actor model就是那边出来的
c****3
发帖数: 10787
16
来自主题: Stock版 - 微软确实稍微有点软?
其实J2EE那些东西,核心就是跨机器的异步调用+数据库+Web。异步调用以前的CORBA的
二进制RPC,换成XML RPC。
IBM和SUN搞了个马甲,弄出一堆的名称,搞出眼花缭乱的框架。其实和微软.Net是做一
样的事情。不过IBM和SUN不搞出那么多马甲,不把普通人搞晕,也没法卖服务了。
如果只作大公司,是不会知道这个世界还是中小企业占绝大多数。中小企业是用微软平
台最多的。
r*****r
发帖数: 867
17
那还是因为LTE上的优势。
异步不稀奇,samsung quad-core也是异步。big-little架构是趋势,qcom还没有呢。
28nm,qcom上次股票大跌就是因为这个原因。它现在也许正后悔采用这么个还不成熟的
工艺。
我只是想说,qcom的优势没有那么多,除了modem,和集成方面。

元素
d*********g
发帖数: 225
18
只要你确定不会被查处更多的税,你确定你争论的是对的,又有时间,可以异步异步去
抗争,不然太憋气了
p****n
发帖数: 2247
19
来自主题: SanDiego版 - to BF: 投诉papain PA!!!!\
要不叫你“异步传输模式”?问题是没几个听得懂呀。
这样吧,你自己在以下17个选项中挑一个吧。俺嚼着1、7、8都挺好。。。
1.ATM(Ao Te Man,奥特曼)
2.ATM自动取款机
3.异步传输模式
4.空中交通管理
5.标准大气压
6.亚图姆(阿图姆)
7.婚前禁欲(ATM)
8.阿童木(ATM)
9.ATM中文网
10.Acceptance Testing Manual
11.游戏中的一种称呼
12.横扫千军的秘籍
13.马德里竞技足球俱乐部
14.Anti Tank Missile(反坦克导弹)
15.高级战术导弹
16.ATM存钱罐
17.共济失调毛细血管扩张突变(基因)
d********f
发帖数: 43471
20
那根据异步定律尼米冠军杯也就到此为止了,你是希望异步定律存在还是不存在?
a****a
发帖数: 5763
21
经过6年时间,4个发行版,苹果终于完成了向64位的迁移,并随着Snow Leopard的发布
推出了解决并行编程问题的Grand Central Dispatch(简称GCD)技术,释放了多核系
统的潜力。
和10.5一样,在10.6 Snow Leopard中,苹果继续利用64位的迁移砍掉了诸多老技术,
很多新技术仅以64位的模式被支持。例如重写的QuickTime X框架,虽然QuickTime X应
用程序以32位和64位的模式发布,但其API仅暴露给64位。另一个例子是Objective-C 2
.1的运行库,快速Vtable调度,新的和C++统一的异常处理模型,以及彻底解决对象的
FBI问题等,都仅限64位程序使用。
内核的64位化
读者应该发现,经过这4个发行版,Mac OS X自下而上地对整个系统向64位迁移。10.3
内核空间提供了64位整数运算的支持。10.4允许程序以64位模式运行在用户空间,并且
提供了64位的libSystem使得开发者可以开发64位的Unix程序,而10.5中系统所有未废
弃的函数库、框架都提供64位版本,到了10.6,所有用户空间的程序,包括... 阅读全帖
T**********n
发帖数: 480
22
越快越好是没错的
但是并行程序设计这种事是不应该由程序员来做
最高顶多做到编译的层次,比如HPF这样的倒是有可能
举一个可能不恰当的例子
其实OS的IO都是异步的,但是程序员打开文件,读,写
都不会用异步的写法issue一个操作,等待一个回调
这是核心态的事情,在用户态做不能带来任何好处
并行程序也是,就算SMP全面普及,顶多是一个支持并行的VM上面继续跑串行程序
i**e
发帖数: 6810
23
NIO是异步process web requests。有什么web server能异步
到后台取data,然后回到原来的socket connection去serve page?
z****e
发帖数: 54598
24
javax.faces.*
javax.faces.component.*
这两个就是大名鼎鼎的jsf
web层的东西
javax.enterprise.inject.*
这个对于spring熟悉的话,这一块也不难
javax.enterprise.context.*
javax.ejb.*
这两个都是ejb的东西,第一个说的是容器的概念
如何向容器申请需要的资源的api
对ejb2熟悉的话,这个应该没什么了
以上三个都是business层的东西
javax.validation.*
这个最早是hibernate的一个部分,做得很好了之后独立出来单独搞
javax.persistence.*
javax.transaction.*
jpa相关的东西,可以理解成是跟db相关的部分,transaction什么应该都知道吧?
以上三个都是persistence层的东西,都是hibernate那个gavin king牵头搞的
javax.jms.*
这个最早是ejb的一个部分,最早ejb有stateful, stateless和message bean
这个其实用在异步处理上比较多,最早的异步... 阅读全帖
r******r
发帖数: 700
25
来自主题: Java版 - 多线程真头疼,但也挺有趣
有点点长啊。
有一个 tool, 以前处理的数据比较少,所以速度,时间都不成问题。但现在需要处理
的数据增大,速度问题就突出了。费了好大一番力气,总算弄通了,一次处理的时间由
原来的 24 个小时,减小为 3 个小时。
第一次弄多线程,很费劲。但弄通了(只是这个小 task 弄通了,并非多线程弄通了)
,又觉得很有意思,小有成就感。分享一下,希望对 beginner 有帮助,也希望有经验
的多指教。其中有些地方,还没有完全明白,正在学习-ing。
程序其实也简单,就是在单机上运行的一个程序。过去单线程的,即使在多 core 的机
器上运行,也只能利用处理器的少部分能力。现在就是要改为多线程,多核处理。
数据存在 10 个文本文件中,每个大约 40M.程序从每个文件逐行读取,逐行处理,很
多信息被保存到不同的数据结构中。最后输出处理报告,中间还要将部分处理信息输出
到一个 XML 文件中。
经过一番 google search 和研究,所做的改动包括:
1) 将原来的逐行读取,逐行处理,改为先将每个文件的所有行读到一个新建的
DataStore 中,这个结构比较简单。就是保持原来的每行文... 阅读全帖
p*****2
发帖数: 21240
26
来自主题: Java版 - java SOAP比restful难学吗?

就跟ruby用eventmachine差不多。要用异步的类库才可以。就看异步类库好不好用了。
p*****2
发帖数: 21240
27
来自主题: Java版 - java SOAP比restful难学吗?

就跟ruby用eventmachine差不多。要用异步的类库才可以。就看异步类库好不好用了。
w***g
发帖数: 5958
28
来自主题: Programming版 - multiple io thread有用没用啊?
有用。有的系统不支持异步I/O,所以只能用多线程+同步I/O来模拟。即使支持异步I/O
,多线程模式编程也比较容易。
n*********i
发帖数: 567
29
来自主题: Programming版 - 问一个同步问题
最近碰到一个难题,想问问版上有没有人知道。具体是这样的:程序是运行在WINDOWS
上,比如说程序里有一块内存,我从显卡上通过异步DMA COPY一些数值到这块内存上
,因为是异步调用,我也不知道DMA会什么时候开始。但是我想知道那块内存里的值什
么时候发生改变。我不想用POLLING一次一次地去CHECK,因为那样太占CPU了,想通过
EVENT的方式,可以节省CPU LOADING。请问有这样的方式么?
最近想了很久,也没什么办法。实际上是显卡和CPU这边的同步问题,但是因为提供的
同步API也是把CPU BLOCK住,CPU LOADING太高。其他的显卡和CPU的通信方式就只有
DMA了,所以想看看有没有什么其他好的方法。
谢谢
a9
发帖数: 21638
30
来自主题: Programming版 - 看来你们是真心没做过web啊
我前阵子试用了一下。好多方法都是异步方法,用的不是很舒服,就放弃了。
比如http获取网页,在客户端异步很好用,到了服务器端根本没法用。
N********n
发帖数: 8363
31
来自主题: Programming版 - 看来你们是真心没做过web啊

看.NET 4.5的AWAIT异步支持,那才是真正为程序员着想的异步支持。
s********k
发帖数: 6180
32
来自主题: Programming版 - 为啥大家都比较python的web framework呢
我们大量用python,基本不用web,最多到Twisted 做TCP,大量用coroutines做异步处
理,Gevent之类. 我自己基本就是C + python. C做网络,python做大量外围和异步工作
所以每次看到比较ruby我都一头雾水,没人比较python在其他方面的优劣?很多网络公
司(不是web公司),比如做switch, router之类也大量用python。高人来比较下这方
d********g
发帖数: 10550
33
你所谓的多线程思路还是在单机上。多线程靠单机是吃力不讨好,Win32的时候就搞烂
了,最简单一个ModalForm弹出来但是需要非阻塞就必须搞多线程。高中就在玩,没必
要当个宝。你说的“web”眼界太窄,也许你都不知道这个“web”实际上就是你说的“
backend”,现在不是靠单打独斗而是靠架构,不然也没AWS啥事了
顺便转个文章吧,看看架构:
http://highscalability.com/blog/2012/5/21/pinterest-architectur
这也是你说的“web”公司。要吹规模没什么意思,你的所谓大项目不一定比pinterest
、disqus之类的大。不管什么语言,在大流量的情况下都是渣,都得靠做架构。单机做
多线程没戏,不用当个宝
Java多线程比Python强是不争的事实,但是你要是知道Python的很多多线程解决方案反
而是利用Twisted之类的异步把多线程的部分交给OS去做,这也是另一种境界
Python原生异步支持也在计划中,这是顺应历史潮流的:
http://www.python.org/dev/peps/pep-3156/
另外你说“j... 阅读全帖
d********g
发帖数: 10550
34
来自主题: Programming版 - Delphi这个语言是不是已经死了?
这个问题我早就说过了。多线程是一个解决block的方法,异步同样也是,异步+多进程
的开销不比多线程高,在某些应用场景是更适合的
o**2
发帖数: 168
35
基本赞同goodbug的观点。
同步和异步都是人类的基本思维方式,但同步更基本。一个语言或工具应该是以同步为
主,异步也要好用。
这也是我设计FMP的基本思想,因为我觉得thread不好用。

side
p*****2
发帖数: 21240
36
来自主题: Programming版 - 关于clojure

想先看看异步。
有没有提供所有的异步库。
json转换如何
跟mongo,mysql,等等连接
大牛随便聊聊就很有用了。
p*****w
发帖数: 429
37
来自主题: Programming版 - 同步编程真郁闷
异步回调本质从code上看就是一堆switch case,根goto还是有区别的.
你说的c#是多线程还是异步?
t*****s
发帖数: 416
38
来自主题: Programming版 - 写给对系统感兴趣的人
拜托您不清楚的就别说,不要误导人了好不好。
放你自己的贴里瞎说也就算了,放我的贴里我不纠正还得负连带责任。
所谓context switch就是在同一颗CPU上发生的事情。switch上去的用户进程和switch
下来的用户进程当然是在同一个CPU上跑的。只不过被switch下来的进程一会儿可能又
会被其他CPU switch上去。
从整体系统上看,每个CPU上都有一个scheduler,但是他们调度的范围都是整个系统的
所有进程。你这种“Context Switch后会根据任务调度策略选择一个最合适的地方跑“
的说法根本就是概念不清把两次context switch混成一次说的结果。
至于内核态根本没有什么所谓的说来话长,一个用户态进程call一个系统调用,系统调
用一定是在同一个CPU上直接执行。除非系统调用本身有异步操作,那样的话系统调用
发出异步请求之后会call scheduler,然后suspend保存到内存里去,一会儿被哪个CPU
上的scheduler叫醒才会不一定。
g****r
发帖数: 1589
39
来自主题: Programming版 - 看了一下C#的async await
异步本来就不是啥新玩意啊,c#的精髓是你只需要按写同步程序的方法就能写个异步的
程序,编译器和framework帮你把你的程序分解成不同的piece在相应io完成时执行。所
以实际上你就是写了一个顺序执行的程序,要是用node,你得自己写一堆callback,算
不上多麻烦,不过就是developer friendly的程度罢了
p*****2
发帖数: 21240
40
来自主题: Programming版 - 看了一下C#的async await

这个没错。不过这东西Go里面也有。Node很快也会加上去了。
我感觉Go实现的可能比C#更彻底。C#你还需要意识到什么时候是同步,什么时候是异步
,Go给我的感觉应该是你基本不用考虑异步了,系统都给你干了。
z****e
发帖数: 54598
41
跟storm最接近的ejb应该是以前的messaging bean
现在的jms,但是我觉得,跟jms相比
第一是storm比较轻,除了这一块它什么都没有
jms你要全套jee才有
其次就是storm支持streaming处理,这个如果你用ejb做的话
怕是会超时
最后就是异步处理,这个jms其实也是异步处理,所以还好了
这个最好让有jms以及storm等经验的人来说说
这一块我经验也比较少
c******o
发帖数: 1277
42
一样的场景,同步不是一样慢。
异步不代表慢,代表当一部分不行的时候,其他的还能用,我这儿等的时候别的可以上。
异步的trade off是一个难做,一个在大系统的不同部分可能有不一致,但是你的
response 快。
看看WoW的邮件系统,就很明显。
g*****g
发帖数: 34805
43
你用的是CouchDB,实现里每个操作会打开一个http connection,没有pooling。
如果一个DB操作是10ms的话,打开一个连接通常是100ms级。有pooling的话,这些连接
可以被重用,可以大大缩短整个时间。作者这么土鳖的实现,结果就是导致到数据库的
IO轻松地成为瓶颈,语言执行的快慢完全可以忽略不计。在这个前提下Node异步的实现
即使在低并发的时候都会比servlet同步的实现快。当然还是不会比同样异步的java实
现如vert.x快。
web应用,app server到db server的connection pooling是常识。原作者跟你一样没有
常识,你还如获至宝。HelloWorld程序员真不是说的。
你如果去看另外一个评测里的实现,有常识的程序员写的。连最简单的servlet都会实
现connection pool。我老说过你很多次,没常识也要会掩饰,这样不是赤裸裸丢人吗?
https://github.com/TechEmpower/FrameworkBenchmarks/blob/master/servlet/src/
main/webapp... 阅读全帖
T********i
发帖数: 2416
44
已经很多年没用现成的db了。后台的db用啥都无所谓。
关键是中间的cache层。
cache关键是
data partition
messaging bus
系统做成基于消息的,也就没有同步异步的区别了。都是异步的了。unicast和
multicast还是有区别的。
其实网卡本身就是transaction manager。message acknowledge回来transaction就完
成了。因为信息已经写到另外一台机器去了。不要问我两台机器都死掉怎么办?世界末
日了你是不是还关心tech support? 实在不放心就用multicast好了。
我只关心message encoding / decoding schema就好了。
折腾来折腾去,就是把信息搬过来搬过去,五马倒六羊地穷折腾。中间没有产生任何有
用的新信息。做这东西,很难产生成就感。
g*****g
发帖数: 34805
45
来自主题: Programming版 - 好虫,看看你的东东有没有问题?
先说说你的所谓难点。说之前我先澄清一个概念。大部分互联网购物网站,是用户下单
,商品计数更新,连到银行收钱,返回成功这个整个做成一个transaction的。不相信
的可以试试无效的信用卡号,大部分网站不是跟你说下单成功,然后回头发邮件说钱刷
不出来,而是当场就返回错误跟你说支付失败让你改。这种做法可以获得最好的体验。
但对数据库压力比较大,这是我所谓的在线订单。而异步验证的,下单不能当场给你确
定结果的,是所谓的离线订单。

关于分库我提到了几点,一个是按线路分,线路本身就是单向的,来回有车次之分一个
是单数一个是偶数,另一个是按始发日期分。对于不同线路不同日期,从service
layer到数据库,都是完全分离的。互相之间没有瓶颈。而搜索是前端发起的请求,比
如你要查询北京到上海的所有线路,这些都是可以静态索引好的。加上是离线订单,交
易并不需要跨越数据库来做。如何做我后面会讲到,但很明显我的架构完全满足任何两
点任何方向的需求。
这个是关键,但关键不是像你放在一个数据库里。而是读写分离加分库。经过我上面的
分库,一个库其实就只有一个线路一天几千个座位,一条线路算20个段,撑死10... 阅读全帖
T********i
发帖数: 2416
46
来自主题: Programming版 - 本着负责的态度最后说几句
1。我开头就说了假设,全国一盘棋,任何两个节点都有依赖性。而且班次间也有依赖
性。这种情况下,号称分布式的性能比单机好,那是基本功有问题。
2。我说单机是强调数据紧耦合系统。紧接着我就强调单机不是纯粹单机。有hot
standby。而且能够同步复制。即使如此,性能也远超分布式的设计。本地可靠性有保
障。
3。你可以cache我的设计为什么不可以?你可以远程复制我的设计为什么不可以?但是
远程复制是有代价的。同步复制不可行。异步复制照样可能丢信息。即让马儿跑,又让
马儿不吃草,可能吗?就java那个机制,我的实现远程复制也能甩你几条街。现在我就
是从纽约异步复制到芝加哥的。
4。说我的设计超出容量会崩溃也是没常识。实时系统可以精确控制流量。到上限有些
客户被拒绝服务而已。别忘了,我在第一条说了。假定数据紧耦合,单机效率最高。容
量上限也比他的成数量级的高。对于这种问题,这就是技术极限。而且这个上限事实上
已经远远超出外围系统能消费的水平。
5。不否认这些年有很多优秀的framework。能做出很多优秀的系统。我一开始就说了,
对于春运这个特定的问题。我的核心要怎么做。春运系统我没有做各位... 阅读全帖
T********i
发帖数: 2416
47
goodbug和zhaoce都是输不起的。而且辩论的品格非常不好。本来不打算回应就算了。
之所以回应就是因为害怕谬种流传。很多不明真相的网友把谬误当作真理。当然也包括
这两位。
goodbug号称用cassandra方案解决我提出的春运售票问题。在我提出我的方案
performance的throughput比他的高1-2个数量级的情况下。他认为他的方案可靠性比我
的好。理由是能够同步写log到磁盘。在我提出用磁盘(磁盘是机械式的,SSD不是磁盘
,是基于半导体的)同步写每秒不到千的情况下,他给我一个链接和一张图。号称【
quote】写一个结点能到1000,写100个就可以接近10万。【quote】
我只能这种人的基本功连做一个普通程序员都不见得够格。如何能有人追捧他?看来公
共论坛水的嗓门大貌似水有理。
简单说一下:
1. 操作系统下普通的文件写操作一般是写到缓冲区,然后由OS schedule磁盘的写操作
。要强制flush缓冲区需要特殊API fsync。这个过程很费时,而且是blocking的。因为
普通磁盘的寻道时间都在5ms以上。IOPS(IO per second)不会很高... 阅读全帖
T********i
发帖数: 2416
48
再打你一次脸。
第一,Fusion I/O 9 million IOPS没压力。
第二,根本不需要同步写盘。多台单机跨DC串联,要都死掉才会失去consistency。况
且这种情况下依靠前端和后端rec仍然能够重建consistency。
第三,你的那个1000台的setup也是异步写盘。你这种人同步异步都搞不明白的,还好
意思谈论storage I/O。
放到这里给大家看看。

IO
首页 上页 1 2 3 4 5 6 7 8 9 10 下页 末页 (共10页)