就目前来说,大部份开发者把一个Dubbo接口,或者一个RPC的调用当做服务化来理解,就我个人来说,这是非常不对的一个理解,Dubbo,RPC充其量只能算是一个接口调用,离服务化还差着十万八千里。
那么我理解的服务化是什么呢?我理解的有如下几点:
服务化无关远程,本地,没有Dubbo,RPC,也一样要有服务化。
业务边界清晰
高内聚,低耦合
服务可复用
就拿很多老代码来说,就跟记流水账一样,一个servlet或者一个action把所有需要处理的东西都处理完了,这样同样的业务逻辑假设在另外一个入口需要的时候,基本上就是把代码COPY过去,导致维护起来非常麻烦,当业务需求变动的时候常常需要改动非常多的点,工作量变的非常大,甚至遗漏一些点导致故障。
为了避免这些问题的产生,所以有了服务化的概念,简单的来说,服务化就是一个SERVICE层,都知道SERVICE其实是分好多层的,有封装dao层的service(为了一个数据的整体性,比如一对多的数据获取),还有业务service,其中业务service又因为不同的业务粒度,拆分成更多的service,但是这些service都需要RPC化么?答案当然是否定的,我们要对外暴露的SERVICE其实是最顶层的SERVICE,将我们底层的SERVICE细节给隐藏起来,并不是所有的service都需要对外暴露的,也不要将所有的细节都暴露给第三方。
那么有了服务化后有那些好处?
业务入口统一,修改业务的时候就会非常简单。
服务可扩展性强。
剃除冗余代码。