Considering the dynamic and unpredictable aspects of IoT environments, where the advertised services availability may change at any moment due to poor wireless links or battery shortage. I wonder which services/resources, discovery protocols or mechanisms are mainly used in IoT solutions (such Amazon IoT and Eclipse IoT)? Are they centralized, distributed or hybrid?
You question isn't very clear.
AWS IoT uses MQTT. If you squint, it's a centralized service. But it's actually a federation of many servers that create a pub-sub architecture. The AWS service adds a database on top of MQTT, so you can have shadow profiles for knowing what changed during disconnected operation.
But your question could be about "finding your IoT device", or about your "IoT device finding nearby services". There are dozens of protocols such as zeroconf, UPNP, EddyStone, etc.