R.F.
I have 2 girls, 7 and 9 years old. My older daughter ran our house at age 2. I tried many things, even spanking. I found that being consistent (in whatever way you choose to raise your children) is best. Also, you have to show them that their behavior does not effect you. It is impossible to expect you not to get angry, just don't show it. No matter what. We all get frustrated, it's only natural. Your children will see your frustration and see it as lack of control. I know it seems a little grown-up for a 3 year old, but they see your lack of control over your emotions as them having control over you.
I happened to let my older daughter cry it out (when she was 2 1/2). We put a gate in her bedroom doorway. She would be crying and yelling for me at the gate every night for a week or two. It was very hard. I would be crying down stairs while she was crying up stairs. She would be yelling for me and it broke my heart (and woke up the little one) but eventually she would pass out right next to the gate. If she climbed over the gate, or knocked it down, I would go up stairs and put her back on her bed and replace the gate w/o saying a word, and with no emotion. I did not even make eye contact. She is trying to ellicit a response from you and when she sees that she is not getting it, eventually she will stop trying. It is a long bumpy road, but when you see it is working, you will be encouraged to keep at it. I couldn't imagine how bad it would be to regain control over my house and family when I had 2 girls that realized that they ran the house, so I painstakingly took it back bit-by-bit. I am so glad I did it then. Because of all of my hard work then, I now have 2 really good kids. Sure they can be stinkers once in a while, but I run the house and they know it.
I wish you lots of Luck, Calmness, and Patience!