springcloud学习(一)-spring cloud简介


title: springcloud学习(一)-spring cloud简介
date: 2021-1-13
tags:

  • 微服务
  • springcloud学习(一)-spring cloud简介
  • springcloud
  • spring
  • springboot
    categories:
  • 微服务
  • springcloud
  • springcloud学习(一)-spring cloud简介

一、微服务简介

1.1 什么是微服务

“微服务”一词来源于 Martin Fowler 的《Microservices》一文。微服务是一种架构风格,即将单体应用划分为小型的服务单元,微服务之间使用 HTTP 的 API 进行资源访问与操作。

简而言之,微服务体系结构是一种将单个应用程序开发为一组小型服务的方法,每个应用程序在自己的进程中运行,并与轻量级机制(通常是 HTTP 资源 API)通信。这些服务围绕业务功能构建,可通过全自动部署机制独立部署。这些服务的集中管理最少,可能以不同的编程语言编写,并使用不同的数据存储技术。

1.2 微服务的特点

  1. 微服务架构只是一个样式,一个风格。
  2. 将一个完成的项目,拆分成多个模块去开发。
  3. 每一个模块都是独立运行在自己的容器中的。
  4. 每一个模块都是需要相互通讯的(HTTP、RPC、MQ)。
  5. 每一个模块之间是没有依赖关系的,可以单独部署。
  6. 可以使用多种语言去开发不同的模块。
  7. 可以使用MySQL数据库、redis、ES去存储数据,也可以使用多个使用MySQL数据库。

总结:将复杂臃肿的单体应用进行细粒度的划分,没个拆分出来的服务各自打包部署。

1.3 微服务的优点

  1. 服务的独立部署

每个服务都是一个独立的项目,可以独立部署,不依赖于其他服务,耦合性低。

  1. 服务的快速启动

拆分之后服务启动的速度必然要比拆分之前快很多,因为依赖的库少了,代码量也少了。

  1. 更加适合敏捷开发

敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行。服务拆分可以快速发布新版本,修改哪个服务只需要发布对应的服务即可,不用整体重新发布。

  1. 职责专一,由专门的团队负责专门的服务

业务发展迅速时,研发人员也会越来越多,每个团队可以负责对应的业务线,服务的拆分有利于团队之间的分工。

  1. 服务可以动态按需扩容

当某个服务的访问量较大时,我们只需要将这个服务扩容即可。

  1. 代码的复用

每个服务都提供 REST API,所有的基础服务都必须抽出来,很多的底层实现都可以以接口方式提供。

1.4 微服务的劣势

  1. 分布式部署,调用的复杂性高

单体应用的时候,所有模块之前的调用都是在本地进行的,在微服务中,每个模块都是独立部署的,通过 HTTP 来进行通信,这当中会产生很多问题,比如网络问题、容错问题、调用关系等。

  1. 独立的数据库,分布式事务的挑战

每个微服务都有自己的数据库,这就是所谓的去中心化的数据管理。这种模式的优点在于不同的服务,可以选择适合自身业务的数据,比如订单服务可以用 MySQL、评论服务可以用 Mongodb、商品搜索服务可以用 Elasticsearch。

缺点就是事务的问题了,目前最理想的解决方案就是柔性事务中的最终一致性,后面的章节会给大家做具体介绍。

  1. 测试的难度提升

服务和服务之间通过接口来交互,当接口有改变的时候,对所有的调用方都是有影响的,这时自动化测试就显得非常重要了,如果要靠人工一个个接口去测试,那工作量就太大了。这里要强调一点,就是 API 文档的管理尤为重要。

  1. 运维难度的提升

在采用传统的单体应用时,我们可能只需要关注一个 Tomcat 的集群、一个 MySQL 的集群就可以了,但这在微服务架构下是行不通的。当业务增加时,服务也将越来越多,服务的部署、监控将变得非常复杂,这个时候对于运维的要求就高了。

二、spring cloud的简介

2.1 什么是spring cloud

Spring Cloud 是一系列框架的有序集合。它利用 Spring Boot 的开发便利性,巧妙地简化了分布式系统基础设施的开发,如服务注册、服务发现、配置中心、消息总线、负载均衡、断路器、数据监控等,这些都可以用 Spring Boot 的开发风格做到一键启动和部署。

通俗地讲,Spring Cloud 就是用于构建微服务开发和治理的框架集合(并不是具体的一个框架),主要贡献来自 Netflix OSS。

2.2 spring cloud的主要模块

  • **Eureka:**服务注册中心,用于服务管理。
  • **Ribbon:**基于客户端的负载均衡组件。
  • **Hystrix:**容错框架,能够防止服务的雪崩效应。
  • **Feign:**Web 服务客户端,能够简化 HTTP 接口的调用。
  • **Zuul:**API 网关,提供路由转发、请求过滤等功能。
  • **Config:**分布式配置管理。
  • **Sleuth:**服务跟踪。
  • **Stream:**构建消息驱动的微服务应用程序的框架,实现MQ的使用。
  • **Bus:**消息代理的集群消息总线。

三、spring cloud 的整体架构图

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值