微服务

来自智得网
跳转至: 导航、​ 搜索

简介

Java技术栈的微服务架构

微服务一般指一种架构思想,即把应用程序拆解为很多独立的微型组件或者服务,服务之间通过远程过程调用(RPC)或者消息的方式进行交互。

微服务架构一般会根据不同的功能模块,基于不同的业务,将系统拆分成若干个独立的进程,进程之间会通过同步RPC或者异步消息的方式进行通信。

微服务因为服务数量较多,所以一般会提供独立的网关服务提供统一的对外出口。

微服务架构相较传统的单体架构,有以下优势:

  • 单体应用只能由单一的技术栈进行开发,而微服务架构下,可以采用混合技术栈研发的模式,每个组件可以使用自己的技术栈。
  • 单体应用通用业务逻辑复杂,给开发带来的较高的复杂度,因为耦合的业务逻辑很容易出现变更风险,而且在发布阶段也会因为不同的功能版本耦合在一个应用中而产生更高的风险,而微服务架构下,每个组件的功能更加单一,逻辑更加简单,所以可以提升研发效率,也更方便部署运维。
  • 微服务因为把业务逻辑打散在多个组件,所以提供更高的鲁棒性,天然实现了错误隔离,较少会出现整体不可用的情况。

原理

原则

架构的第一性要求是简单,微服务架构存在数据一致性问题,性能消耗,维护成本高等问题,所以从单体架构迁移到微服务架构一定要有充分的推演逻辑进行支撑,比如单体架构的复杂度过高,已经不能满足后续的业务迭代,单体架构的性能出现问题,必须进行微服务拆分满足性能问题,或者单体服务在组织协助层面已经不能满足当前的需求等。

微服务的拆分可以分为水平拆分,垂直拆分,横向功能拆分等。

水平拆分主要是按照服务承担的职责进行划分,例如分为接入层,逻辑层,存储层等。

垂直拆分按照业务功能拆分为不同的微服务。

通信

微服务之间的通信可以采用Http,SOA,RPC等方式进行通信。