SpringCloud学习系列之一:基础概念介绍

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
EMR Serverless StarRocks,5000CU*H 48000GB*H
网络型负载均衡 NLB,每月750个小时 15LCU
简介: 本系列博文主要为SpringCloud学习的博文系列。到底什么是微服务SpringCloud组件介绍

引言

本系列博文主要为SpringCloud学习的博文系列。

  • 到底什么是微服务
  • SpringCloud组件介绍

一、到底什么是微服务

"Microservice" 即微服务,在Martin Fowler的博文中介绍了微服务的具体概念。它是一种系统架构的设计风格。

以下是维基百科关于微服务的解释和说明:


微服务的起源是由 Peter Rodgers 博士于 2005 年度云端运算博览会提出的微 Web 服务(Micro-Web-Service) 开始,Juval Löwy 则是与他有类似的前导想法,将类别变成细粒服务 (granular services),以作为 Microsoft 下一阶段的软件架构,其核心想法是让服务是由类似 Unix管道的存取方式使用,而且复杂的服务背后是使用简单 URI 来开放界面,任何服务,任何细粒都能被开放 (exposed)。这个设计在 HP的实验室被实现,具有改变复杂软件系统的强大力量。


2014年,Martin Fowler 与 James Lewis共同提出了微服务的概念,定义了微服务是由以单一应用程序构成的小服务,自己拥有自己的行程与轻量化处理,服务依业务功能设计,以全自动的方式部署,与其他服务使用HTTP API 通讯。同时服务会使用最小的规模的集中管理 (例如 Docker) 能力,服务可以用不同的编程语言与数据库等元件实作。


它以具备单一责任与功能的软件单元为基础,每个服务都有自己的独立进程,它们通过模块的方法将它们进行组合,构成大型复杂的应用程序,每个独立运行的进程可以采用不同的编程语言实现,同时它们之间采用轻量级的通讯方式(HTTP API)实现各个服务之间的通信。这些服务可以被独立部署,同时它们都是围绕着业务功能进行构建的。

如果可以进行类比的话微服务就像一个人身体当中的各个器官,而人就是一个复杂的系统平台。每个器官都各司其职,完成自己的使命,如胃负责消化食物、肝部负责解毒、肾负责生成尿液、排泄代谢废物的功能等等。正是因为各个器官的相互协作,才构成人这个复杂系统。


2、微服务带来的问题

(1)运维复杂性

大量微服务构成庞大的分布式应用,这些微服务分布在多台服务器中,当分布式系统较为复杂时,所带来的软件运维的人力物力成本的提高。

(2)数据一致性

由于微服务的大多数进行了分布式部署,那么分布在各个服务器中的数据如何保证一致性成为了难题;

(3)分布式系统的复杂性

各个微服务可以独立部署,那么在分布式环境下,接口调用、日志追踪、分布式事务以及异步信息等带来的复杂性更高。

分布式架构示意图所示:

image.png

二、SpringCloud组件介绍

SpringCloud是Java开发分布式系统的开发套件,对分布式系统中需要的各种组件进行了封装。开发人员可以方便的以此作为基础进行开发,方便的构建分布式服务。主要提供了服务治理、断路器、控制总线、负载均衡等等,主要包括以下几个组件:

(1)SpringCloud Eureka---------------服务治理(服务自动化治理与发现)

image.png

SpringCloud Ribbon---------------客户端负载均衡

负载均衡是分布式系统中实现高可用、缓解请求压力以及服务能力扩容的重要手段。

image.png

SpringCloud Hystrix---------------断路器

服务容错保护,在微服务架构中,会包含很多种微服务,当其中的某个微服务发生异常时,如果有其他服务以来此微服务,那么可能胡造成业务链路的中断,影响平台的稳定运行。所以我们需要一种保护机制来保证系统的稳定性。

断路器的示例如下图所示:

image.png

图片来自于网络

SpringCloud Config---------------分布式配置服务

主要用于福分布式系统中的各个微服务进行集中式的配置支持,实现了对于服务端与客户端中环境变量与属性配置的抽象映射。

SpringCloud Zuul---------------API网关服务

对于系统外部的请求进行分派和调度,实现负载均衡请求路由等功能。

SpringCloud是一个开发套件,包含了很多适用于分布式服务的的各个组件。以上只介绍了部分,如果想要了解更多,可以查看SpringCloud官方网站。


相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
30天前
|
Dubbo Java 应用服务中间件
Dubbo学习圣经:从入门到精通 Dubbo3.0 + SpringCloud Alibaba 微服务基础框架
尼恩团队的15大技术圣经,旨在帮助开发者系统化、体系化地掌握核心技术,提升技术实力,从而在面试和工作中脱颖而出。本文介绍了如何使用Dubbo3.0与Spring Cloud Gateway进行整合,解决传统Dubbo架构缺乏HTTP入口的问题,实现高性能的微服务网关。
|
1月前
|
负载均衡 Java API
【Spring Cloud生态】Spring Cloud Gateway基本配置
【Spring Cloud生态】Spring Cloud Gateway基本配置
37 0
|
4月前
|
资源调度 Java 调度
Spring Cloud Alibaba 集成分布式定时任务调度功能
Spring Cloud Alibaba 发布了 Scheduling 任务调度模块 [#3732]提供了一套开源、轻量级、高可用的定时任务解决方案,帮助您快速开发微服务体系下的分布式定时任务。
14933 30
|
3月前
|
Java Spring
【Azure Spring Cloud】Spring Cloud Azure 4.0 调用Key Vault遇见认证错误 AADSTS90002: Tenant not found.
【Azure Spring Cloud】Spring Cloud Azure 4.0 调用Key Vault遇见认证错误 AADSTS90002: Tenant not found.
|
4月前
|
负载均衡 Java Spring
Spring cloud gateway 如何在路由时进行负载均衡
Spring cloud gateway 如何在路由时进行负载均衡
488 15
|
3月前
|
Java Spring 容器
【Azure Spring Cloud】在Azure Spring Apps上看见 App Memory Usage 和 jvm.menory.use 的指标的疑问及OOM
【Azure Spring Cloud】在Azure Spring Apps上看见 App Memory Usage 和 jvm.menory.use 的指标的疑问及OOM
|
3月前
|
存储 Java Spring
【Azure Spring Cloud】Azure Spring Cloud服务,如何获取应用程序日志文件呢?
【Azure Spring Cloud】Azure Spring Cloud服务,如何获取应用程序日志文件呢?
|
3月前
|
SQL Java 数据库连接
【Azure Spring Cloud】Azure Spring Cloud connect to SQL using MSI
【Azure Spring Cloud】Azure Spring Cloud connect to SQL using MSI
|
4月前
|
Java Spring
spring cloud gateway在使用 zookeeper 注册中心时,配置https 进行服务转发
spring cloud gateway在使用 zookeeper 注册中心时,配置https 进行服务转发
111 3
|
3月前
|
Java 开发工具 Spring
【Azure Spring Cloud】使用azure-spring-boot-starter-storage来上传文件报错: java.net.UnknownHostException: xxxxxxxx.blob.core.windows.net: Name or service not known
【Azure Spring Cloud】使用azure-spring-boot-starter-storage来上传文件报错: java.net.UnknownHostException: xxxxxxxx.blob.core.windows.net: Name or service not known