转载自:http://geek.csdn.net/news/detail/72973
个人理解:
(1)通过uid对数据库和表进行拆分。通过uid取模来确定数据库编号,个位数确定订单表编号。
(2)分库分表之后面临的问题:全局唯一id。 UUID可以,但是字符串太长;可以采用twitter的snowflake。
(3)通过订单要能获取到所在分库分表,在订单表中记录相应信息。【为了支持以后的扩容,分库分表信息可以优化为最多支持64台机器的情况】
(4)数据库的一致性如何保证,当需要保持一致性的数据量很大的时候,可以考虑加入消息队列来进行处理。
(5)通过主从数据库保证高可用。最优方案如下:
(6)根据数据的重要性可以对数据进行分级,比如一些重要数据可以直接操作数据库。一些数据可以走redis缓存,一些数据可以走内存等等。
(7)如果突然有大量的请求如何处理?可以通过粗细管道来实现。nginx的商业版有支持。