别再用老掉牙的技术了!试试微服务架构!从零教你认识、开发、部署微服务

从0带你认识、开发、部署微服务(一)

1.认识微服务

随着互联网行业的发展,对服务的要求也越来越高,服务架构也从单体架构逐渐演变为现在流行的微服务架构。这些架构之间有怎样的差别呢?

1.0.目标

微服务架构的优缺点

1.1.单体架构

单体架构:将业务的所有功能集中在一个项目中开发,打成一个包部署。

单体架构的优缺点如下:

优点:

  • 架构简单
  • 开发、运维、部署成本低
  • 适合小型项目

缺点:

  • 耦合度高(维护困难、升级困难)
  • 一个节点出问题,全部受到影响
1.2.分布式架构

分布式架构:根据业务功能对系统做拆分,每个业务功能模块作为独立项目开发,称为一个服务。

分布式架构的优缺点:

优点:

  • 降低服务耦合
  • 有利于服务升级和拓展
  • 开发部署相对简单

缺点:

  • 服务调用关系错综复杂
  • 开发、维护费用增多
  • 技术成本高

分布式架构虽然降低了服务耦合,但是服务拆分时也有很多问题需要思考:

  • 服务拆分的粒度如何界定?
  • 服务之间如何调用?
  • 服务的调用关系如何管理?

人们需要制定一套行之有效的标准来约束分布式架构。

1.3.微服务

微服务的架构特征:

  • 单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责
  • 自治:团队独立、技术独立、数据独立,独立部署和交付
  • 面向服务:服务提供统一标准的接口,与语言和技术无关
  • 隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题

微服务的上述特性其实是在给分布式架构制定一个标准,进一步降低服务之间的耦合度,提供服务的独立性和灵活性。做到高内聚,低耦合。

因此,可以认为微服务 是一种经过良好架构设计的分布式架构方案

那么有没有现成的微服务方案呢?

市面上最常用的是SpingCloud,所以很多人产生了错觉,认为SpringCloud就是微服务,微服务就是SpringCloud。这是绝对错误的,首先微服务是一个分布式架构方案,需要很多其它的工具一起使用,而SpringCloud就是粘合其它工具的一个粘合剂。而且市面上还有一个强大的对手。Dubbo也是一种微服务架构。阿里和很多大厂都在用。

目前市场上主流方案有两种

  • Dubbo:这是阿里研发的方案,是最先提出的微服务解决方案,后又交由Apache基金会负责管理。Apache Dubbo 是一款易用、高性能的 WEB 和 RPC 框架,同时为构建企业级微服务提供服务发现、流量治理、可观测、认证鉴权等能力、工具与最佳实践。
  • SpringCloud:Spring Cloud 为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理、服务发现、熔断器、智能路由、微代理、控制总线、短期微服务和合约测试)。分布式系统的协调导致了样板模式,使用 Spring Cloud 开发人员可以快速建立实现这些模式的服务和应用程序。它们可以在任何分布式环境中很好地工作,包括开发人员自己的笔记本电脑、裸机数据中心和托管平台(如 Cloud Foundry)。

下面主要是通过SpringCloud认识、开发、部署微服务。学Dubbo可以移步到官网:https://cn.dubbo.apache.org/zh-cn/

1.4.SpringCloud

SpringCloud是目前国内使用最广泛的微服务框架。官网地址:https://spring.io/projects/spring-cloud

SpringCloud集成了各种微服务功能组件,并基于SpringBoot实现了这些组件的自动装配,从而提供了良好的开箱即用体验。

其中常见的组件包括:

  • 分布式/版本化配置
  • 服务注册和发现
  • 路由
  • 服务到服务调用
  • 负载均衡
  • 断路 器
  • 分布式消息传递
  • 生存期较短的微服务(任务)
  • 消费者驱动和生产者驱动的合同测试

另外,SpringCloud底层是依赖于SpringBoot的,并且有版本的兼容关系,如下:

SpringCloud Spring Boot
2023.0.x aka Leyton 3.2.x
2022.0.x aka Kilburn 3.0.x, 3.1.x (Starting with 2022.0.3)
2021.0.x aka Jubilee 2.6.x, 2.7.x (Starting with 2021.0.3)
2020.0.x aka Ilford 2.4.x, 2.5.x (Starting with 2020.0.3)
Hoxton 2.2.x, 2.3.x (Starting with SR5)
Greenwich 2.1.x
Finchley 2.0.x
Edgware 1.5.x
Dalston 1.5.x

我是时生,一个正在努力的小白。欢迎批评,欢迎指正,欢迎共享。

如果这篇文章对你有帮助,麻烦点个赞呗!

点赞评论超过20个就加快更新哟!

相关推荐
天天扭码1 小时前
五天SpringCloud计划——DAY2之单体架构和微服务架构的选择和转换原则
java·spring cloud·微服务·架构
余生H2 小时前
transformer.js(三):底层架构及性能优化指南
javascript·深度学习·架构·transformer
凡人的AI工具箱2 小时前
15分钟学 Go 第 60 天 :综合项目展示 - 构建微服务电商平台(完整示例25000字)
开发语言·后端·微服务·架构·golang
运维&陈同学3 小时前
【zookeeper01】消息队列与微服务之zookeeper工作原理
运维·分布式·微服务·zookeeper·云原生·架构·消息队列
哔哥哔特商务网15 小时前
一文探究48V新型电气架构下的汽车连接器
架构·汽车
007php00715 小时前
GoZero 上传文件File到阿里云 OSS 报错及优化方案
服务器·开发语言·数据库·python·阿里云·架构·golang
码上有前17 小时前
解析后端框架学习:从单体应用到微服务架构的进阶之路
学习·微服务·架构
gjh120819 小时前
什么是微服务?
微服务
货拉拉技术1 天前
多元消息融合分发平台
javascript·后端·架构