p*****2 发帖数: 21240 | |
w********m 发帖数: 1137 | |
m******t 发帖数: 635 | 3 大牛没看这篇blog吧,这家伙写散文的? Javascript 不弄OOP的话,还弄什么,不如直
接上FP -> ClojureScript了
【在 p*****2 的大作中提到】 : http://www.richardrodger.com/monolithic-nodejs#.UqCfGWRDtqk
|
r***y 发帖数: 4379 | 4 作者脑子好凌乱啊...
blah blah的把要点都啰嗦没了
就第一段 "The quick criticism is that you need 10X engineers." 这一条就把自
己的论点推到反人类, 反工程的死胡同了. 后面说的都懒得细看了.
【在 p*****2 的大作中提到】 : http://www.richardrodger.com/monolithic-nodejs#.UqCfGWRDtqk
|
m******t 发帖数: 635 | 5 这家伙的开发工具是powerpoint,:)
【在 r***y 的大作中提到】 : 作者脑子好凌乱啊... : blah blah的把要点都啰嗦没了 : 就第一段 "The quick criticism is that you need 10X engineers." 这一条就把自 : 己的论点推到反人类, 反工程的死胡同了. 后面说的都懒得细看了.
|
P********l 发帖数: 452 | 6 不能偏听偏信.这篇文章说nodejs的缺点挺到位的.优点有点过了.
一个node(单线程)能支持上千个连接.也就是说上千个用户的数据(session)都挤在
一起里.一个用户出了问题,几千个用户都得down.
js这种语言也有问题.这里的假设就是每个人都很小心,都是大拿,这有点不太现实.
最简单的一个例子,假如有人这么做 Array.prototype.coolFun = function(){}
下面的loop可能够呛 for(var i in arr){ /*some naive code*/}
很难trouble shooting.
做大系统,nodejs还是有问题.better than Java? no comment.
【在 p*****2 的大作中提到】 : http://www.richardrodger.com/monolithic-nodejs#.UqCfGWRDtqk
|
r***y 发帖数: 4379 | 7 呵呵, 更狠的是北京二爷
这么阳春白雪的巨长blog, 自己懒得看, 帖上来让大家帮他读, 他看反馈...LOL
【在 m******t 的大作中提到】 : 这家伙的开发工具是powerpoint,:)
|
p*****2 发帖数: 21240 | 8 看来大家都没有看懂。这篇文章写的很有水平,值得仔细研读。
如果我没有理解错误的话,这个作者是要在node上做一个AKKA出来。
今天好好看看,再来汇报情况。 |
p*****2 发帖数: 21240 | 9
没有。java的生态系统不可替代呀
【在 w********m 的大作中提到】 : 二爷要full stack JS了?
|
p*****2 发帖数: 21240 | 10
JS为什么要搞OO呢?
【在 m******t 的大作中提到】 : 大牛没看这篇blog吧,这家伙写散文的? Javascript 不弄OOP的话,还弄什么,不如直 : 接上FP -> ClojureScript了
|
|
|
N*****m 发帖数: 42603 | |
g*****g 发帖数: 34805 | 12 If we want to talk about large scale system now, the No.1 rule is SOA, as
opposed to Monolithic system. Most well known internet service are in SOA,
and many of them in Java. This is not to say Node can't do SOA, but I haven'
t seen how JS is better than Java in SOA when the majority of services would
be in "backend". IMHO, static languages are better
than dynamic ones for this purpose in the first place. Regarding dependency
hell,
Maven has been there for a decade. It doesn't solve every problem, but at
least almost every problem has been seen. It's commonplace nowadays a Java
service runs on top of hundreds of 3rd party dependencies. I don't think JS
has reached that level of sophistication yet. |
P********l 发帖数: 452 | 13 好吧,这篇的作者应该有点货.http://www.linkedin.com/in/richardrodger
大牛给总结总结.
【在 p*****2 的大作中提到】 : 看来大家都没有看懂。这篇文章写的很有水平,值得仔细研读。 : 如果我没有理解错误的话,这个作者是要在node上做一个AKKA出来。 : 今天好好看看,再来汇报情况。
|
m******t 发帖数: 635 | 14 js的prototype-based programming似乎难用,要不coffeescript也不会给伪装一个。
JS号称也可以算fp, 不过感觉除了有first-class function这点外,其他的FP的主要特
点都缺:
immutability (JS code里mutable state漫天飞)
laziness (好像没听说JS有)
seq (clojure/F# 里都有,JS不知道,估计得第三方)
tail-call optimization (好像也没听说)
所以我觉得JS基本上是个伪FP, 当然OO也不方便
【在 p*****2 的大作中提到】 : : JS为什么要搞OO呢?
|
m******t 发帖数: 635 | 15 恩,他的主要观点就是鼓吹一个小规模的SOA架构。
不过他这句话恶心到我了:
Let’s apply this to our software systems. Instead of building a monolithic
100 000 line codebase, build 100 small services, each 1000 lines long. Fred
George, (the inventor of programmer anarchy) one of the biggest proponents
of this approach, calls these small programs micro-services.
难道JS弱到连1000行都是大程序?
haven'
would
dependency
JS
【在 g*****g 的大作中提到】 : If we want to talk about large scale system now, the No.1 rule is SOA, as : opposed to Monolithic system. Most well known internet service are in SOA, : and many of them in Java. This is not to say Node can't do SOA, but I haven' : t seen how JS is better than Java in SOA when the majority of services would : be in "backend". IMHO, static languages are better : than dynamic ones for this purpose in the first place. Regarding dependency : hell, : Maven has been there for a decade. It doesn't solve every problem, but at : least almost every problem has been seen. It's commonplace nowadays a Java : service runs on top of hundreds of 3rd party dependencies. I don't think JS
|
p*****2 发帖数: 21240 | 16
monolithic
Fred
大牛有没有看过一个actor的code会有多少?
【在 m******t 的大作中提到】 : 恩,他的主要观点就是鼓吹一个小规模的SOA架构。 : 不过他这句话恶心到我了: : Let’s apply this to our software systems. Instead of building a monolithic : 100 000 line codebase, build 100 small services, each 1000 lines long. Fred : George, (the inventor of programmer anarchy) one of the biggest proponents : of this approach, calls these small programs micro-services. : 难道JS弱到连1000行都是大程序? : : haven' : would
|
p*****2 发帖数: 21240 | 17
类似AKKA
一个command是一个actor
然后实现了,event-driven, async, distributed等基本功能
还封装了logging和database
文档还不全,继续关注一下。
【在 P********l 的大作中提到】 : 好吧,这篇的作者应该有点货.http://www.linkedin.com/in/richardrodger : 大牛给总结总结.
|
N*****m 发帖数: 42603 | 18 等你写个总结了
node搞个actor系统不难,有先天优势
【在 p*****2 的大作中提到】 : : 类似AKKA : 一个command是一个actor : 然后实现了,event-driven, async, distributed等基本功能 : 还封装了logging和database : 文档还不全,继续关注一下。
|
p*****2 发帖数: 21240 | 19
immutability (JS code里mutable state漫天飞)
//immutability没有那么神奇,scala,clojure都允许mutate, 另外node是single
thread, mutation一点问题没有
laziness (好像没听说JS有)
//除了FP,其他语言都没有吧?有什么大问题吗?
seq (clojure/F# 里都有,JS不知道,估计得第三方)
//为什么一定需要这个?
tail-call optimization (好像也没听说)
//iteration不比tail-call更方便?Clojure还不是没有,只能模拟iteration了?
【在 m******t 的大作中提到】 : js的prototype-based programming似乎难用,要不coffeescript也不会给伪装一个。 : JS号称也可以算fp, 不过感觉除了有first-class function这点外,其他的FP的主要特 : 点都缺: : immutability (JS code里mutable state漫天飞) : laziness (好像没听说JS有) : seq (clojure/F# 里都有,JS不知道,估计得第三方) : tail-call optimization (好像也没听说) : 所以我觉得JS基本上是个伪FP, 当然OO也不方便
|
m******t 发帖数: 635 | 20 给展开说说吧,他这个小的100个 1000行micros-ervice实际应用里靠普不?感觉这
1000行写点东西不太够啊
【在 p*****2 的大作中提到】 : : immutability (JS code里mutable state漫天飞) : //immutability没有那么神奇,scala,clojure都允许mutate, 另外node是single : thread, mutation一点问题没有 : laziness (好像没听说JS有) : //除了FP,其他语言都没有吧?有什么大问题吗? : seq (clojure/F# 里都有,JS不知道,估计得第三方) : //为什么一定需要这个? : tail-call optimization (好像也没听说) : //iteration不比tail-call更方便?Clojure还不是没有,只能模拟iteration了?
|
|
|
m******t 发帖数: 635 | 21 我就是好奇JS什么正经的paradigm都不很好地支持,在backend 怎么写较大规模的应用
?是OO,FP, 还是类似script language那样,弄个struct 或者object-based class,
就开始写procedure了?
【在 p*****2 的大作中提到】 : : immutability (JS code里mutable state漫天飞) : //immutability没有那么神奇,scala,clojure都允许mutate, 另外node是single : thread, mutation一点问题没有 : laziness (好像没听说JS有) : //除了FP,其他语言都没有吧?有什么大问题吗? : seq (clojure/F# 里都有,JS不知道,估计得第三方) : //为什么一定需要这个? : tail-call optimization (好像也没听说) : //iteration不比tail-call更方便?Clojure还不是没有,只能模拟iteration了?
|
p*****2 发帖数: 21240 | 22
你写写AKKA的actor,或者storm的bolt就知道了。reactive programming一定要讲究快
。每个模块只干一点点事情,这样小的模块组成大的模块。中间message passing。都
是这个套路来的,更不要说node的single thread了。刚才数了一下我的bolts的行数,
基本都是20行左右。100行的标准很靠谱呀。这个文章就是讲的就是不要把模块做大。
【在 m******t 的大作中提到】 : 给展开说说吧,他这个小的100个 1000行micros-ervice实际应用里靠普不?感觉这 : 1000行写点东西不太够啊
|
P********l 发帖数: 452 | 23 他是说,与其写一个100K行的大service,不如写100个小的想对独立的1K的小service
来完成同样的功能. 问题是,这个CS101的概念,这和nodejs没有一点关系.
还记得toyota的那个大task X吗?难道他们不想把这个task X拆开吗?难道用nodejs这
个问题就解决了?
没仔细看这个作者举的那个micro service的实现的module. 我觉得不怎么样,功能太
少,限制太多.
monolithic
Fred
【在 m******t 的大作中提到】 : 恩,他的主要观点就是鼓吹一个小规模的SOA架构。 : 不过他这句话恶心到我了: : Let’s apply this to our software systems. Instead of building a monolithic : 100 000 line codebase, build 100 small services, each 1000 lines long. Fred : George, (the inventor of programmer anarchy) one of the biggest proponents : of this approach, calls these small programs micro-services. : 难道JS弱到连1000行都是大程序? : : haven' : would
|
p*****2 发帖数: 21240 | 24
这个文章不就是讲这个的吗?
【在 m******t 的大作中提到】 : 我就是好奇JS什么正经的paradigm都不很好地支持,在backend 怎么写较大规模的应用 : ?是OO,FP, 还是类似script language那样,弄个struct 或者object-based class, : 就开始写procedure了?
|
m******t 发帖数: 635 | 25 AKKA没接触过,不过storm的bolt写过,bolt里面没有什么,平均下来90-100行吧,主要
逻辑都在models目录下的代码里面。
node.js怎么处理这些企业逻辑?
【在 p*****2 的大作中提到】 : : 这个文章不就是讲这个的吗?
|
c******o 发帖数: 1277 | 26 actor 讲究的是share nothing (between actors), 这个肯定不可能解决所有问题。
share state 的还要上 STM, 或者再写逻辑在上面。
同样, actor(s)肯定不是单线程,不知道node.js怎么解决这个。
不会是把OS thread scheduling 那一套再实现一边吧。。 |
p*****2 发帖数: 21240 | 27
用java写的?
coffeescript 100行代码可以干很多东西了
【在 m******t 的大作中提到】 : AKKA没接触过,不过storm的bolt写过,bolt里面没有什么,平均下来90-100行吧,主要 : 逻辑都在models目录下的代码里面。 : node.js怎么处理这些企业逻辑?
|
p*****2 发帖数: 21240 | 28
node.js可以多进程呀。
node可以安全mutate data, 不需要STM。
【在 c******o 的大作中提到】 : actor 讲究的是share nothing (between actors), 这个肯定不可能解决所有问题。 : share state 的还要上 STM, 或者再写逻辑在上面。 : 同样, actor(s)肯定不是单线程,不知道node.js怎么解决这个。 : 不会是把OS thread scheduling 那一套再实现一边吧。。
|
m******t 发帖数: 635 | 29 恩,光各种import就30行以上用掉了,再class定义什么的,真正有用的也就30行左
右。
忘了你是coffeescript的干活,哈哈
【在 p*****2 的大作中提到】 : : node.js可以多进程呀。 : node可以安全mutate data, 不需要STM。
|
p*****2 发帖数: 21240 | 30
看了一下我这几个月搞的主程序不到200行coffeescript代码。
【在 m******t 的大作中提到】 : AKKA没接触过,不过storm的bolt写过,bolt里面没有什么,平均下来90-100行吧,主要 : 逻辑都在models目录下的代码里面。 : node.js怎么处理这些企业逻辑?
|
|
|
P********l 发帖数: 452 | 31 nodejs和akka/play在解决问题的思路上是不一样的.
akka把消息的接收/发送者实现成actor.一个actor可以发送/接受/转发很多种消息
.actor是immutable的,可以在不同的线程里或者机器里.
nodejs针对的是一系列的动作.比如,动作1完成触发动作2,动作2完成触发动作3
.这一些动作是异步的.在实现上,用的是promise那一套.
那些actor之间的消息和nodejs里的动作触发可以相比.actor里,并没有强调消息之间
有什么联系;nodejs的动作连续做完才是一件事情结束.
请各位大牛指正.
【在 c******o 的大作中提到】 : actor 讲究的是share nothing (between actors), 这个肯定不可能解决所有问题。 : share state 的还要上 STM, 或者再写逻辑在上面。 : 同样, actor(s)肯定不是单线程,不知道node.js怎么解决这个。 : 不会是把OS thread scheduling 那一套再实现一边吧。。
|
m******t 发帖数: 635 | 32 你确定没有少写一个0?:)
【在 p*****2 的大作中提到】 : : 看了一下我这几个月搞的主程序不到200行coffeescript代码。
|
o**2 发帖数: 168 | 33 如果要说在JS(不论是broswer或nodejs里)上做一个AKKA和SOA之类的framework出来
的话,我已经做出来了(只是没有强力推广,家事太多),比AKKA和SOA只强不弱。我
写的online demo都挂出来一年多了。
http://fastmessenger.com/files/javascript-ref-impl/1.5.0/demo/i |
p*****2 发帖数: 21240 | 34
你先看看这篇文章再说吧。
【在 P********l 的大作中提到】 : nodejs和akka/play在解决问题的思路上是不一样的. : akka把消息的接收/发送者实现成actor.一个actor可以发送/接受/转发很多种消息 : .actor是immutable的,可以在不同的线程里或者机器里. : nodejs针对的是一系列的动作.比如,动作1完成触发动作2,动作2完成触发动作3 : .这一些动作是异步的.在实现上,用的是promise那一套. : 那些actor之间的消息和nodejs里的动作触发可以相比.actor里,并没有强调消息之间 : 有什么联系;nodejs的动作连续做完才是一件事情结束. : 请各位大牛指正.
|
p*****2 发帖数: 21240 | 35
Java就是这个样子的,呵呵。
【在 m******t 的大作中提到】 : 恩,光各种import就30行以上用掉了,再class定义什么的,真正有用的也就30行左 : 右。 : 忘了你是coffeescript的干活,哈哈
|
p*****2 发帖数: 21240 | 36
没有。不过主程序是一个文件。还有其他文件,但是都封装了,不涉及到business
logic。
【在 m******t 的大作中提到】 : 你确定没有少写一个0?:)
|
p*****2 发帖数: 21240 | 37
有open source吗?回头看看。
【在 o**2 的大作中提到】 : 如果要说在JS(不论是broswer或nodejs里)上做一个AKKA和SOA之类的framework出来 : 的话,我已经做出来了(只是没有强力推广,家事太多),比AKKA和SOA只强不弱。我 : 写的online demo都挂出来一年多了。 : http://fastmessenger.com/files/javascript-ref-impl/1.5.0/demo/i
|
P********l 发帖数: 452 | 38 看完了,水平所限,没觉得有什么意思.
二爷来指点一下?
【在 p*****2 的大作中提到】 : : 有open source吗?回头看看。
|
o**2 发帖数: 168 | |
p*****2 发帖数: 21240 | 40
跟AKKA,Storm思路类似
event-driven, async, distributed, actor, bolt etc.
【在 P********l 的大作中提到】 : 看完了,水平所限,没觉得有什么意思. : 二爷来指点一下?
|
|
|
N*****m 发帖数: 42603 | 41 能不能用hadoop的生态系统是个大问题
现在新的framework(比如storm, stark)都尽量在底层能够用h系列的东西
【在 p*****2 的大作中提到】 : : 跟AKKA,Storm思路类似 : event-driven, async, distributed, actor, bolt etc.
|
P********l 发帖数: 452 | 42 能展开说说吗?
我没觉得nodejs有actor的概念.比如: http://nodejs.org/api/fs.html
var fs = require('fs');
fs.unlink('/tmp/hello', function (err) {
if (err) throw err;
console.log('successfully deleted /tmp/hello');
});
另外能总结一下你给的那篇文章吗? 我真没觉得有什么. 我还以为他是new grad呢.
【在 p*****2 的大作中提到】 : : 跟AKKA,Storm思路类似 : event-driven, async, distributed, actor, bolt etc.
|
z****e 发帖数: 54598 | 43 java里面大部分不想看的代码,都是ide右键点击后自动生成的
eclipse这里做了类似coffescript解释器的工作
coffeescript转译到js之后也是一堆代码
【在 p*****2 的大作中提到】 : : 跟AKKA,Storm思路类似 : event-driven, async, distributed, actor, bolt etc.
|
g*****g 发帖数: 34805 | 44 I don't know if this guy really has architected big system before.
"Let’s apply this to our software systems. Instead of building a monolithic
100 000 line codebase, build 100 small services, each 1000 lines long. Fred
George, (the inventor of programmer anarchy) one of the biggest proponents
of this approach, calls these small programs micro-services."
While I am a proponent of SOA, I wouldn't do micro-services. If your single
service has 1m latency, a call that goes through 100 services has 100ms
latency. If your single service has 99.99% of availability, your service has
99% reliability at best just by doing that alone.
I wouldn't want a service to be maintained by two teams. And if a single
engineer can reasonably fix all issues in a service, it's not too big in my
book. |
z****e 发帖数: 54598 | 45 event-driven被证明过并不适合所有的business logic
更适合一些business logic,比如保险的理赔流程
工作流就是大面积使用event driven的产物
不过对于business logic来说,最大的问题在于旧代码的复用
而不是如何简化新生代码,大部分公司的business logic的代码都不允许随便重构
那如何复用现有代码就是一个大问题
所以真正用得比较多的概念是esb,service bus这些
通过给不同系统提供统一接口以实现集成的目的
single thread完全没有必要,如果各个线程之间不需要share状态的话
我直接上个多线程也没什么问题,单线程还要去留意一下这个是单线程,这里有
tradeoff
多线程在这个时候还更直接更简单,不需要去留意这个是单线程
如果为了实现并发同步还需要去把thread包装成process的话
那为什么不一开始就多线程呢?反正不需要share状态
这也有很多框架可以直接做了,比如akka
【在 p*****2 的大作中提到】 : : 跟AKKA,Storm思路类似 : event-driven, async, distributed, actor, bolt etc.
|
p*****2 发帖数: 21240 | 46
所以我一直强调前端node后端clojure呀
【在 N*****m 的大作中提到】 : 能不能用hadoop的生态系统是个大问题 : 现在新的framework(比如storm, stark)都尽量在底层能够用h系列的东西
|
p*****2 发帖数: 21240 | 47
monolithic
Fred
single
has
micro services can be host on same machine. communication is unnessesary to
be http
【在 g*****g 的大作中提到】 : I don't know if this guy really has architected big system before. : "Let’s apply this to our software systems. Instead of building a monolithic : 100 000 line codebase, build 100 small services, each 1000 lines long. Fred : George, (the inventor of programmer anarchy) one of the biggest proponents : of this approach, calls these small programs micro-services." : While I am a proponent of SOA, I wouldn't do micro-services. If your single : service has 1m latency, a call that goes through 100 services has 100ms : latency. If your single service has 99.99% of availability, your service has : 99% reliability at best just by doing that alone. : I wouldn't want a service to be maintained by two teams. And if a single
|
p*****2 发帖数: 21240 | 48
难道async和多线程还需要再解释?
【在 z****e 的大作中提到】 : event-driven被证明过并不适合所有的business logic : 更适合一些business logic,比如保险的理赔流程 : 工作流就是大面积使用event driven的产物 : 不过对于business logic来说,最大的问题在于旧代码的复用 : 而不是如何简化新生代码,大部分公司的business logic的代码都不允许随便重构 : 那如何复用现有代码就是一个大问题 : 所以真正用得比较多的概念是esb,service bus这些 : 通过给不同系统提供统一接口以实现集成的目的 : single thread完全没有必要,如果各个线程之间不需要share状态的话 : 我直接上个多线程也没什么问题,单线程还要去留意一下这个是单线程,这里有
|
p*****2 发帖数: 21240 | 49
你怎么总提node不提seneca呢?
【在 P********l 的大作中提到】 : 能展开说说吗? : 我没觉得nodejs有actor的概念.比如: http://nodejs.org/api/fs.html : var fs = require('fs'); : fs.unlink('/tmp/hello', function (err) { : if (err) throw err; : console.log('successfully deleted /tmp/hello'); : }); : 另外能总结一下你给的那篇文章吗? 我真没觉得有什么. 我还以为他是new grad呢.
|
z****e 发帖数: 54598 | 50 都是框架
用臭臭的话说就是
都是死套框架
【在 m******t 的大作中提到】 : AKKA没接触过,不过storm的bolt写过,bolt里面没有什么,平均下来90-100行吧,主要 : 逻辑都在models目录下的代码里面。 : node.js怎么处理这些企业逻辑?
|
|
|
z****e 发帖数: 54598 | 51 难道单线程的trade off还需要再解释?
【在 p*****2 的大作中提到】 : : 你怎么总提node不提seneca呢?
|
z****e 发帖数: 54598 | 52 然后手动启动100次这些service?
虽然我也主张模块化,但是过于细致划分本身也有问题
如果说把这10,000行代码切割成1000个10行的代码
然后每一个包装成一个service的时候,那就彻底崩溃了
凡事过犹不及,不要纠结于代码行数
针对功能做封装,组件化,然后拼凑组件变成一个大的service
也就是先狭义的soa,然后再广义的soa,最后暴露广义的soa
代码行数如果没有超过一定数量,就不用管了
当然超过500行这种还是要介入,要重构
500行肯定可以细分下去
to
【在 p*****2 的大作中提到】 : : 你怎么总提node不提seneca呢?
|
z****e 发帖数: 54598 | 53 做到了soa之后,就没有必要纠结于框架的使用了
随便一个语言都可以实现soa
比如这1000行代码,用什么写都可以
只要最终包装成一个service
剩下的,自由选择
然后就是service自身的管理,会变成一个主要问题
其实这100个small service就需要做一个service manager一样的东西了
这个时候再通过层次来管理
殊途同归,这个东西在web service 1的时代有一个专门的东西,叫做uddi
hoho
monolithic
Fred
【在 m******t 的大作中提到】 : 恩,他的主要观点就是鼓吹一个小规模的SOA架构。 : 不过他这句话恶心到我了: : Let’s apply this to our software systems. Instead of building a monolithic : 100 000 line codebase, build 100 small services, each 1000 lines long. Fred : George, (the inventor of programmer anarchy) one of the biggest proponents : of this approach, calls these small programs micro-services. : 难道JS弱到连1000行都是大程序? : : haven' : would
|
P********l 发帖数: 452 | 54 实现seneca挺容易的. 用好反而不容易.
1. 如果这样的command pattern太多怎么办? 这玩意没办法优化,你只好一个一个去比.
这里的performance会有问题.
2. 居然没有提到优先级(冲突). 真的有人在用seneca吗?
3. 语法(如果有的话)比较拙劣. 如果我想要一个"或"怎么办?
我还惦记着呢你的总结呢. 记着给.
【在 p*****2 的大作中提到】 : : 你怎么总提node不提seneca呢?
|
z****e 发帖数: 54598 | 55 soa之后,其实什么语言都不重要了
现在随便一个语言都可以做web service
web service标准越来越成熟,以后会有越来越多这种框架产生
实际上ejb什么做ws已经很简单了,一个annotation就搞定了
异步也就是一个annotation就搞定的事
这两个其实压根就是跟框架语言本身无关
什么语言都可以做到,就那么一回事,找自己顺手的上
然后真正重要的是你怎么管理这些service
service如果不集中管理,那么网状结构会变得很难以维护
一般大了之后,会有一个集中管理的地方
这就是当初web service诞生时候的uddi和wsdl
就是太过于超前,以至于群众不接受,后来失败了
不过不管怎样,你还是需要这么一个东西
要不然service一多,都不知道去哪里找
还有一个方面是监控,比如某一个service挂了,你要重启这个service
还有你要看看这个serivce用了多少资源啊之类的
java可以用jmx来做,跟os相关的我会用python来做
ejb容器要看容器本身提供什么接口
还有很多cloud上的系统,都是ruby写的
比如digitalocean和rhcloud
所以条条大路通罗马
【在 m******t 的大作中提到】 : 我就是好奇JS什么正经的paradigm都不很好地支持,在backend 怎么写较大规模的应用 : ?是OO,FP, 还是类似script language那样,弄个struct 或者object-based class, : 就开始写procedure了?
|
l*********s 发帖数: 5409 | 56 da niu well said!
【在 p*****2 的大作中提到】 : : 你怎么总提node不提seneca呢?
|
g*****g 发帖数: 34805 | 57 Then what's the point of having these micro services at the first place? Can
't you just compose a few of them as a normal service?
to
【在 p*****2 的大作中提到】 : : 你怎么总提node不提seneca呢?
|
l*********s 发帖数: 5409 | 58 the difference is that you don't need to read js output; but is there a way
in eclipse to hide those boilerplates?
【在 z****e 的大作中提到】 : java里面大部分不想看的代码,都是ide右键点击后自动生成的 : eclipse这里做了类似coffescript解释器的工作 : coffeescript转译到js之后也是一堆代码
|
l*********s 发帖数: 5409 | 59 1) it is slow because you are not only using async call.
2) how is single monolithic service any better? Not matter what you do, you
are not going to change the expected reliability, but with more micro
service, you reduce the risk of variability. That is the statistics 101.
monolithic
Fred
single
has
【在 g*****g 的大作中提到】 : I don't know if this guy really has architected big system before. : "Let’s apply this to our software systems. Instead of building a monolithic : 100 000 line codebase, build 100 small services, each 1000 lines long. Fred : George, (the inventor of programmer anarchy) one of the biggest proponents : of this approach, calls these small programs micro-services." : While I am a proponent of SOA, I wouldn't do micro-services. If your single : service has 1m latency, a call that goes through 100 services has 100ms : latency. If your single service has 99.99% of availability, your service has : 99% reliability at best just by doing that alone. : I wouldn't want a service to be maintained by two teams. And if a single
|
g*****g 发帖数: 34805 | 60 1. It's a realistic question, not everything can be ran in parallel, and
when that's the case, async can only improve your system throughput, not how
quickly a single call can finish. Network latency is for real when you get
through hundreds of services. And for UI, 10ms and 100ms latency can be
easily told.
2. Single monolithic is worse. But you don't have to take it to another
extreme. In most cases, 1000 LOC is an API, not a service. 10K-50K is the
level I prefer, because a single engineer can have all knowledge of
everything in this service without an issue, what do you gain by splitting
it further? Or is this a form for NodeJs to do multithreading?
you
【在 l*********s 的大作中提到】 : 1) it is slow because you are not only using async call. : 2) how is single monolithic service any better? Not matter what you do, you : are not going to change the expected reliability, but with more micro : service, you reduce the risk of variability. That is the statistics 101. : : monolithic : Fred : single : has
|
|
|
z****e 发帖数: 54598 | 61 import放在上面,一个滚轮就下来了,你没事去纠结这个?是不是平常都太闲了?
way
【在 l*********s 的大作中提到】 : the difference is that you don't need to read js output; but is there a way : in eclipse to hide those boilerplates?
|
l*********s 发帖数: 5409 | 62 rolling back and forth interrupts the thinking process and reduce
productivity greatly.
【在 z****e 的大作中提到】 : import放在上面,一个滚轮就下来了,你没事去纠结这个?是不是平常都太闲了? : : way
|
z****e 发帖数: 54598 | 63 你知道现在有个东西叫做dsl么?
【在 l*********s 的大作中提到】 : rolling back and forth interrupts the thinking process and reduce : productivity greatly.
|
l*********s 发帖数: 5409 | 64 is java dsl?
【在 z****e 的大作中提到】 : 你知道现在有个东西叫做dsl么?
|
z****e 发帖数: 54598 | 65 任何一个语言都有
完全不需要去看别人定义的恶心的语法
你爱怎么玩就怎么玩,无非一堆字节流
coffeescript本身就是一个很好的榜样
【在 l*********s 的大作中提到】 : is java dsl?
|
p*****2 发帖数: 21240 | 66
Can
没问题吧?storm都支持rpc。
【在 g*****g 的大作中提到】 : Then what's the point of having these micro services at the first place? Can : 't you just compose a few of them as a normal service? : : to
|
p*****2 发帖数: 21240 | 67
比.
如果actor太多怎么办?如果bolt太多怎么办?
或还不容易?做一个command不就行了?
优先级冲突什么意思?
这东西我就是看看思路呀。用不用到不一定。看情况吧。
【在 P********l 的大作中提到】 : 实现seneca挺容易的. 用好反而不容易. : 1. 如果这样的command pattern太多怎么办? 这玩意没办法优化,你只好一个一个去比. : 这里的performance会有问题. : 2. 居然没有提到优先级(冲突). 真的有人在用seneca吗? : 3. 语法(如果有的话)比较拙劣. 如果我想要一个"或"怎么办? : 我还惦记着呢你的总结呢. 记着给.
|
p*****2 发帖数: 21240 | 68
手启动肯定不行吧?应该每个command都有HA setup才对
【在 z****e 的大作中提到】 : 然后手动启动100次这些service? : 虽然我也主张模块化,但是过于细致划分本身也有问题 : 如果说把这10,000行代码切割成1000个10行的代码 : 然后每一个包装成一个service的时候,那就彻底崩溃了 : 凡事过犹不及,不要纠结于代码行数 : 针对功能做封装,组件化,然后拼凑组件变成一个大的service : 也就是先狭义的soa,然后再广义的soa,最后暴露广义的soa : 代码行数如果没有超过一定数量,就不用管了 : 当然超过500行这种还是要介入,要重构 : 500行肯定可以细分下去
|
p*****2 发帖数: 21240 | 69
how
get
你是在攻击AKKA?
【在 g*****g 的大作中提到】 : 1. It's a realistic question, not everything can be ran in parallel, and : when that's the case, async can only improve your system throughput, not how : quickly a single call can finish. Network latency is for real when you get : through hundreds of services. And for UI, 10ms and 100ms latency can be : easily told. : 2. Single monolithic is worse. But you don't have to take it to another : extreme. In most cases, 1000 LOC is an API, not a service. 10K-50K is the : level I prefer, because a single engineer can have all knowledge of : everything in this service without an issue, what do you gain by splitting : it further? Or is this a form for NodeJs to do multithreading?
|
z****e 发帖数: 54598 | 70 所以我现在觉得还是自己用spring裸写就好了
不用这些乱七八糟的框架其实也没什么
把线程管理和组件管理分离
加一点容错功能,我自己写的效率还不输给他们搞的
真的,用框架最不好一点就是经常什么都塞给你
也不管你要不要
【在 p*****2 的大作中提到】 : : how : get : 你是在攻击AKKA?
|
|
|
p*****2 发帖数: 21240 | 71
框架主要是快,肯定不一定比自己写的好。但是自己写太花时间了。一般来说框架还是
考虑了大部分情况。
【在 z****e 的大作中提到】 : 所以我现在觉得还是自己用spring裸写就好了 : 不用这些乱七八糟的框架其实也没什么 : 把线程管理和组件管理分离 : 加一点容错功能,我自己写的效率还不输给他们搞的 : 真的,用框架最不好一点就是经常什么都塞给你 : 也不管你要不要
|
z****e 发帖数: 54598 | 72 但是简单到storm这种程度的
我自己写也用不了多少时间
以前用web server主要是html页面的生成
还有http head的生成和解析比较烦
没有了这些需求,其它的其实也就是几个api的事
【在 p*****2 的大作中提到】 : : 框架主要是快,肯定不一定比自己写的好。但是自己写太花时间了。一般来说框架还是 : 考虑了大部分情况。
|
l*********s 发帖数: 5409 | 73 Talking is cheap.
【在 z****e 的大作中提到】 : 但是简单到storm这种程度的 : 我自己写也用不了多少时间 : 以前用web server主要是html页面的生成 : 还有http head的生成和解析比较烦 : 没有了这些需求,其它的其实也就是几个api的事
|
P********l 发帖数: 452 | 74
我没说有actor. 这里也没有actor.
command 1: { /* a lot of data */ option: "rain" }
command 2: { /* a lot of data */ option: "snow" }
command 2: { /* a lot of data */ option: "clear" }
现在我想表示 "rain" or "snow", 咋整?
command 1: {role: "manager"}
command 1: {role: "manager", age: 50}
act {role: "manager", age: 50}
这个act和哪个command匹配? 是先遇到匹配呢还是most specific匹配? 更复杂的情况
我还没说呢.
【在 p*****2 的大作中提到】 : : 框架主要是快,肯定不一定比自己写的好。但是自己写太花时间了。一般来说框架还是 : 考虑了大部分情况。
|
p*****2 发帖数: 21240 | 75
我说了这个思路跟actor的思路类似,就是event-driven, async, distributed. 当然
不是完成actor所有的,只是这些部分。但是你问的问题你也可以去问actor去。
【在 P********l 的大作中提到】 : : 我没说有actor. 这里也没有actor. : command 1: { /* a lot of data */ option: "rain" } : command 2: { /* a lot of data */ option: "snow" } : command 2: { /* a lot of data */ option: "clear" } : 现在我想表示 "rain" or "snow", 咋整? : command 1: {role: "manager"} : command 1: {role: "manager", age: 50} : act {role: "manager", age: 50} : 这个act和哪个command匹配? 是先遇到匹配呢还是most specific匹配? 更复杂的情况
|
p*****2 发帖数: 21240 | 76
command 1: {role: "manager"}
command 1: {role: "manager", age: 50}
act {role: "manager", age: 50}
我觉得这个不是啥问题吧?
【在 P********l 的大作中提到】 : : 我没说有actor. 这里也没有actor. : command 1: { /* a lot of data */ option: "rain" } : command 2: { /* a lot of data */ option: "snow" } : command 2: { /* a lot of data */ option: "clear" } : 现在我想表示 "rain" or "snow", 咋整? : command 1: {role: "manager"} : command 1: {role: "manager", age: 50} : act {role: "manager", age: 50} : 这个act和哪个command匹配? 是先遇到匹配呢还是most specific匹配? 更复杂的情况
|
p*****2 发帖数: 21240 | 77
command 1: { /* a lot of data */ option: "rain" }
command 2: { /* a lot of data */ option: "snow" }
command 2: { /* a lot of data */ option: "clear" }
现在我想表示 "rain" or "snow", 咋整?
难道这些不是akka和storm早就解决的了吗?
【在 P********l 的大作中提到】 : : 我没说有actor. 这里也没有actor. : command 1: { /* a lot of data */ option: "rain" } : command 2: { /* a lot of data */ option: "snow" } : command 2: { /* a lot of data */ option: "clear" } : 现在我想表示 "rain" or "snow", 咋整? : command 1: {role: "manager"} : command 1: {role: "manager", age: 50} : act {role: "manager", age: 50} : 这个act和哪个command匹配? 是先遇到匹配呢还是most specific匹配? 更复杂的情况
|
P********l 发帖数: 452 | 78
不会吧. 每个actor都可以有自己的状态. 这里的command行吗? 人家说了,这叫micro
service.
【在 p*****2 的大作中提到】 : : command 1: { /* a lot of data */ option: "rain" } : command 2: { /* a lot of data */ option: "snow" } : command 2: { /* a lot of data */ option: "clear" } : 现在我想表示 "rain" or "snow", 咋整? : 难道这些不是akka和storm早就解决的了吗?
|
P********l 发帖数: 452 | 79 然!
【在 z****e 的大作中提到】 : event-driven被证明过并不适合所有的business logic : 更适合一些business logic,比如保险的理赔流程 : 工作流就是大面积使用event driven的产物 : 不过对于business logic来说,最大的问题在于旧代码的复用 : 而不是如何简化新生代码,大部分公司的business logic的代码都不允许随便重构 : 那如何复用现有代码就是一个大问题 : 所以真正用得比较多的概念是esb,service bus这些 : 通过给不同系统提供统一接口以实现集成的目的 : single thread完全没有必要,如果各个线程之间不需要share状态的话 : 我直接上个多线程也没什么问题,单线程还要去留意一下这个是单线程,这里有
|
P********l 发帖数: 452 | 80
我觉得有点穿越了. 你不是问那个micro service module的问题吗? 和akka没关系吧.
【在 p*****2 的大作中提到】 : : command 1: { /* a lot of data */ option: "rain" } : command 2: { /* a lot of data */ option: "snow" } : command 2: { /* a lot of data */ option: "clear" } : 现在我想表示 "rain" or "snow", 咋整? : 难道这些不是akka和storm早就解决的了吗?
|
|
|
p*****2 发帖数: 21240 | 81
为什么不行?
【在 P********l 的大作中提到】 : : 我觉得有点穿越了. 你不是问那个micro service module的问题吗? 和akka没关系吧.
|
p*****2 发帖数: 21240 | 82
.
我不是说跟akka类似吗?我没用过micro,所以不能肯定的回答。
【在 P********l 的大作中提到】 : : 我觉得有点穿越了. 你不是问那个micro service module的问题吗? 和akka没关系吧.
|
P********l 发帖数: 452 | 83 你说呢?
【在 p*****2 的大作中提到】 : : . : 我不是说跟akka类似吗?我没用过micro,所以不能肯定的回答。
|
p*****2 发帖数: 21240 | 84
我要是知道我就不问了呀
【在 P********l 的大作中提到】 : 你说呢?
|
z****e 发帖数: 54598 | 85 talk这种常用动词本身可以做名词
没有必要动名词一把
多此一举
我现在正准备废掉storm,用vert.x来替换web server
然后用spring管理component
效率比storm更高,代码也多不了多少
【在 l*********s 的大作中提到】 : Talking is cheap.
|
l*********s 发帖数: 5409 | 86 行啊,弄好了写个review吧。
【在 z****e 的大作中提到】 : talk这种常用动词本身可以做名词 : 没有必要动名词一把 : 多此一举 : 我现在正准备废掉storm,用vert.x来替换web server : 然后用spring管理component : 效率比storm更高,代码也多不了多少
|
P********l 发帖数: 452 | 87 看它第一个例子 http://senecajs.org/
1. require('seneca')()给出系统唯一的instance. 然后,给这个全系统唯一 add
command pattern. 它接受JSON格式作为query然后返回JSON格式的结果. 别想太多, 是
JSON格式的query和结果而已.
2. 然后, act把请求和数据封装在一起让command去match, 返回结果.
我觉得就是这么简单/简陋. 没有actor什么事.
如果是actor的话, 虽然没仔细看, 感觉oop2的fast messager就很对路. 至少你要找到
那个actor在哪里, 然后给它发消息.
【在 p*****2 的大作中提到】 : : 我要是知道我就不问了呀
|
p*****2 发帖数: 21240 | 88
我明白了。你确实没看全。
【在 P********l 的大作中提到】 : 看它第一个例子 http://senecajs.org/ : 1. require('seneca')()给出系统唯一的instance. 然后,给这个全系统唯一 add : command pattern. 它接受JSON格式作为query然后返回JSON格式的结果. 别想太多, 是 : JSON格式的query和结果而已. : 2. 然后, act把请求和数据封装在一起让command去match, 返回结果. : 我觉得就是这么简单/简陋. 没有actor什么事. : 如果是actor的话, 虽然没仔细看, 感觉oop2的fast messager就很对路. 至少你要找到 : 那个actor在哪里, 然后给它发消息.
|
P********l 发帖数: 452 | 89 完全可能. 大牛来讲讲.
【在 p*****2 的大作中提到】 : : 我明白了。你确实没看全。
|
g*****g 发帖数: 34805 | 90 Actor has nothing to do with service. You can have as many actors as you
like in one service. It's like you can have many jobs in a java service.
【在 p*****2 的大作中提到】 : : 我明白了。你确实没看全。
|
|
|
p*****2 发帖数: 21240 | 91
default是localhost
【在 P********l 的大作中提到】 : 完全可能. 大牛来讲讲.
|
p*****2 发帖数: 21240 | 92
他这个service定义跟你的定义不一样
【在 g*****g 的大作中提到】 : Actor has nothing to do with service. You can have as many actors as you : like in one service. It's like you can have many jobs in a java service.
|