aws iot - Kinesis shard with many producers -


i need collect data lots of data sources (e.g., mobile phones). example, 1,000 phones, each uploading batch of 1mb every 20 minutes. thinking use kinesis stream single shard ingest data (the total throughput 1mb/s). make sense individual phones directly access kinesis api, or should put own frontend (e.g., web server) in front? main limits/considerations keep in mind when making decision?

p.s. alternative use aws iot infrastructure considerably more expensive

you should have web service receives data clients , send them kinesis. web server can use kinesis producer library (kpl) offer best performance in terms of message rate delivery, timeout, policy retry , scalability. kpl can create many workers , can tuned optimize message rate , not exceed write limit imposed kinesys shards.

have every single client sends data kinesis overkill in terms of performance, mainenantce costs , delivery. happen if client start sends data @ high rate traffic? shard has rate limit write operation (up 1,000 record/s, data write rate 1 mb/s). 'aggressive' client generate eccessive traffic , make shard not responding while, , block other clients send records should stored in same shard.

moreover, think delivery cost on thousands of clients. happen if want change stream name? or change accessid/ key? or switch kinesis kafka? have manage update of thousands of clients.

with web server, can hide complexity , make change transparent client. can think run web service directly in ec2. have producer directly in aws should reduce network latency. moreover, can take advantage of scalability/resiliency/fault tolerance features offered aws.


Comments

Popular posts from this blog

angular - Is it possible to get native element for formControl? -

unity3d - Rotate an object to face an opposite direction -

javascript - Why jQuery Select box change event is now working? -