我们需要消息中间件吗？ · 一切的变化都可以看做是一系列独立事件的变化的组合 · 将峰值熨平，减少对系统的冲击同步转异步，提高吞吐量，量，平换系统的压力 · 解决事件的重发（回放）实现现实中消息的传播方式 · 充当简单的ETL功能，数据流的分发和汇总，通过pipeline的方法处理数据
一个 Go 进程可以轻易支撑几十万上百万并发运行的 Go 例程（只要你内存足够大）
Erlang 1 is a declarative language for programming concurrent and distributed systems which was developed by the authors at the Ericsson and Ellemtel Computer Science Laboratories.
For a long time, the world of Erlang programming had only one book—The Book,1 released in 1993 and revised in 1996. Fanatics can still find it in print, at a price of over $100. A decade or so after its publication, The Book was getting long in the tooth, to say the least. The language had evolved to include several new and powerful programming constructs. Higher-order functions, list comprehensions, and the bit syntax are found everywhere in modern Erlang programs but weren’t described in The Book. But the most notable omission was the Open Telecom Platform (OTP), Erlang’s application development framework, which was first released in 1996. Erlang was rather easy to learn; OTP wasn’t, and early adopters like Martin Logan, who started using Erlang in 1999, pretty much had to learn it the hard way through trial and error.
It’s about concurrency. It’s about distribution. It’s about fault toler- ance. It’s about functional programming. It’s about programming a dis- tributed concurrent system without locks and mutexes but using only pure message passing. It’s about speeding up your programs on multi- core CPUs. It’s about writing distributed applications that allow people to interact with each other. It’s about design methods and behaviors for writing fault-tolerant and distributed systems. It’s about modeling concurrency and mapping those models onto computer programs, a process I call concurrency-oriented programming.
Erlang is our solution to three problems regarding the development of highly concur- rent, distributed “soft real-time systems”: • To be able to develop the software quickly and efficiently • To have systems that are tolerant of software errors and hardware failures • To be able to update the software on the fly, that is, without stopping execution When we “invented” Erlang, we focused on telecommunication systems, but today these requirements are applicable to a large number of applications, and Erlang is used in applications as divergent as distributed databases, financial systems, and chat serv- ers, among others. Recent interest in Erlang has been fueled by its suitability for use on multicore processors. While the world is struggling to find methods to facilitate porting applications to multicore processors, Erlang applications can be ported with virtually no changes.
消息系统、协议与技术消息系统及其结构STOMP/JMS/AMQP/MQTTEIP与SEDA常见开源消息中间件ZeroMQ Fqueue ActiveMQ与ApolloKafka与MetaQ RabbitMQ MQ选型与未来发展展望消息系统、协议与技术Messaging耦合->松耦合同步->异步化直接请求->缓冲压力A系统B系统OnewayA系统B系统RequestResponseA系统B系统sendA系统B系统
为了在Erlang运行时系统基础上开发更可靠的分布式系统和算法，我们研究了Erlang编程语言中 分布式的部分。使用Erlang，把一个运行在单个节点上的程序转换成完全分布式（运行在多个节点 上）的应用程序可谓易如反掌（只需要修改对spawn函数的调用，使之在不同节点上产生进程）； 但尽管如此，Erlang语言和API中仍然有一些阴暗的角落可能在引入分布式运算时带来问题。在本 文中，我们将介绍几个这样的陷阱：在这些地方，取决于进程是否运行在同一个节点上，进程间通 信的语义会有显著的差异。我们同时还提供了一些关于“编写安全的分布式系统”的指导原则。
跨平台的大规模实时系统的架构介绍，各个系统模块的设计介绍。介绍如何基于 Erlang/OTP 的特性构建大规模实时系统。介绍如何带领一个 C/C++ 团队用 Erlang 开发。
Exokernels + Erlang Exploring novel operating_systems architectures to increase performance.
A Practical Subty ping System For Erlang
An Extension of Erlang with Finite Domain Constraints