which indicates the correct total received bitcoins, blockchan.info or bitcoind I'm trying to see how much bitcoins I've received via bitcoind's one method, getreceivedbyaddress specifying a certain address, and after knowing the amount of bitcoins, I soon realized that such as block explorer services, blockchain.info or blockcypher indicates the different amount of bitcoins.
It's interesting that when I specified another address, both bitcoind and block explorer services indicated the same amount.

Since I'm developing a crypto exchange, I need to know a user's deposited amount of bitcoins in order to calculate how much a user has bitcoins rightly, even after letting other users withdraw their bitcoins.

So which is exactly right and reliable?
In general, I would trust my own local node over a block explorer website. If you’re running an exchange you should be running a node, or more likely several nodes on isolated machines, this will allow you to interact with the network without trusting any other person or service to provide you with honest information. You will need to build a system to resolve deposits, based on the info supplied by your node(s). 

Relevant point: bitcoin does not keep track of ‘account balances’, rather the system tracked ‘unspent outputs (UTXOs). To find the balance for an address, a block explorer would need to sum all current UTXOs associated with that address. 

So the source of error may come from how a particular block explorer performs this operation. Blockchain.info, for example, will report the sum of all inputs that have ever paid to a certain address. So if you had 0.1 btc, and you repeatedly spent it back to the same address 30 times, blockchain.info would probably report it as 3btc received (lifetime). This may be an interesting stat, but it isn’t necessarily relevant to your issue of resolving customer deposits.