才高 陈子枢
那它问题在哪里呢?
线程安全:高并发我们面临的第一个问题就是线程安全问题,早期通过同步关键
字,加锁,但这样丧失了并发性,性能大打折扣。之后出现了 ThreadLocal,
如获至宝。但这样总是曲线救国,每个需要并发的地方都加这样,代码繁多,效
率受影响。
线程通信:高并发一下启动几十万个线程甚至百万个线程,怎么控制想想都头痛。
有状态:分布式后我们最想追求的是无状态的情况,可事事并不如人意,我们总
有些业务是有状态的,那分布式就很难操作了,不能随意的把有状态的业务分配
到某个节点上。能否将有状态的也能按无状态的随意分配。java 做不到。
中间结果:java 计算的中间结果会被后续计算的内容覆盖而丢失,这样当后续
某个计算出错,只能重新计算。
1.1.2 为什么要学习 Scala?
分布式高并发语言 Go、R、Erlang、Scala 为何选择 Scala?
Apache Spark 是大数据处理的核心方式,用 scala 语言编写!
Neo4j 图形 nosql 数据库,数亿条链接,用 scala 语言编写!
Kafka 分布式发布订阅消息系统,由 LinkedIn 捐给 Apache,以极高的吞吐量著称,
用 scala 语言编写!
1.1.3 神奇的 Scala
最初学习 scala 主要为了学习 spark 生态,但是深入学习 scala 的一些特性后,深
深被 scala 函数式和面向对象的风格所折服,不得不赞美设计这门语言的设计者。不得不
说 scala 的函数式和面向对象风格,可以让想象随时发生;如果你是画家,使用 scala
写的代码将是一幅充满诗意的风景画;如果你是作曲家,写的代码将是一个扣人心弦、跌
宕起伏的华美乐章。
简洁,深邃,一般人它看不懂!
1.1.4 Scala 和 java 的关系
java 是 c 语言的儿子,scala 是 java 的儿子,而儿子胜过的父亲,青出于蓝而胜
于蓝!
分布式开发中会面对很多棘手的问题,如面临服务器之间的通信、远程调用、序列化、
反序列化等等。但有了 scala 这一切变得轻松写意,它全部都实现了。让我们访问分布式
集群环境就和访问单机一样简单,这无疑太爽了。
同时 Scala 无缝集成 Java,Scala 编译器会先把源文件编译成 Java 的 class 文件
再运行。Scala 可以调用所有的 Java 类库,也可以从 Java 应用程序中调用 Scala 的代
码。它也可以访问现存的数之不尽的 Java 类库,这让(潜在地)迁移到 Scala 更加容易。
Java => 编译 => *.class => JVM
Scala => 编译 => *.class => JVM
扩展:groovy、closurej(storm)都可以编译成.class,利用 JVM。
Scala 的编译器的作者就是 Java 编译器的作者。
评论0
最新资源