微服务和分布式的区别

微服务是什么?

微服务指的就是很小的服务,一个服务代表一个职责,只专注做一件事情。这个服务可以单独部署运行,服务之间通过RPC(服务远程调用,feign之类的)来相互交互

微服务架构又是什么?

在做架构设计的时候,先做逻辑架构,再做物理架构,当你拿到需求后,估算骨哦最大用户量和并发量后,计算单个应用服务器能否满足需求,如果用户量只有几百人,那么单体应用就足以应对。将所有应用部署到同一个服务器中,这么做的优点是服务器成本低,项目复杂度也低,缺点是耦合度比较高,且日后需要添加新功能时就需要对代码进行重排和重新编译,而且项目中只能用到一种语言(java或c++)。如果是很大用户量,且某些功能会被频繁访问,或者某些功能计算量很大,建议将应用拆解为多个子系统,各自负责各自功能,这就是微服务架构。微服务架构在各个服务器间可以通过例如RabitMQ等消息中间件进行通讯,使我们无需关心服务器之前tcp协议之类的问题,也不需要担心语言不通的问题,因为不通服务器可能由不同团队开发,使用的语言可能也不一样。

分布式又是什么?

分布式服务顾名思义就是分散部署在不同的机器上,一个服务可能负责几个功能,是一种面向SOA(面向服务的体系架构)的概念。服务之间也是通过rpc来交互或者是webservice来交互的。逻辑架构设计完后就该做物理架构设计,系统应用部署在超过一台服务器或虚拟机上,且各分开部署的部分彼此通过各种通讯协议交互信息,就可算作分布式部署,生产环境下的微服务肯定是分布式部署的,分布式部署的应用不一定是微服务架构的,为什么这样说呢?比如集群部署就是把相同的应用部署到不同服务器上,但从逻辑上看还是单体应用。

总结

通俗来说,假设去大饭店吃饭就是一个完整的业务的话, 饭店的厨师、洗碗阿姨、服务员就是分布式; 厨师、洗碗阿姨和服务员都不止一个人,这就是集群; 分布式就是微服务的一种表现形式,分布式是部署层面,微服务是设计层面。总得来说,这两者应该是没法比较的,要比较也是为微服务应用和单体应用这两者进行比较。

你可能感兴趣的:(微服务和分布式的区别)