Lanzamiento del marco para la creación de aplicaciones de red ErgoFramework 2.2

Se llevó a cabo la siguiente versión de ErgoFramework 2.2, implementando la pila de red completa de Erlang y su biblioteca OTP en el lenguaje Go. El marco proporciona al desarrollador herramientas flexibles del mundo de Erlang para crear soluciones distribuidas en el lenguaje Go utilizando patrones de diseño de propósito general listos para usar gen.Application, gen.Supervisor y gen.Server, así como patrones especializados: gen. Stage (pub/sub distribuido), gen.Saga (transacciones distribuidas, una implementación del patrón de diseño SAGA) y gen.Raft (una implementación del protocolo Raft).

Además, el marco proporciona funcionalidad de proxy con cifrado de extremo a extremo, que no está disponible en Erlang/OTP y Elixir. Dado que el lenguaje Go no tiene un análogo directo del proceso Erlang, el marco utiliza goroutines como base para gen.Server con un contenedor de "recuperación" para manejar situaciones de excepción. El código del proyecto se distribuye bajo la licencia MIT.

La pila de red en ErgoFramework implementa completamente la especificación DIST del protocolo Erlang. Esto significa que las aplicaciones escritas sobre la base de ErgoFramework funcionan de forma nativa con cualquier aplicación escrita en los lenguajes de programación Erlang o Elixir (un ejemplo de interacción con un nodo Erlang). También vale la pena señalar que el patrón de diseño gen.Stage se implementa de acuerdo con la especificación Elixir GenStage y es totalmente compatible con ella (ejemplo de implementación).

En el nuevo lanzamiento:

  • Nuevas plantillas agregadas
    • gen.Web es un patrón de diseño de Web API Gateway (también conocido como Backend For Frontend). Ejemplo.
    • gen.TCP es una plantilla que le permite implementar un grupo de aceptadores de conexiones TCP con un mínimo esfuerzo al escribir código. Ejemplo.
    • gen.UDP: similar a la plantilla gen.TCP, solo para el protocolo UDP. Ejemplo.
  • Se ha propuesto una nueva funcionalidad de Eventos con la implementación de un bus de eventos simple dentro de un nodo, que permite crear mecanismos para el intercambio de eventos (pub/sub) entre procesos locales. Ejemplo.
  • Se agregó soporte para el registro de tipos, que permite la serialización/deserialización automática de mensajes en un tipo de datos nativo de Golang. Esto significa que ya no necesita usar etf.TermIntoStruct para cada mensaje recibido. Los tipos registrados se transformarán automáticamente al tipo especificado, lo que acelera significativamente el rendimiento del intercambio de mensajes entre nodos distribuidos.

Fuente: opennet.ru

Añadir un comentario