springcloud--微服务

本文详细介绍了SpringCloud微服务的各个方面,从微服务的概念、应用场景到微服务架构的常见问题,深入探讨服务治理,包括服务注册、服务发现、服务剔除、服务调用、服务网关、服务容错和链路追踪。此外,还逐步指导如何创建微服务项目,使用Nacos、Ribbon和OpenFeign实现服务注册、负载均衡和服务调用,以及如何将微服务注册到Eureka服务中心。
摘要由CSDN通过智能技术生成

目录

什么是微服务

应用场景

微服务架构

 微服务架构的常见问题。

微服务架构常见概念

服务治理

服务注册

服务发现:

服务剔除

服务调用

服务网关

服务容错

链路追踪

创建微服务项目

第一步创建父工程

 第二步创建子模块

 第三步创建普通子模块

测试

在一个微服务调用另一个微服务

服务注册

安装nacos

 执行启动命令

​编辑

 使用nacos

第一部添加依赖

第二步配置信息

 第三步启动微服务

手动拉取微服务信息

负载均衡 

手动实现负载均衡

基于Ribbon实现负载均衡及服务拉取

使用

第一步 添加注解

第二步 修改代码使用另一种服务拉取

第三步 设置负载均衡

基于OpenFeign实现服务调用

 什么是OpenFeign  

使用步骤

第一步 引入依赖

第二步 开启注解

第三步 创建接口

第四步 将我们的代码修改

使用eureka作为注册中心

第一步

第二步

 第三步 添加配置文件

第四步 写主启动类

第五步 开启eureka注解

​编辑

 测试

将微服务注册到服务中心

添加依赖

添加配置文件

 拉取服务


什么是微服务

微服务架构在某种程度上是面向服务的架构SOA继续发展的下一步,它更加强调服务的"彻底拆分"---->必须要springboot(独立的系统) 必须依赖于springboot技术。Springcloud如果没有springboot 那么springcloud也无法使用。 springboot可以独立使用。因为springboot里面内置了tomcat   独立运行。Java -jar xxx.jar。

应用场景

适合大工程。移动互联网 电商项目 p2p 等,小项目虽然也可以用,但是没必要。

优点:

  1. 服务原子化拆分,独立打包、部署和升级,保证每个微服务清晰的任务划分,利于扩展
  2. 微服务之间采用Restful等轻量级http协议相互调用

缺点:

  1. 微服务系统开发的技术成本高《高》(容错、分布式事务等)

微服务架构

微服务架构, 简单的说就是将单体应用进一步拆分,拆分成更小的服务,每个服务都是一个可以独立运行的项目。

 微服务架构的常见问题。

这么多小服务,如何管理他们?   

        服务治理

这么多小服务,他们之间如何通讯?

        服务调用

这么多小服务,客户端怎么访问他们?

        服务网关

这么多小服务,一旦出现问题了,应该如何自处理?

        服务容错

这么多小服务,一旦出现问题了,应该如何排错?

        链路追踪

微服务架构常见概念

服务治理

服务治理就是进行服务的自动化管理,其核心是服务的自动注册与发现.

服务注册

服务实例将自身服务信息注册到注册中心。

服务发现

服务实例通过注册中心,获取到注册到其中的服务实例的信息,通过这些信息去请求它们提供的服务。

服务剔除

服务注册中心将出问题的服务自动剔除到可用列表之外,使其不会被调用到。

服务调用

在微服务架构中,通常存在多个服务之间的远程调用的需求。目前主流的远程调用技术有基于HTTP的RESTful接口以及基于TCP的RPC协议。

REST(Representational State Transfer)

这是一种HTTP调用的格式,更标准,更通用,无论哪种语言都支持http协议。 

服务网关

随着微服务的不断增多,不同的微服务一般会有不同的网络地址,而外部客户端可能需要调用多个服务的接口才能完成一个业务需求,如果让客户端直接与各个微服务通信可能出现:

  1. 客户端需要调用不同的url地址,增加难度
  2. 在一定的场景下,存在跨域请求的问题
  3. 每个微服务都需要进行单独的身份认证
  4. 针对这些问题,API网关顺势而生。

    API网关直面意思是将所有API调用统一接入到API网关层,由网关层统一接入和输出。一个网关的基本功能有:统一接入、安全防护、协议适配、流量管控、长短链接支持、容错能力。有了网关之后,各个API服务提供团队可以专注于自己的的业务逻辑处理,而API网关更专注于安全、流量、路由等问题。

服务容错

在微服务当中,一个请求经常会涉及到调用几个服务,如果其中某个服务不可用,没有做服务容错的话,极有可能会造成一连串的服务不可用,这就是雪崩效应

我们没法预防雪崩效应的发生,只能尽可能去做好容错。服务容错的三个核心思想是:

  1. 不被外界环境影响
  2. 不被上游请求压垮
  3. 不被下游响应拖垮

链路追踪

随着微服务架构的流行,服务按照不同的维度进行拆分,一次请求往往需要涉及到多个服务。互联网应用构建在不同的软件模块集上,这些软件模块,有可能是由不同的团队开发、可能使用不同的编程语言来实现、有可能布在了几千台服务器,横跨多个不同的数据中心。

因此,就需要对一次请求涉及的多个服务链路进行日志记录,性能监控即链路追踪

创建微服务项目

第一步创建父工程

父工程负责子模块的管理,不在父工程里面写代码

  

 <!--定义版本号-->
    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF- 8</project.reporting.outputEncoding>
        <spring-cloud.version>Hoxton.SR8</spring-cloud.version>
        <spring-cloud-alibaba.version>2.2.3.RELEASE</spring-cloud-alibaba.version>
    </properties>
    <!--dependencyManagement:它只负责jar的版本号管理,不负责jar的下载,交于子模块,子模块在使用时无需指定版本号
          :springboot springcloud  springcloudalibaba之间版本一定要匹配
    -->
    <dependencyManagement>
        <dependencies>
            <!--springcloud的版本管理-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--springcloudalibaba的版本管理-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

 

 第二步创建子模块

子模块就是负责代码的地方,首先建立一个公共模块,此模块中写一些公共的代码,也就是其他子模块都会用到的代码,例如实体类。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值