I have found that Shaka can be a royal pain in the butt, or a great asset. Try this: Before attacking you (at least if he has other options), he will usually ask for your help against another civ. Agree to do so. Once you have fought on the same side of a war, he will remain loyal for a long time. Periodically gift him some coin or a unit. Trade with him. Open borders. **Build City Walls.** Most of the time, you can keep peace with him for a long time - while he wrecks havoc on all your other neighbors (whom you are also helping....). By the time he gets around to dealing with his "friend" (you), you should have vastly superior technology and be able to deal with him. (If you can't out-tech Shaka, you are likely playing at the wrong level.)
Or, you could take him out before he has those *?@! impis.
Or, you could take him out before he has those *?@! impis.