分布式和微服务区别,一分钟弄懂什么是分布式和微服务

java微服务和分布式的区别有哪些?

分布式和微服务区别,一分钟弄懂什么是分布式和微服务


这个问题已经收藏了一个多月了,一直在考虑如何回答这个问题,总结了很长时间终于有了一些感悟(之前一直都是只可意会不可言传的感觉),和大家分享一下,如果有不同的建议,欢迎大家留言指正 。分布式和微服务首先 ,我认为微服务就是分布式框架的一种 。分布式的思想就是把一个系统的不同模块,部署在不同的服务器上,以应对高并发的问题 。
SOA是一种分布式架构,把业务系统分成多个子系统,提供不同的服务,再通过服务组合、编排实现业务流程;通常在SOA架构中,ESB企业服务总线扮演了重要的角色 。微服务是SOA的升华,如果非要说点儿不同的,那么微服务更加强调服务的细分和专业,去ESB总线、去中心化,部署粒度更细,服务扩展更灵活 。微服务不只是技术架构很多同学一说微服务,就说这是一种技术架构,有的推荐使用Dubbo,有的推荐使用Spring Cloud 。
我认为,微服务不单单是一种技术架构,也涉及到了管理、组织架构 。大多数的公司,需求、开发、测试、运维都是独立的团队,这实际上是有悖于微服务快速迭代的思想;在微服务的架构下,一个服务应该是由一个团队全权负责的 。不过组织架构方面的事情,真的不是我们能说了算的 。必须要用微服务?我觉得没有必要为了微服务,而微服务;有的公司把服务拆分,但是数据库依然是同一个库,依然是一个项目直接掉另外一个项目的接口,然后对外就宣称完成了微服务的改造...架构设计还是要根据需求背景、团队开发能力、软硬件实力综合来考虑 。
在微服务架构中,我们还需要ESB吗?
分布式和微服务区别,一分钟弄懂什么是分布式和微服务


微服务架构可以理解为一种架构风格,将一个大型复杂软件应用由一个或多个微服务组成 。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的 。每个微服务仅关注于完成一件任务并很好地完成该任务 。在所有情况下,每个任务代表着一个小的业务能力 。对于微服务架构来说,他们更专注于对于系统应用和业务的解耦,可以达到快速开发,快速迭代的目的,而ESB则是专注将各个系统之间服务集成和转换,强调的是系统间的强强关联,看上去和微服务的理念是相冲突的,在同一环境下只能存在一个 。
但实际情况并不是这样的 。1. 微服务架构虽然优势很多,但是还处在一个发展过程,虽然目前很多的产品都在慢慢转型,但是还是需要时间,对于相对复杂的业务,并不能完全实现,而ESB能够做的,更多的是协助业务系统进行服务的转换,服务的开发,弥补业务系统当前环境下的不足,满足业务场景的快速对接和实现,相比理想化的结果,利用现有资源,更能进行快速的反应和实现 。
2. 虽然微服务架构能够实现快速的开发和迭代,但是随着业务的复杂,系统的增多,对接难度也会变大,小改动可能变动一方改动,大改动双方都要改动,成本和周期都是需要衡量的,而ESB虽然前期投入很高,但是从长远来看,成本和开发周期都是最低的,对于客户来说,也是更容易接受的 。3. 让一个企业所有的业务系统都能支持微服务的开发是不可能的,相对于版本较低的产品,可能都不支持开发,有可能服务都没有,这种情况下,更多的是做好IT资产的复用和兼容,微服务和ESB相结合的方式,只有这样,才能获取更多的市场,满足更多业务场景的快速实现 。

推荐阅读