microservices architecture and SOA

微服务架构(microservices architecture)是服务导向架构(service-oriented architecture,缩写 SOA)的升级。

每一个服务就是一个独立的部署单元(separately deployed unit)。这些单元都是分布式的,互相解耦,通过远程通信协议(比如REST、SOAP)联系。

微服务就是应用的各项核心功能,而且这些服务均可独立运行。

微服务和单体服务

单体服务就是所有功能都写在一个工程里
微服务把多个功能写在多个工程里

举例子一个电子商城包含一个商品搜索的功能,如果是单体服务就和电商项目写在一个工程里,但是在微服务架构下,就拆分为一个独立的搜索项目

microservices architecture and SOA_第1张图片

什么是SOA服务导向架构

面向服务的架构(SOA)是一种软件设计,可通过在网络上使用基于通用通信语言的服务接口,让软件组件可重复使用

通过使用标准网络协议(如 SOAP、JSON、ActiveMQ 或 Apache Thrift)来开放服务以发送请求或访问数据,SOA 消除了开发人员必须从头开始进行集成的困扰。

在 面向服务的架构模式中,服务使用"松散耦合"系统进行通信。这是一种将系统或网络中的组件(也称为"元素")进行互联的方式,其目的是在传递信息或协调业务流程的同时减少它们之间的依赖程度。

SOA 和微服务的不同之处:

  1. 二者的主要区别是它们的范围:
    SOA 是一种企业级的架构方案,而微服务则是应用开发团队的一种实施策略
  2. 它们与各自组件进行通信的方式也有所不同:
    SOA 使用 ESB,而微服务则可以通过与语言无关的 API 彼此进行无状态通信。不仅如此,微服务中与语言无关的 API 还允许开发团队选择自己想用的工具。凡此种种,让微服务变得生存力更强,也更加灵活。

ESB:企业服务总线,即ESB全称为Enterprise Service Bus,指的是传统中间件技术与XML、Web服务等技术结合的产物。ESB提供了网络中最基本的连接中枢,是构筑企业神经系统的必要元素。

微服务架构分成三种实现模式。

  • RESTful API 模式:服务通过 API 提供,云服务就属于这一类
  • RESTful 应用模式:服务通过传统的网络协议或者应用协议提供,背后通常是一个多功能的应用程序,常见于企业内部
  • 集中消息模式:采用消息代理(message broker),可以实现消息队列、负载均衡、统一日志和异常处理,缺点是会出现单点失败,消息代理可能要做成集群

使用微服务要注意的事

设计阶段,单微服务必须要满足以下的条件,才符合微服务的基本要求:

  • 标准的 REST 风格接口(基于 HTTP 和 JSON 格式)
  • 独立部署,避免共享数据库(避免因为数据库而影响整个分布式系统)
  • 业务上的高内聚,减少依赖(从设计上要避免服务过大或者太小)

庞大的分布式系统,需要强大基础设施来支撑,微服务涉及哪些基础设施?

  • CI/CD和自动化(分布式系统几乎不可能通过人工手动发布)
  • 虚拟化技术(要保证微服务运行环境隔离,目前行业主流的是使用 Docker 容器)

你可能感兴趣的:(微服务,java,架构)