You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/README.md
+17-13Lines changed: 17 additions & 13 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,9 +4,12 @@ Service mesh support for Elixir.
4
4
`Meshx` is released as group of separate Elixir packages, summary for each package is provided below.
5
5
6
6
### MeshxConsul
7
-
`MeshxConsul` is a service mesh adapter implementing `Meshx.ServiceMesh` behaviour using HashiCorp [Consul](https://www.consul.io/) as external service mesh solution. Package is used to manage mesh service and upstream endpoints, consumed by user service providers and upstream clients.
`MeshxConsul` using external dependencies (Consul as control plane and Envoy/other as data plane), complements user client/server applications with powerful service mesh features:
10
+
`MeshxConsul` is a service mesh adapter implementing `Meshx.ServiceMesh` behaviour using HashiCorp [Consul](https://www.consul.io/) as an external service mesh solution. Package manages mesh service and upstream endpoints, which are later consumed by user service providers and upstream clients.
11
+
12
+
`MeshxConsul` by using external dependencies, Consul as control plane and Envoy/other proxy as data plane, complements user client/server applications with powerful service mesh features:
`MeshxRpc` can be considered as alternative to Erlang OTP [`:erpc`](https://erlang.org/doc/man/erpc.html) (or [`:rpc`](https://erlang.org/doc/man/rpc.html)) modules. `MeshxRpc` restricts request execution scope to single RPC server module to improve operational node security. `MeshxRpc` provides built-in features crucial for binary data transfers: chunking user data into smaller blocks to avoid IO socket blocking and transmission error detection with user configurable asynchronously executed block checksum functions.
`MeshxRpc` can be considered as alternative to Erlang OTP [`:erpc`](https://erlang.org/doc/man/erpc.html) (or [`:rpc`](https://erlang.org/doc/man/rpc.html)) module. `MeshxRpc` restricts request execution scope to single RPC server module to improve operational node security. `MeshxRpc` provides built-in features crucial for binary data transfers: chunking user data into smaller blocks to avoid IO socket blocking and transmission error detection with user configurable asynchronously executed block checksum functions.
25
29
26
30
`MeshxRpc` is using custom binary communication protocol, hence it doesn't depend on Erlang distribution protocol. `MeshxRpc` fits best in cases where user application requires execution of plain remote functions and doesn't require remote process management features like process linking or monitoring available only for natively distributed nodes. `MeshxRpc` can be used with nodes connected with Erlang distribution if justified by package additional features, otherwise OTP `:erpc` should be used.
27
31
28
32
`MeshxRpc` primary objective is to work paired with service mesh adapter (`MeshxConsul`) as a user mesh service, however it can be used with any other data transport solution, eg. ssh port forwarding or VPN. For special use cases it can work standalone: `MeshxRpc` server and client running on the same host and sharing common connection socket.
29
33
30
-
`MeshxRpc` designed to work primarily as mesh service doesn't offer data encryption or any access control mechanisms as those are natively provided by service mesh environment.
`MeshxNode` delivers Erlang style nodes connectivity by registering special "node service" using service mesh adapter. Communication between nodes is realized using service mesh sidecar proxies and upstreams. Data traffic is secured with mTLS, managed by service mesh application control plane (e.g. Consul).
36
41
37
42
MeshxNode can be considered as alternative to Erlang Port Mapper Daemon ([EPMD](https://erlang.org/doc/man/epmd.html)) and distribution module (usually [`:inet_tls_dist`](http://erlang.org/doc/apps/ssl/ssl_distribution.html) or `:inet_dist`).
@@ -40,11 +45,10 @@ MeshxNode can be considered as alternative to Erlang Port Mapper Daemon ([EPMD](
40
45
41
46
Users are free to use any mesh service management features provided by external mesh application or L4 proxy software. Consul service intentions, tokens or ACLs to manage "node service" access permissions might be an interesting feature to consider here.
`Meshx` package doesn't offer any end-user functionality. `Meshx` should be used by developers building new service mesh adapters implementing `Meshx.ServiceMesh` behavior.
Service mesh adapter in practice should be reasonably thin layer between user application using `Meshx`packages and external software providing service mesh solution. Mesh adapter should use 3rd party application API to implement functionality required by`Meshx.ServiceMesh` behavior. As described earlier `Meshx` is released with HashiCorp Consul adapter - `MeshxConsul`.
52
+
`Meshx` package doesn't offer any end-user functionality. `Meshx` should be used by developers building new service mesh adapters implementing`Meshx.ServiceMesh` behavior.
Service mesh adapter in practice should be reasonably thin layer between user application using `Meshx` packages and external software providing service mesh solution. Mesh adapter should use third party application API to implement functionality required by `Meshx.ServiceMesh` behavior. As described earlier `Meshx` is released with HashiCorp Consul adapter - `MeshxConsul`.
0 commit comments