Service flood / denial of service protection with scala and Google Guava

A common problem for webservices that are exposed to the public is the threat of beeing flooded or atttacked by a denial of service attack. To be honest I think that especially for distributed dos there is no real protection and even for dos the protection should be mainly in components like load balancers, firewalls, … and not in the application itself. But anyway it is useful to be able to handle that also in the application and at least that also provides a good way to restrict access to certain service endpoints in a given amount of time.

This solution is based on Google Guava RateLimiter and therefore works only within one application server instance. If you need such a solution of multiple instances Hazelcast or Redis might be good solutions for you. Both have an easy to use TTL feature.

Anyway here is my solution for a trait that can be easly mixed in any service class:

maven dependency:

scala code:

 

 

 

GD Star Rating
loading...

Restful

Während der Schulung ging es unter anderem auch um REST-Webservices und dass die doch wirklich „restful“ sein sollten, also Http-Status-Codes zurück liefern, nur die Method (Get, Put, Post, Delete), welche auch passend ist akzeptieren sollen, …

Ich habe das bis jetzt immer sehr lax. Also es gibt ne 404 von ZF, wenn der Service nicht da ist, aber ansonsten immer ne 200 und den Fehler dann als Message im Body der Response. Auch benutze ich meistens Get und sonst nichts. Wie handhabt ihr das, wenn ihr Rest-Services in PHP schreibt?

Darüber hinaus würde mich interessieren, was ihr so von nem Webservice zurück geben lasst. XML? Json? Und wie ihr das macht, wenn ihr Zend Framework benutzt. Generiert ihr ein eigenes XML oder habt ihr nen schönen Trick auf Lager?

GD Star Rating
loading...