微服务通常根据业务来划分边界,粒度通常是一个独立的业务,具体多大合适不是一开始就决定的,这是一个逐步拆分细化的过程,李智慧老师说任何复杂的架构都是从最简单的应用慢慢演化过来的,就像当年的淘宝发展到现在。单体应用,为了高可用,需要集群多实例部署。查询太慢,访问太慢,加缓存,DB读写分离。业务发展到一定复杂程度,单体应用太庞大,会产生一系列问题。例如开发方面,一个工程几十上百人不停的改动,如何协作,一个人的代码有问题,影响了所有业务。每一个版本的迭代与发布,开发、测试、沟通得花大把时间,可能还会出错,牵一发而可能动全身。运维上,发布一次可以睡个午觉,发布一次影响线上所有功能。资源方面,扩容到几十上百台机器的时候,DB、NoSQL等的连接数撑爆了……