视角
分布式和微服务其实是一种概念上的东西。
这二者对应的概念是不在一个层面上的,所以不可混为一谈!
因为,技术在发展,一些新框架、新概念让人应接不暇,
所以,把这二者区别看清,对我们来说,是很有必要的。
分布式的前世今生
阶段一: 单应用模式
阶段二: 应用和数据库分离
阶段三: 应用服务器集群
阶段四: 数据库压力变大,数据库读写分离
阶段五: 使用搜索引擎缓解读库的压力
阶段六: 引入缓存机制缓解数据库的压力
阶段七:数据库的水平/垂直拆分
阶段八:应用的拆分
分布式的总结
分布式是一种为了满足日益增大的用户量和业务量而进行架构设计的理念,如上图的演化过程所示!
下面这些技术手段只是基于这个理念的一种实现手段而已。
实现手段 != 分布式
在业务应用层面根据领域模型进行业务合理拆分,那么服务拆分以后,各个服务之间如何进行远程通信呢? 通过 RPC 技术,比较典型的有:dubbo、webservice、hessian、http、RMI 等等。
在数据库方面,进行了读写分离、加入搜索引擎、缓存数据库、数据库集群、分库分表的手段
微服务框架
说到微服务,就不得不说Spring Cloud和Dobbo,这个都是当前热门的框架!
而重新纠正一次。
微服务 不等于 Spring Cloud,并且用了Spring Cloud也不一定就是微服务了。
?,说着有点绕,可是细细想来,不无道理。
我们先明白一下微服务的概念。
微服务是啥
微服务是什么?
其实对于大的业务来说,可以看做一个服务。
而如果我们对这个大业务进行拆分(解耦),那么可以拆出几个小的服务,这就是"微服务"。
所以,微服务这个概念是站在业务拆分的角度上进行观察的。
而SpringCloud这些,可以实现微服务架构,可是用了Spring Cloud也不等于就一定就是微服务。
因为,Spring Cloud提供的是一种"技术"层面上的框架。
如果你用Spring Cloud的几个组件进行开发,而不基于"微服务"的理念,把所有东西都耦合到一起,那么这不可以称之为"微服务"。
反之,就算你用Servlet开发一个简单的接口,只要基于微服务的理念,那么就算没有使用到SpringCloud 或者Dubbo也是可以看成微服务!!
哈哈,是否很神奇,有趣有趣。
绕了一圈
上面的七七八八说下来,大家应该有点数了吧。
这二者就是不同层面上的东西,看问题的角度变了,思想明白了,技术就这是手段而已了
参考
- 文章上面关于分布式的图片全部出于文章: 分布式架构的前世今生…
- 分布式和微服务的区别
小小彩蛋
- jfun-cloud简单的分布式小项目
- 作者分布式微服务相关的技术文档<<Jfun微服务技术>>(免费、代码开源)欢迎 关注收藏
- 参考文章:https://blog.csdn.net/zhonglunsheng/article/details/83153451