十万个为什么之SOA服务,服务治理,微服务

SOA与服务治理

SOA:  面向服务的体系结构 (SOA) 是一项引人注目的技术,用于开发与业务模型保持最佳一致性的软件应用程序。

服务治理:  也称为SOA治理,指的是用来管理SOA的采用和实现的过程。

SOA(面向服务的体系结构)概念由来已久,在10多年前便开始进入到我们广大软件开发者的视线中。SOA是一种粗粒度、松耦合服务架构,服务之间通过简单、精确定义接口进行通讯,不涉及底层编程接口和通讯模型。SOA可以看作是B/S模型、Web Service技术之后的自然延伸。

服务治理要点

  • 服务定义(服务的范围,接口和边界)
  • 服务部署生命周期(各个生命周期阶段)
  • 服务版本治理(包括兼容性)
  • 服务迁移(启用和退役)
  • 服务注册中心(依赖关系)
  • 服务消息模型(规范数据模型)
  • 服务监视(进行问题确定)
  • 服务所有权(企业组织)
  • 服务测试(重复测试)
  • 服务安全(包括可接受的保护范围)

SOA服务落地 (dubbo的实践使用)

直到2011年10月27日,阿里巴巴开源了自己的SOA服务化治理方案的核心框架Dubbo,服务治理和SOA的设计理念开始逐渐在国内软件行业中落地,并被广泛应用。

Dubbo是一个高性能服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案,使得应用可通过高性能RPC实现服务的输出和输入功能,和Spring框架可以无缝集成。

作为一个分布式服务框架,以及SOA治理方案,Dubbo主要包括

  • 高性能NIO通讯及多协议集成
  • 服务动态寻址与路由
  • 软负载均衡与容错
  • 依赖分析与服务降级

Dubbo的最大特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度的松耦合),从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色.

Dubbo包含远程通讯,集群容错和自动发现三个核心部分,提供透明化的远程方法调用,实现像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入,同事具备软负载均衡及容错机制,可在内网代替F5等硬件负载均衡器,降低成本,减少单点,可以实现服务自动注册与发现,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者

什么是微服务

微服务架构在某种程度上是面向服务的架构SOA继续发展的下一步。

微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。 如用户管理、用户角色、电子商务车、搜索引擎、社交媒体登录等。此外,它们是完全独立的,也就是说它们可以写入不同的编程语言并使用不同的数据库。集中式服务管理几乎不存在,微服务使用轻量级HTTP、REST或Thrift API进行通信。 

SOA vs. MicroServices

下面进一步解释上表所述的不同之处:

  • 开发方面 - 在这两种体系结构中,可以使用不同的编程语言和工具开发服务,从而将技术多样性带入开发团队。开发可以在多个团队中组织,但是在SOA中,每个团队都需要了解常见的通信机制。另一方面,使用微服务,服务可以独立于其他服务运行和部署。因此,频繁部署新版本的微服务或独立扩展服务会更容易。您可以在这里进一步阅读有关微服务的这些好处。
  • “上下文边界” - SOA鼓励组件的共享,而微服务尝试通过“上下文边界”来最小化共享。上下文边界是指以最小的依赖关系将组件及其数据耦合为单个单元。由于SOA依靠多个服务来完成业务请求,构建在SOA上的系统可能比微服务要慢。
  • 通信 - 在SOA中,ESB可能成为影响整个系统的单一故障点。由于每个服务都通过ESB进行通信,如果其中一个服务变慢,可能会阻塞ESB并请求该服务。另一方面,微服务在容错方面要好得多。例如,如果一个微服务存在内存错误,那么只有该微服务会受到影响。所有其他微服务将继续定期处理请求。
  • 互操作性 - SOA通过消息中间件组件促进了多种异构协议的使用。微服务试图通过减少集成选择的数量来简化架构模式。因此,如果您想要在异构环境中使用不同协议来集成多个系统,则需要考虑SOA。如果您的所有服务都可以通过相同的远程访问协议访问,那么微服务对您来说是一个更好的选择。
  • 大小Size - 最后一点但并非最不重要的一点,SOA和微服务的主要区别在于规模和范围。微服务架构中的前缀“微”是指内部组件的粒度,意味着它们必须比SOA架构的服务往往要小得多。微服务中的服务组件通常有一个单一的目的,他们做得很好。另一方面,在SOA服务中通​​常包含更多的业务功能,并且通常将它们实现为完整的子系统。 

简单结论: 因为它们服务于不同的目的,微服务和SOA确实是不同类型的体系结构。SOA更适合大型复杂企业应用程序环境,微服务架构,更适合于较小和良好的分割,基于Web的系统,正在开发移动或Web应用程序,那么微服务作为开发人员可以为您提供更大的控制权。 

以上部分摘抄至: https://blog.csdn.net/chszs/article/details/78515231

微服务落地(SpringCloud的实践使用)

Spring Cloud 基于 Spring Boot,为微服务体系开发中的架构问题,提供了一整套的解决方案——服务注册与发现,服务消费,服务保护与熔断,网关,分布式调用追踪,分布式配置管理等。

Spring Boot 是 Spring 的一套快速配置脚手架,使用默认大于配置的理念,用于快速开发单个微服务。

重点:

  • 基于 Spring Boot
  • 云服务、分布式框架集合(众多)

核心功能:

  • 分布式/版本化配置
  • 服务注册和发现
  • 路由
  • 服务和服务之间的调用
  • 负载均衡
  • 断路器
  • 分布式消息传递

 

Dubbo 和 Spring Cloud 比较

使用 Dubbo 构建的微服务架构就像组装电脑,各环节我们的选择自由度很高,但是最终结果很有可能因为一条内存质量不行就点不亮了,总是让人不怎么放心,但是如果你是一名高手,那这些都不是问题;而 Spring Cloud 就像品牌机,在 Spring Source 的整合下,做了大量的兼容性测试,保证了机器拥有更高的稳定性,但是如果要在使用非原装组件外的东西,就需要对其基础有足够的了解。

以上部分摘抄至: https://www.cnblogs.com/xishuai/archive/2018/04/13/dubbo-and-spring-cloud.html

总结

java知识内容博大精深,以上如果有什么不对的,或者有特殊见解的,请留言一起探讨;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章