# Erlang开源项目集锦
# 什么是Erlang?
Erlang是一种编程语言,用于构建对高可用性有要求的大规模可扩展的软实时系统。 它的一些用途是在电信,银行,电子商务,计算机电话和即时消息中。 Erlang的运 行时系统具有对并发,分发和容错的内置支持。
# 什么是OTP?
OTP由Erlang库和设计原则组成,提供了开发这些系统的中间件。它包括自己的分布 式数据库,与其他语言交互的应用程序,调试和发行处理工具。
# Erlang 开源项目
[[toc]]
# Erlang/OTP
项目地址: https://github.com/erlang/otp.git (opens new window)
# HTTP服务器 Cowboy
什么是Cowboy?
Cowboy是适用于Erlang / OTP的小型,快速,现代化的HTTP服务器。
项目地址: https://github.com/ninenines/cowboy.git (opens new window)
# MQTT 消息服务器 emqx
什么是emqx?
EMQ X 是一款完全开源,高度可伸缩,高可用的分布式 MQTT 消息服务器,适用于 IoT、M2M 和移动应用程序,可处理千万级别的并发客户端。
从 3.0 版本开始,EMQ X 完整支持 MQTT V5.0 协议规范,向下兼容 MQTT V3.1 和 V3.1.1, 并支持 MQTT-SN、CoAP、LwM2M、WebSocket 和 STOMP 等通信协议。EMQ X 3.0 单集群可支 持千万级别的 MQTT 并发连接。
项目地址: https://github.com/emqx/emqx.git (opens new window)
# 即时通讯 ejabberd
什么是ejabberd?
ejabberd是一种分布式容错技术,它允许创建大规模的即时消息传递应用程序。该服务器可以在 单个节点上可靠地支持数千个同时使用的用户,其设计旨在提供卓越的容错标准。作为基于行业 标准的开源技术,ejabberd可用于以极具成本效益的方式构建定制解决方案。
项目地址: https://github.com/processone/ejabberd.git (opens new window)
# 文档型数据库 CouchDB
什么是CouchDB?
CouchDB是一个完全包含网络的数据库。使用JSON文档存储数据。通过HTTP使用Web浏览器访问文档。 使用JavaScript查询,合并和转换文档。 CouchDB与现代Web和移动应用程序很好地兼容。您可以 使用CouchDB的增量复制高效地分发数据。CouchDB支持具有自动冲突检测功能的主-主设置。
项目地址: https://github.com/apache/couchdb.git (opens new window)
# 压力测试工具 Tsung
什么是Tsung?
Tsung(以前称为IDX-Tsunami)是一种分布式负载测试工具。它与协议无关,当前可用于强调HTTP,WebDAV, SOAP,PostgreSQL,MySQL,AMQP,MQTT,LDAP和Jabber / XMPP服务器。
项目地址: https://github.com/processone/tsung.git (opens new window)
# 应用服务器框架 ChicagoBoss
什么是ChicagoBoss? Chicago Boss是受Rails启发并以Erlang编写的服务器框架。它提供了现代Web开发的所有便利,包括Comet。 Chicago Boss与其他非Errang框架的不同之处在于,它可以处理大量流量而不会降低性能。 Chicago Boss 与其他Erlang框架的不同之处在于易于设置和使用。
项目地址: https://github.com/ChicagoBoss/ChicagoBoss.git (opens new window)
# Erlang包管理工具 kerl
项目地址: https://github.com/kerl/kerl.git (opens new window)
# 开发工具 Rebar3
什么是Rebar3?
Rebar3是一个Erlang工具,可轻松以可重复的方式创建,开发和发布Erlang库,应用程序和系统。
项目地址: https://github.com/erlang/rebar3.git (opens new window)
# 日志记录框架Lager
什么是Lager?
Lager (如啤酒中的啤酒)是Erlang的日志记录框架。其目的是提供一种在erlang应用程序中执行日志记录的 更传统的方法,该方法可与logrotate和syslog等传统UNIX日志记录工具很好地配合使用。
项目地址: https://github.com/erlang-lager/lager.git (opens new window)
# 实时Web框架和内容管理系统 Zotonic
什么是 Zotonic?
Zotonic是使用Erlang构建的开源,高速,实时Web框架和内容管理系统。它是灵活的,可扩展的,并且从头 开始设计以支持动态的交互式网站和移动解决方案。 Zotonic的速度非常快而且非常稳定-适用于从基本网站 到复杂的分布式应用程序的所有内容。它提供了优雅的后端来管理内容,并具有开发人员构建真正出色的应用 程序所需的灵活性。
项目地址: https://github.com/zotonic/zotonic.git (opens new window)
# lorawan服务器 lorawan-server
什么是 lorawan-server ?
集成了网络服务器和应用程序服务器的开源LoRaWAN服务器。这对于运行自己的LoRaWAN网络的应用程序 提供商或设备和应用程序开发人员很有用。
项目地址: https://github.com/gotthardp/lorawan-server.git (opens new window)
# 消息代理服务器 RabbitMQ
什么是 RabbitMQ ?
RabbitMQ是功能丰富的多协议消息传递代理。它支持:
- AMQP 0-9-1
- AMQP 1.0
- MQTT 3.1.1
- STOMP 1.0 through 1.2
项目地址: https://github.com/rabbitmq/rabbitmq-server.git (opens new window)
# RabbitMQ系统3.5.3版本中文完全注释
项目地址: https://github.com/sky-big/RabbitMQ.git (opens new window)
# 轻量级通用池库 Poolboy
什么是 Poolboy ?
如果不限制程序可以产生的并发进程的最大数量,则可以轻松耗尽系统资源。Poolboy是针对Erlang广泛使用的轻量级通用池库,可以解决此问题。
为什么要使用Poolboy?
让我们先想一个具体的例子。您的任务是构建一个用于将用户配置文件信息保存到数据库的应用程序。如果您为每个用户注册都创建了一个流程,则 将创建无数个连接。在某些时候,这些连接的数量可能超过数据库服务器的容量。最终,您的应用程序可能会超时并出现各种异常。
解决方案是使用一组工作程序(进程)限制连接数,而不是为每个用户注册创建一个进程。然后,您可以轻松避免耗尽系统资源。
这就是Poolboy的用武之地。它使您可以轻松设置由Supervisor
管理的工作人员池,而无需您费力。有很多库在后台使用Poolboy
。 例如,postgrex
的连接池(使用PostgreSQL时Ecto会利用它)和redis_poolex
(Redis连接池)是一些使用Poolboy的流行库。
项目地址:https://github.com/devinus/poolboy (opens new window)
参考:http://elixirschool.com/en/lessons/libraries/poolboy/#why-use-poolboy (opens new window)
# Erlang PostgreSQL数据库客户端 epgsql
什么是 epgsql ?
Erlang PostgreSQL数据库客户端
项目地址:https://github.com/epgsql/epgsql (opens new window)
# 数据库的驱动程序 MySQL/OTP
什么是 mysql-otp ?
MySQL/OTP是用于将Erlang/OTP应用程序连接到MySQL和MariaDB数据库的驱动程序。它是Erlang中MySQL协议的本机实现。
项目地址:https://github.com/mysql-otp/mysql-otp (opens new window)