|
|
|
@ -211,42 +211,36 @@ from diagrams.onprem.database import PostgreSQL
|
|
|
|
|
from diagrams.onprem.inmemory import Redis
|
|
|
|
|
from diagrams.onprem.logging import Fluentd
|
|
|
|
|
from diagrams.onprem.monitoring import Grafana, Prometheus
|
|
|
|
|
from diagrams.onprem.network import Linkerd, Nginx
|
|
|
|
|
from diagrams.onprem.network import Nginx
|
|
|
|
|
from diagrams.onprem.queue import Kafka
|
|
|
|
|
from diagrams.onprem.workflow import Airflow
|
|
|
|
|
|
|
|
|
|
with Diagram("On-Premise System Architecture", show=False):
|
|
|
|
|
ingress = Nginx("ingress")
|
|
|
|
|
|
|
|
|
|
with Cluster("Service Cluster"):
|
|
|
|
|
svcmesh = Linkerd("svcmesh")
|
|
|
|
|
grpcsvc = [Server("grpc1"), Server("grpc2"), Server("grpc3")]
|
|
|
|
|
svcmesh >> grpcsvc
|
|
|
|
|
|
|
|
|
|
with Cluster("Database HA"):
|
|
|
|
|
maindb_master = PostgreSQL("maindb")
|
|
|
|
|
maindb_replica = PostgreSQL("replica")
|
|
|
|
|
maindb_master - maindb_replica
|
|
|
|
|
grpcsvc >> maindb_master
|
|
|
|
|
metrics = Prometheus("metric")
|
|
|
|
|
metrics << Grafana("monitoring")
|
|
|
|
|
|
|
|
|
|
maindb_replica >> Airflow("scheduler")
|
|
|
|
|
with Cluster("Service Cluster"):
|
|
|
|
|
grpcsvc = [
|
|
|
|
|
Server("grpc1"),
|
|
|
|
|
Server("grpc2"),
|
|
|
|
|
Server("grpc3")]
|
|
|
|
|
|
|
|
|
|
with Cluster("Sessions HA"):
|
|
|
|
|
session_master = Redis("session")
|
|
|
|
|
session_master - Redis("replica")
|
|
|
|
|
grpcsvc >> session_master
|
|
|
|
|
|
|
|
|
|
logaggr = Fluentd("aggregator")
|
|
|
|
|
logaggr >> Kafka("stream") >> Spark("log analytics")
|
|
|
|
|
grpcsvc >> logaggr
|
|
|
|
|
master = Redis("session")
|
|
|
|
|
master - Redis("replica") << metrics
|
|
|
|
|
grpcsvc >> master
|
|
|
|
|
|
|
|
|
|
metricq = Kafka("buffer")
|
|
|
|
|
metricq >> Prometheus("metric") >> Grafana("monitoring")
|
|
|
|
|
with Cluster("Database HA"):
|
|
|
|
|
master = PostgreSQL("users")
|
|
|
|
|
master - PostgreSQL("slave") << metrics
|
|
|
|
|
grpcsvc >> master
|
|
|
|
|
|
|
|
|
|
logaggr >> metricq
|
|
|
|
|
svcmesh >> metricq
|
|
|
|
|
with Cluster("Log Streaming"):
|
|
|
|
|
aggregator = Fluentd("logging")
|
|
|
|
|
aggregator >> Kafka("stream") >> Spark("analytics")
|
|
|
|
|
|
|
|
|
|
ingress >> svcmesh
|
|
|
|
|
ingress >> grpcsvc >> aggregator
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|

|