好处一:调用方便
在有服务层之前,业务方访问用户数据,需要通过DAO拼装SQL访问。
有了服务层之后,业务方通过RPC访问用户数据,就像调用一个本地函数一样,非常方便。

好处二:复用性,防止代码拷贝
所有user数据的存取,都通过user-service来进行,代码只此一份,不存在拷贝。
升级一处所有都生效,bug修改一处所有都修改。

好处三:专注性,屏蔽底层复杂度

在没有服务层之前,所有业务线都需要关注缓存、分库分表这些细节。

在有了服务层之后,只有服务层需要专注关注底层的复杂性了,向上游屏蔽了细节。

好处四:SQL质量得到保障

原来是业务访问代码,然后拼接sql访问数据库。

有了服务层之后,所有的SQL都是服务层提供的,业务线不能再为所欲为了。底层服务对于稳定性的要求更好的话,可以由更资深的工程师维护,而不是像原来SQL难以收口,难以控制。

好处五:数据库解耦

原来各个业务的数据库都混在一个大库里,相互join,难以拆分。

服务化之后,底层的数据库被隔离开了,可以很方便的拆分出来,进行扩容。

好处六:提供有限接口,无限性能
在服务化之前,各业务线上游想怎么操纵数据库都行,遇到了性能瓶颈,各业务线容易扯皮,相互推诿。
服务化之后,服务只提供有限的通用接口,理论上服务集群能够提供无限性能,性能出现瓶颈,服务层一处集中优化。

注:服务化不能解决所有问题,如果没有碰到这些问题,架构未必需要服务化。架构设计一定要依托于业务。