In Akka you would create an Actor subclass that would receive messages which are serialized objects.
In vert.x you would create a verticle that would receive messages which are json objects.
其中 actor 和 verticle 都是 lightweight concurrent entities
vertx的json格式对语言的兼容性更好
vert.x is designed to be more language neutral through the use of json as opposed to language specific objects
Vert.x是一个基于netty的异步工具集 ,可以简单理解成运行在JVM上的Node.js
vertx-sync 解决异步代码编写的困难
Sync.awaitEvent 从Handler里返回一个事件结果(同步的),且不会阻塞EventLoop
Sync.awaitResult 从Handler里返回一个异步事件结果(同步的),且不会阻塞EventLoop
Sync.fiberHandler handler里的一些逻辑在Fiber里运行
Reactive Programming 响应式编程
Reactive Streams规范于2015年出现,旨在为具有无阻塞背压的异步流处理提供标准,确保库的互操作性
背压(backpressure)
接收方接收数据速度较慢时,强制降低发送方的数据发送速度,也称为流量控制。
RxJava SpringReactor
Akka Vert.x
akka提供了几种不同的OverflowStrategy,除了backpressure之外还有 DropHead DropTail DropBuffer DropNew 和 Fail
内卷时代
主业专精 副业加持 投资傍身 谨慎创业
云原生 CloudNative = Cloud+Native
Native 应用考虑云环境,原生为云而设计,在云上运行,充分利用和发挥云平台的弹性+分布式优势
f(g(h(k(i))) 与 a=k(i),b=h(a),c=g(b),d=f(c)
Martin Odersky 给出两个编写Scala代码的原则
尽量用能力弱的功能
给中间步骤命名
Databricks Scala 编程风格指南
https://github.com/databricks/scala-style-guide/blob/master/README-ZH.md
Databricks为了性能考虑,更倾向于采用命令式方式去使用Scala,例如,规范建议使用while循环,而非for循环或者其他函数转换(map foreach)
Spark 许多源代码并没有遵循Scala推崇的最佳实践 ,Odersky对此的解释
Spark的API设计是和Scala 集合类设计是一致的函数式风格,里面具体的实现为了追求性能用了命令式,Scala集合里面的实现函数为了性能也用了很多var
HDFS缺陷
NameNode 元数据的扩展性 文件系统元数据 块位置信息 全部在内存中 对内存的要求高,内存大小限制了集群扩展性
NameNode FSNamesystem全局锁 元数据请求依赖该锁
块汇报风暴 HDFS块大小默认128M,启动几百PB数据量的集群时 NameNode需要接受所有块汇报才可以退出安全模式,因此启动时间会达数小时
第一页
上一页
下一页
最后一页