𝟱 ਮਹੱਤਵਪੂਰਨ A2A ਪ੍ਰੋਟੋਕੋਲ ਗਲਤੀਆਂ ਜੋ ਮਲਟੀ-ਏਜੰਟ ਸਿਸਟਮਾਂ ਨੂੰ ਵਿਗਾੜ ਦਿੰਦੀਆਂ ਹਨ
ਮਲਟੀ-ਏਜੰਟ ਸਿਸਟਮ ਅਕਸਰ ਪ੍ਰੋਡਕਸ਼ਨ ਵਿੱਚ ਅਸਫਲ ਹੋ ਜਾਂਦੇ ਹਨ। ਏਜੰਟਾਂ ਵਿਚਕਾਰ ਗਲਤ ਸੰਚਾਰ ਹੁੰਦਾ ਹੈ ਜਾਂ ਉਹ ਫ੍ਰੀਜ਼ ਹੋ ਜਾਂਦੇ ਹਨ। ਤੁਹਾਨੂੰ ਡੈੱਡਲੌਕਸ (deadlocks) ਜਾਂ ਰਹੱਸਮਈ ਗਲਤੀਆਂ ਦੇਖਣ ਨੂੰ ਮਿਲ ਸਕਦੀਆਂ ਹਨ।
ਜ਼ਿਆਦਾਤਰ ਅਸਫਲਤਾਵਾਂ Agent-to-Agent (A2A) ਪ੍ਰੋਟੋਕੋਲ ਵਿੱਚ ਹੋਣ ਵਾਲੀਆਂ ਇਹਨਾਂ ਪੰਜ ਗਲਤੀਆਂ ਕਾਰਨ ਹੁੰਦੀਆਂ ਹਨ।
- ਸੁਨੇਹਿਆਂ ਦੇ ਕ੍ਰਮ (order) ਨੂੰ ਮੰਨ ਲੈਣਾ ਸੁਨੇਹੇ ਹਮੇਸ਼ਾ ਉਸੇ ਕ੍ਰਮ ਵਿੱਚ ਨਹੀਂ ਆਉਂਦੇ ਜਿਸ ਕ੍ਰਮ ਵਿੱਚ ਤੁਸੀਂ ਉਹਨਾਂ ਨੂੰ ਭੇਜਿਆ ਸੀ। ਡਿਸਟ੍ਰੀਬਿਊਟਡ ਸਿਸਟਮ ਅਕਸਰ ਸੁਨੇਹੇ ਅਨੁਕ੍ਰਮਿਕ (out of sequence) ਤੌਰ 'ਤੇ ਪਹੁੰਚਾਉਂਦੇ ਹਨ। ਇਸ ਨਾਲ ਰੇਸ ਕੰਡੀਸ਼ਨਾਂ (race conditions) ਪੈਦਾ ਹੁੰਦੀਆਂ ਹਨ ਅਤੇ ਤੁਹਾਡਾ ਡਾਟਾ ਖਰਾਬ ਹੋ ਜਾਂਦਾ ਹੈ।
- ਕ੍ਰਮ ਨੂੰ ਟ੍ਰੈਕ ਕਰਨ ਲਈ ਸੀਕੁਐਂਸ ਨੰਬਰਾਂ ਦੀ ਵਰਤੋਂ ਕਰੋ।
- ਦੇਰੀ ਦਾ ਪਤਾ ਲਗਾਉਣ ਲਈ ਟਾਈਮਸਟੈਂਪਸ ਦੀ ਵਰਤੋਂ ਕਰੋ।
- ਏਜੰਟਾਂ ਨੂੰ ਇਸ ਤਰ੍ਹਾਂ ਡਿਜ਼ਾਈਨ ਕਰੋ ਕਿ ਉਹ ਕਿਸੇ ਵੀ ਕ੍ਰਮ ਵਿੱਚ ਸੁਨੇਹੇ ਸੰਭਾਲ ਸਕਣ।
- ਨੈੱਟਵਰਕ ਦੀ ਅਸਲੀਅਤ ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰਨਾ ਡਿਵੈਲਪਰ ਅਕਸਰ ਬਿਲਕੁਲ ਸਹੀ ਹਾਲਤਾਂ ਵਿੱਚ ਟੈਸਟ ਕਰਦੇ ਹਨ। ਅਸਲ ਦੁਨੀਆ ਵਿੱਚ, ਏਜੰਟ ਕ੍ਰੈਸ਼ ਹੋ ਜਾਂਦੇ ਹਨ ਅਤੇ ਨੈੱਟਵਰਕ ਫੇਲ ਹੋ ਜਾਂਦੇ ਹਨ। ਜੇਕਰ ਤੁਸੀਂ ਟਾਈਮਆਊਟਸ (timeouts) ਦੀ ਵਰਤੋਂ ਨਹੀਂ ਕਰਦੇ, ਤਾਂ ਤੁਹਾਡੇ ਏਜੰਟ ਜਵਾਬਾਂ ਲਈ ਹਮੇਸ਼ਾ ਲਈ ਉਡੀਕ ਕਰਦੇ ਰਹਿਣਗੇ।
- ਹਰ ਰਿਕਵੈਸਟ ਲਈ ਸਖ਼ਤ ਟਾਈਮਆਊਟਸ ਸੈੱਟ ਕਰੋ।
- ਅਸਥਾਈ ਗਲਤੀਆਂ (transient errors) ਲਈ ਰੀਟ੍ਰਾਈ ਲੌਜਿਕ (retry logic) ਦੀ ਵਰਤੋਂ ਕਰੋ।
- ਫੇਲ ਹੋਣ ਦੌਰਾਨ ਆਪਣੇ ਸਿਸਟਮ 'ਤੇ ਬਹੁਤ ਜ਼ਿਆਦਾ ਬੋਝ ਪਾਉਣ ਤੋਂ ਬਚਣ ਲਈ ਐਕਸਪੋਨੈਂਸ਼ੀਅਲ ਬੈਕਆਫ (exponential backoff) ਦੀ ਵਰਤੋਂ ਕਰੋ।
- ਸਟੈਟਿਕ ਰਜਿਸਟਰੀਆਂ ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਏਜੰਟ ਲਗਾਤਾਰ ਆਪਣੀ ਸਥਿਤੀ ਬਦਲਦੇ ਰਹਿੰਦੇ ਹਨ। ਉਹ ਸਕੈਲ ਅੱਪ ਹੁੰਦੇ ਹਨ ਜਾਂ ਕ੍ਰੈਸ਼ ਹੋ ਜਾਂਦੇ ਹਨ। ਜੇਕਰ ਤੁਸੀਂ ਏਜੰਟਾਂ ਦੀ ਇੱਕ ਸਟੈਟਿਕ ਸੂਚੀ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋ, ਤਾਂ ਤੁਸੀਂ ਮਰੀਆਂ ਹੋਈਆਂ ਸੇਵਾਵਾਂ ਨੂੰ ਰਿਕਵੈਸਟਾਂ ਭੇਜੋਗੇ।
- ਹੈਲਥ ਚੈੱਕਸ (health checks) ਲਾਗੂ ਕਰੋ।
- ਏਜੰਟ ਦੀ ਉਪਲਬਧਤਾ ਦੀ ਨਿਗਰਾਨੀ ਕਰਨ ਲਈ ਹਾਰਟਬੀਟਸ (heartbeats) ਦੀ ਵਰਤੋਂ ਕਰੋ।
- ਆਪਣੀ ਰਜਿਸਟਰੀ ਤੋਂ ਗੈਰ-ਸਰਗਰਮ ਏਜੰਟਾਂ ਨੂੰ ਆਪਣੇ ਆਪ ਹਟਾ ਦਿਓ।
- ਸੁਨੇਹਾ ਵੈਲੀਡੇਸ਼ਨ ਨੂੰ ਛੱਡਣਾ A2A ਪ੍ਰੋਟੋਕੋਲ ਢਾਂਚਾ (structure) ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦਾ ਹੈ, ਪਰ ਇਹ ਤੁਹਾਡੇ ਬਿਜ਼ਨਸ ਲੌਜਿਕ ਦੀ ਜਾਂਚ ਨਹੀਂ ਕਰਦਾ। ਗਲਤ ਤਰੀਕੇ ਨਾਲ ਬਣਾਏ ਗਏ ਸੁਨੇਹੇ ਜਾਂ ਬੱਗੀ (buggy) ਏਜੰਟ ਤੁਹਾਡੇ ਰਿਸੀਵਰਾਂ ਨੂੰ ਕ੍ਰੈਸ਼ ਕਰ ਸਕਦੇ ਹਨ।
- ਹਰ ਆਉਣ ਵਾਲੇ ਸੁਨੇਹੇ ਨੂੰ ਸਕੀਮਾ (schema) ਦੇ ਅਨੁਸਾਰ ਵੈਲੀਡੇਟ ਕਰੋ।
- ਗਲਤੀਆਂ ਨੂੰ ਆਪਣੇ ਕੋਰ ਲੌਜਿਕ ਤੱਕ ਪਹੁੰਚਣ ਤੋਂ ਪਹਿਲਾਂ ਹੀ ਫੜ ਲਓ।
- ਗਲਤ ਡਾਟਾ ਨੂੰ ਤੁਰੰਤ ਰੱਦ ਕਰ ਦਿਓ।
- ਆਬਜ਼ਰਵੇਬਿਲਟੀ (observability) ਦੀ ਕਮੀ ਪੰਜ ਵੱਖ-ਵੱਖ ਏਜੰਟਾਂ ਰਾਹੀਂ ਲੰਘਣ ਵਾਲੀ ਰਿਕਵੈਸਟ ਨੂੰ ਡੀਬੱਗ ਕਰਨਾ ਮੁਸ਼ਕਲ ਹੈ। ਟ੍ਰੇਸਿੰਗ (tracing) ਤੋਂ ਬਿਨਾਂ, ਤੁਸੀਂ ਇਹ ਨਹੀਂ ਲੱਭ ਸਕਦੇ ਕਿ ਅਸਫਲਤਾ ਕਿੱਥੇ ਹੋਈ ਸੀ।
- ਹਰ ਰਿਕਵੈਸਟ ਲਈ ਕੋਰੀਲੇਸ਼ਨ ਆਈਡੀ (correlation IDs) ਦੀ ਵਰਤੋਂ ਕਰੋ।
- ਇੱਕ ਸਿੰਗਲ ਵਰਕਫਲੋ ਵਿੱਚ ਹਰ ਸੁਨੇਹੇ ਨਾਲ ਇੱਕੋ ਆਈਡੀ ਲਗਾਓ।
- ਰਿਕਵੈਸਟ ਦੇ ਪੂਰੇ ਰਸਤੇ ਨੂੰ ਦੇਖਣ ਲਈ ਡਿਸਟ੍ਰੀਬਿਊਟਡ ਟ੍ਰੇਸਿੰਗ ਟੂਲਸ ਦੀ ਵਰਤੋਂ ਕਰੋ।
ਇਹ ਗਲਤੀਆਂ ਅਕਸਰ ਇੱਕ ਚੇਨ ਰਿਐਕਸ਼ਨ (chain reaction) ਪੈਦਾ ਕਰਦੀਆਂ ਹਨ। ਇੱਕ ਅਸਫਲਤਾ ਸਰੋਤਾਂ ਦੀ ਕਮੀ (resource exhaustion) ਵੱਲ ਲੈ ਜਾਂਦੀ ਹੈ, ਜਿਸ ਨਾਲ ਹੋਰ ਕ੍ਰੈਸ਼ ਹੁੰਦੇ ਹਨ। ਲਚਕਦਾਰ ਸਿਸਟਮ ਬਣਾਉਣ ਲਈ ਇਹਨਾਂ ਪੰਜ ਖੇਤਰਾਂ ਨੂੰ ਸੁਧਾਰੋ।
Optional learning community: https://t.me/GyaanSetuAi