SOA与微服务的区别

来源:互联网 发布:网上个人信息数据库 编辑:程序博客网 时间:2024/03/28 19:33

        其实这两种架构在原则上确实相当近似,但仍有不同之处。在围绕服务的概念创建架构这一方面,微服务提供了一种更清

晰、定义更良好的方式。这两者之间最关键的区别在与微服务更专注于以自治的方式产生价值。

        对于微服务,我们可以这么理解:经过分离的组件可以各自拥有独立的生命周期,独立部署(Docker),并且按需进行扩

展。不仅如此,这种方式也打破了组件之间的技术依赖,这就允许每个服务各自选择最合适的技术进行实现,即不同的服务甚

至可以采用不同的编程语言来实现,由独立的团队负责。不同的服务通过一下轻量级交互机制来通信,例如RPC、HTTP等们

每个服务定义了明确的边界。(这是一种模块到服务的转变)。微服务的设计思想就是通过将较大的问题分解为几个较小的问

题,让每个问题更易于进行分析,也更利于开发者选择最合适的解决方案。但由此也带来了一些问题,这种分解方式对大问题

进行分解也增加了整个解决方案的复杂度,尤其是在那些使用不同技术或方式创建各种服务的系统中体现得更为明显。这种架

构将系统的整合点推移到了服务之间的接口,因此这些服务的接口需要良好的定义,在系统中也要对服务级别达成一致,并且

还需要定义其他的非功能需求。(明确服务边界)。

        微服务相对于SOA而言,微服务只是一种为经过良好架构设计的SOA解决方案实现的面向服务的交互方案。SOA是一种能

够改变整个企业的IT结构的战略创新,他将企业系统划分为不同的服务,为企业赋予了更大的灵活性......微服务必须能够独立的

进行部署,而SOA服务往往是按照一体性的部署方式实现的,SOA的实现专注于ESB、SOAP、和WSDL。因此,虽然SOA与微

服务技术有一定程度的相似性,但他们的本质完全不同的,

         在微服务架构中,每个操作(或方法)都是独立开发的。而且每个微服务都可以按照自身的需要,独立的整合相应的变更,

每个微服务都实现了独立部署、停用或是重启等操作。在大多数场景中,各个独立的微服务将在一个统一的平台中执行。

         微服务的原则与敏捷软件开发思想是高度一致的,而它与SOA原则的演化的目标也是相同的,则减少传统的企业服务总线

开发的高度复杂性。

         不管是SOA还是微服务,我认为都是一种在开发流程上的一种设计理念的体现,他们都是围绕这服务这一关键字进行讨论,

SOA对服务定义的比较粗粒度无状态服务,而微服务定义的比较细粒度高内聚的服务,而且微服务的服务可以独立部署。

      

        

0 0
原创粉丝点击