digraph g {
graph [compound = true];
//presentation
splines = true;
overlap = false;
rankdir = TB;
subgraph cluster_generators {
label="generators";
generators_youtube [label="https://api.youtube.com"]
generators_instagram [label="https://api.instagram.com"]
}
subgraph cluster_providers {
label="providers";
subgraph cluster_providers_youtube {
label="youtube";
providers_youtube_channel [label="YoutubeChannelProvider"]
providers_youtube_video [label="YoutubeUserActivityProvider"]
}
subgraph cluster_providers_instagram{
label="instagram";
providers_instagram_userinfo [label="InstagramUserInfoCollector"]
providers_instagram_media [label="InstagramRecentMediaCollector"]
}
}
subgraph cluster_processors {
label="processors";
processors_youtube_activity [label="YoutubeTypeConverter"]
processors_youtube_activityobject [label="YoutubeTypeConverter"]
processors_instagram_activity [label="InstagramTypeConverter"]
processors_instagram_activityobject [label="InstagramTypeConverter"]
}
subgraph cluster_persisters_1 {
label="persisters";
persisters_kinesis_writer [label="KinesisPersistWriter"]
persisters_kinesis_writer [label="KinesisPersistWriter"]
}
subgraph cluster_queues {
label="queues";
kinesis [label="kinesis://", shape="trapezium"]
}
subgraph cluster_persisters_2 {
label="persisters";
persisters_elasticsearch [label="ElasticsearchPersistWriter"]
persisters_hdfs [label="WebHdfsPersistWriter"]
persisters_kinesis_reader [label="KinesisPersistReader"]
persisters_kinesis_reader [label="KinesisPersistReader"]
}
subgraph cluster_dbs {
label="dbs";
elasticsearch [label="elasticsearch", shape="cylinder"]
hdfs [label="hdfs", shape="tab"]
}
generators_youtube -> providers_youtube_channel
generators_youtube -> providers_youtube_video
providers_youtube_channel -> processors_youtube_activityobject [label="o.a.s.y.Channel"]
providers_youtube_video -> processors_youtube_activity [label="o.a.s.y.Video"]
generators_instagram -> providers_instagram_userinfo
generators_instagram -> providers_instagram_media
providers_instagram_userinfo -> processors_instagram_activityobject [label="o.a.s.i.UserInfoData"]
providers_instagram_media -> processors_instagram_activity [label="o.a.s.i.MediaFeedData"]
processors_youtube_activityobject -> persisters_kinesis_writer [label="o.a.s.p.j.Page"]
processors_youtube_activity -> persisters_kinesis_writer [label="o.a.s.p.j.Video\no.a.s.p.j.Comment"]
processors_instagram_activityobject -> persisters_kinesis_writer [label="o.a.s.p.j.Page"]
processors_instagram_activity -> persisters_kinesis_writer [label="o.a.s.p.j.Photo\no.a.s.p.j.Video\no.a.s.p.j.Comment"]
persisters_kinesis_writer -> kinesis -> persisters_kinesis_reader [label="o.a.s.p.j.Activity"]
persisters_kinesis_writer -> kinesis -> persisters_kinesis_reader [label="o.a.s.p.j.ActivityObject"]
persisters_kinesis_reader -> persisters_elasticsearch
persisters_kinesis_reader -> persisters_hdfs
persisters_elasticsearch -> elasticsearch [label="es://"]
persisters_hdfs -> hdfs [label="hdfs://"]
} |