总是新闻上看到什么超亿计算机面列全世界第一第三报道,但是全世界人口第一的中国人却还面临网络 ...
确实是这样,哈哈!
这个架构与服务总线放在应用服务层是不错的选择,业务基本没有更改,只要在业务功能上做分布式的功能分割。
[该贴被clonalman于2012-09-22 19:32修改过]
总是新闻上看到什么超亿计算机面列全世界第一第三报道,但是全世界人口第一的中国人却还面临网络 ...
确实是这样,哈哈!
这个架构与服务总线放在应用服务层是不错的选择,业务基本没有更改,只要在业务功能上做分布式的功能分割。
[该贴被clonalman于2012-09-22 19:32修改过]
不知道现在的售票系统的瓶颈在哪,不好说什么,LMAX是不错,但也可以用其他方式。是不是应该就事论事?没必要抬高到中国这个层次上:)。
多谢指点~
12360果真用传统JavaEE的SSH架构做的,实际还是依赖Oracle数据库,下一步提升性能主攻方向有两个:数据库和Java中间层。如果选择数据库,花大笔钞票请Oralce咨询顾问;如果选后者,LMAX架构应该是不二选择。
[该贴被banq于2012-09-27 15:47修改过]
哈哈,我以为真公开了,标题党是也,只是一个异常而已。
12360业务太变态,要么没有什么人使用,要么几亿人同时使用。
LMAX不是灵丹妙药,如果LMAX能解决问题,也应该能通过增加硬件设备来解决。LMAX架构是给“穷人”用的,12360财大气粗不需要用LMAX架构。
老兄,我觉得有失偏颇,LMAX只是其核心部分,好像原理很简单,但是搭建起来成本也很昂贵,如果结合整个一个系统,对程序员素质要求很高,特别是异步编程和事件驱动,举一个典型的架构演进案例,以Evolution of SoundCloud’s Architecture为例子,从最初的加一个HAProxy负载平衡器到异步+Cache架构,这种演进逐步变革的成本是不小的哦:
异步编程+事件驱动+Cache架构, 其broker是使用RabbitMQ:
以上架构虽然是非java的开放源码体系,但架构目标和Java是一致的,说明现在缓存+异步编程非常火。
祝大家中秋国庆快乐,玩个开心。
[该贴被banq于2012-09-29 16:32修改过]
1.Disruptor并发加载技术,浏览一个帖子时,有很多数据表需要加载,jivejdon只加载主要值对象MessageVO相关的数据表,其他 ...
而基于Jdonframework+disruptor的即用即加载是跨请求的,也就是说,只有当第一次输出JSP页面时,需要访问模型对象的getXXX方法时,才会从数据库中加载。
--------
请问这个即用即加载是如何实现的?JSP页面都已经输出了,怎么还能调用getXXX方法呢?
这其实是一种懒赋值,函数式语言中的一个概念。
Lazy_evaluation
当调用getXXX方法时,才真正实现到数据库加载数据。
解道网站使用新版本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条日志?
注意,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?