SOA

SOA (Service-Oriented Architecture ),也就是⾯向服务的架构,从语 义上说,它和⾯向过程、⾯向对象、⾯向组件的思想是⼀样的,都是⼀种软件组建及开发的⽅式

核⼼⽬标是把⼀些通⽤的、会被多个上层服务调⽤的共享业务提取成独⽴的基础服务。这些被提取出来的共 享服务相对来说⽐较独⽴,并且可以重⽤。所以在SOA中,服务是最核⼼的抽象⼿段,业务被划分为⼀ 些粗粒度的业务服务和业务流程。

提取出了⽤户服务、库存服务、商品服务等多个共享服务。在SOA中,会采⽤ESB (企业服务总线)来作为系统和服务之间的通信桥梁,ESB本身还提供服务地址的管理、不同系统之间 的协议转化和数据格式转化等。调⽤端不需要关⼼⽬标服务的位置,从⽽使得服务之间的交互是动态 的,这样做的好处是实现了服务的调⽤者和服务的提供者之间的⾼度解耦。

soap到springboot接口对接_soap到springboot接口对接


总的来说,SOA主要解决的 问题是:

  • 信息孤岛。
  • 共享业务的重⽤。

1、springcloud基础

1.1什么是微服务

  • 一种架构风格。
  • 开发单个应用作为一系列小型服务的套件,其中每个服务都运行在自己的进程中,并且通过轻量级的机制实现彼此间的通信, 这通常是HTTP资源API。
  • 这些服务是围绕着业务功能构建的,并且可以通过完全自动化 的部署机制进行独立部署。
  • 这些服务的集中式管理做到了最小化(例如docker相关技 术),每一种服务都可以通过不同的编程语言进行编写,并且 可以使用不同的数据存储技术。

1.2微服务的特点

总结微服务应具有如下特点

  1. 微服务是⼀种架构⻛格。
  2. 微服务把⼀个应⽤拆分为⼀组⼩型服务。
  3. 微服务每个服务运⾏在⾃⼰的进程内,也就是可独⽴部署和升级。
  4. 微服务的服务之间使⽤轻量级HTTP交互,⼀般使⽤Json交换数据。 服务围绕业务功能拆分。
  5. 可以由全⾃动部署机制独⽴部署。
  6. 去中⼼化,服务⾃治。服务可以使⽤不同的语⾔、不同的存储技术 。

1.3微服务的优缺点

优点:

  1. 服务简单,便于学习和上手,相对容易维护
  2. 独立部署,灵活扩展
  3. 技术栈丰富,不同模块之间可以使用不同的技术

缺点

  1. 运维成本太高----需要过多的服务器,颗粒细化,维护成本高
  2. 接口可能不匹配----session一致性需要去保持
  3. 代码可能重复
  4. 架构复杂度提高—前后端分离,Nginx配置以及多服务的部署,运维复杂性增加。

1.4微服务的两大门派

微服务有两个框架,springcloud 和 dubbo
dubbo: 高性能、轻量级的开源 Java RPC 框架,它提供了三 大核心能力:面向接口的远程方法调用,智能容错和负载均衡, 以及服务自动注册和发现 ,

dubbo和springcloud的异同

  • 1 dubbo 采用的是传输层 tcp 协议,是二进制传输的,占用带宽较少,序列化采用的是 jdk 自带的序列化协议。springcloud 是应用层 http 协议,占用带宽比较多,同时 springcloud 采用的是 json 报文传输,消耗会比较大。
  • 2 dubbo 调用使用的是长链接,适合传输数据量小的包,而对于 springcloud 是短连接,适合传输大数据量的信息,比如图片、文本之类的。
  • 3 dubbo 开发需要依赖 jar 包,对依赖的管理比较复杂。springcloud 的接口协议比较松散,约束性不强
  • 5 注册中心使用的不同,dubbo 默认使用的是 zk, 而 springcloud 使用的注册中心为 eureka, 前者保证的是 cp ,而后者保证的是 ap, 但是随着 springcloud alibaba 的出现,又引入了 nacos 这样的神器,兼有注册中心和配置中心的功能

soap到springboot接口对接_spring_02

文档质量对比

  • Dubbo的文档可以说在国内开源框架中算是一流的,提供了 中文与英文两种版本
  • Spring Cloud文档体量大,更多的是偏向整合,更深入的使 用方法还是需要查看其整合组件的详细文档

1.5微服务拆分

什么时候进行服务拆分

第⼀阶段的主要⽬标是快速开发和验证想法
进⼀步增加更多的新特性来吸引更多的⽬标⽤户
同时进⾏开发的⼈员超过10⼈,这个时候就该考虑进⾏服务化 拆分了

不适合拆分的情况

小团队,技术基础较薄弱
流量不高,压力小,业务变化也不大
对延迟很敏感的低延迟高并发系统
业务稳定、迭代周期长

服务化拆分的两种姿势

  • 纵向拆分
  • 横向拆分

soap到springboot接口对接_soap到springboot接口对接_03

1.6微服务的重要模块

  1. 注册中⼼:服务提供者和消费者,能够从注册中⼼注册和得到服务信息。
  2. 配置中⼼:在微服务架构中设计服务较多需要对于配置⽂件统⼀管理。
  3. 服务链路追踪:对于服务之间的负载调⽤,要能通过链路追踪,得到具体参与者,调⽤链路出现问 题能够快速定位。
  4. 负载均衡:服务调⽤服务会采⽤⼀定的负载均衡策略,来保证服务的⾼可⽤。
  5. 服务容错:通过熔断、降级服务容错策略,对系统进⾏有效的保护,降级是在服务或依赖的服务异 常时,返回保底数据,熔断是指依赖服务多次失效,则熔断器打开,不再尝试调⽤,直接返回降级 信息。熔断后,定期探测依赖服务可⽤性,若恢复则恢复调⽤。
  6. 服务⽹关:⽤户请求过载时进⾏限流、排队、过载保护、⿊⽩名单、异常⽤户过滤拦截等都可以通 过服务⽹关实现。
  7. 服务发布与回滚:蓝绿部署、灰度、AB Test等发布策略,可快速回滚应⽤。
  8. 服务动态伸缩、容器化:根据服务负载情况,可快速⼿动或⾃动进⾏节点增加和减少。