2012-09-22 19:14 "@banq"的内容
中国的计算机太注重科学计算和理论研究,看到微博上那么多教授学者讨论火车售票,简直成了学术秀,其实如果多关注国际应用前沿,这实际已经有成功案例。

总是新闻上看到什么超亿计算机面列全世界第一第三报道,但是全世界人口第一的中国人却还面临网络 ...

确实是这样,哈哈!

这个架构与服务总线放在应用服务层是不错的选择,业务基本没有更改,只要在业务功能上做分布式的功能分割。
[该贴被clonalman于2012-09-22 19:32修改过]

不知道现在的售票系统的瓶颈在哪,不好说什么,LMAX是不错,但也可以用其他方式。是不是应该就事论事?没必要抬高到中国这个层次上:)。

2012-09-22 10:13 "@banq"的内容
如果这么严格追求安全性,可以参考LMAX架构,它们也是使用Disruptor达到一台服务器每秒处理500万个订单的吞吐量,它们采取Event Store在事件发生时立即存储,两台服务器互为failover。 ...

多谢指点~

12360 后台技术框架及表结构公开

12360果真用传统JavaEE的SSH架构做的,实际还是依赖Oracle数据库,下一步提升性能主攻方向有两个:数据库和Java中间层。如果选择数据库,花大笔钞票请Oralce咨询顾问;如果选后者,LMAX架构应该是不二选择。
[该贴被banq于2012-09-27 15:47修改过]

2012-09-27 15:46 "@banq"的内容
12360 后台技术框架及表结构公开 ...

哈哈,我以为真公开了,标题党是也,只是一个异常而已。

12360业务太变态,要么没有什么人使用,要么几亿人同时使用。

LMAX不是灵丹妙药,如果LMAX能解决问题,也应该能通过增加硬件设备来解决。LMAX架构是给“穷人”用的,12360财大气粗不需要用LMAX架构。

2012-09-27 18:21 "@clonalman"的内容
LMAX架构是给“穷人”用的,12360财大气粗不需要用LMAX架构。 ...

老兄,我觉得有失偏颇,LMAX只是其核心部分,好像原理很简单,但是搭建起来成本也很昂贵,如果结合整个一个系统,对程序员素质要求很高,特别是异步编程和事件驱动,举一个典型的架构演进案例,以Evolution of SoundCloud’s Architecture为例子,从最初的加一个HAProxy负载平衡器到异步+Cache架构,这种演进逐步变革的成本是不小的哦:

异步编程+事件驱动+Cache架构, 其broker是使用RabbitMQ:

以上架构虽然是非java的开放源码体系,但架构目标和Java是一致的,说明现在缓存+异步编程非常火。

祝大家中秋国庆快乐,玩个开心。
[该贴被banq于2012-09-29 16:32修改过]

2012-09-19 07:13 "@banq"的内容
解道是使用基于Jdonframework的JiveJdon开发的。其中使用到的性能加速技术有:

1.Disruptor并发加载技术,浏览一个帖子时,有很多数据表需要加载,jivejdon只加载主要值对象MessageVO相关的数据表,其他 ...


这。。。板哥你忽悠呢吧,这种系统速度瓶颈主要在于网络传输,所以关键是取决于服务器硬件的位置和质量,网通用户访问电信网站,再优化用处也不大。。。。

2012-09-29 14:14 "@banq"的内容

搭建起来成本也很昂贵,如果结合整个一个系统,对程序员素质要求很高,特别是异步编程和事件驱动

仅仅指硬件而已,在有限的硬件资源条件下,最大限度利用。
大数据量条件下,优化优先级:数据库优化>业务优化>架构优化

而基于Jdonframework+disruptor的即用即加载是跨请求的,也就是说,只有当第一次输出JSP页面时,需要访问模型对象的getXXX方法时,才会从数据库中加载。

--------
请问这个即用即加载是如何实现的?JSP页面都已经输出了,怎么还能调用getXXX方法呢?

2013-01-04 22:03 "@tomjinhua
"的内容
请问这个即用即加载是如何实现的?JSP页面都已经输出了,怎么还能调用getXXX方法呢? ...

这其实是一种懒赋值,函数式语言中的一个概念。
Lazy_evaluation

当调用getXXX方法时,才真正实现到数据库加载数据。

相关主题:
JdonFramework-6.6.2发布

解道网站使用新版本JF 6.6.2以后,今天用测速软件测试一下结果:
经过@360网站安全检测,我的网站 http://www.jdon.com 响应时间为:0.217 秒,打败了全国 75% 的网站,你也来试试吧,地址: http://webscan.360.cn/tools/http


http://webscan.360.cn/tools/http
网站测速
http://www.json.com
您的网站响应时间为:0.049 秒,打败了全国 95% 的网站

有一个疑问,LMAX架构中,input disruptor中有一个负责记录event的journal线程,而bussiness logic processor是必须在记录完日志后才能消费该event。所以瓶颈在记录日志上,难道journal能在单线程内达到每秒写600W条日志?

2013-05-13 18:01 "@tangxuehua
"的内容
nput disruptor中有一个负责记录event的journal线程,而bussiness logic processor是必须在记录完日志后才能消费该event ...

注意,BLP不是记录完所有日志,而是一个事件记录即可,append一个记录很快的。

不过每秒处理几百万的线程机制也不是神话:
服务器后端性能大比拼

恩,谢谢banq提供的资料。

顺在再问个问题哦,就是既然LMAX架构有一个input events的队列,且队列出口处有一个Journal的线程在消费每个input event。journal的功能是把input event记录到日志文件;

这个journal应该只是简单的记录日志而已,不会做任何主键冲突等判断。因为我从martin的文章中的一个关于处理订单的例子得知,以下是原文:
In the LMAX architecture, you would split this operation into two. The first operation would capture the order information and finish by outputting an event (credit card validation requested) to the credit card company. The Business Logic Processor would then carry on processing events for other customers until it received a credit-card-validated event in its input event stream. On processing that event it would carry out the confirmation tasks for that order.

可见,这个例子中进入Input events队列的会有:
credit card validation requested
credit-card-validated
这两个事件,那这两个事件真的都要记录到事件日志吗?

我对传统event sourcing的理解是:只有由聚合根产生的domain event才需要被记录到eventstore,因为只有对这些事件的重放才有价值,只有这些事件才是真正用来还原聚合根的。

但是像martin的例子,上面这两个事件是谁产生的呢?难道lmax架构真的会通过重演类似上面的事件来重新得到整个domain in memory?