scalca actor

actor本身要解决的问题是
并行计算 单机多核 或者多台机器的分布式计算
采用的是消息机制 异步
actor模型的目的是 寻找能并行、分布计算的最小颗粒(我们本身使用的tomcat其实已经为每个访问者分配了一个请求的资源,但是粒度过大,而且后续都是阻塞式的处理过程)

如果一个公司事情来不及做 那么有两种方法,对现有的员工进行培训 这种方法是有瓶颈的 因为每个人的能力是有限的
还有一种方法是 多招人进来 这种方法的瓶颈是 资源或资金 但是是可以无限扩展的
在有很多人手的前提下 把工作细合理的分成很多份 分配给不同的人处理 最后汇总 当然效率会高

一个优良的架构应该同时具备以上的两点

actor对我们现有架构来说
解决了空间上的解耦(actor之间除了常量不共享任何东西)
解决了时间上的解耦
可以解决很多性能的瓶颈(基于多核 分布)
(当然tomcat也可以解决分布,但是代价可能是将最大粒度的应用级别的程序同样部署在两台服务器上)

目前觉得新架构在
模块内 应该有相当于 人脑及神经系统(我认为的actor在我们新架构中的位置)的 总actor(状态监控、组合行为处理‘手脚并用’、事务处理) 按粒度划分 有手 脚 眼睛 鼻子 之类的 处理actor
对于模块来说 最细粒度的应该是基于函数式编程的 function(可包含针对性能瓶颈的actor)

模块间应该是 主actor和主actor之间的交流 完成相应行为

当然分布是相对的 如果有外部系统未知对我们整个系统有异构方面的需求
最好有类似于 消息总线的发布通讯模块来规范的组织 及 监控所有模块的状态 及 模块组合行为(一个人切菜,另一个人烧菜)...

以上是简单的阐述 但有很多难点
如:怎样真正做到函数式编程 完全没有副作用是否就是没有现实作用
模块间或者组合行为的事务机制 分布式事务
定制actor的正确场景

好在 我们做的是产品...量身定做是目的...

猜你喜欢

转载自csc365kl.iteye.com/blog/1627299