专栏首页关忆北.(一)Spring Cloud:概念、核心组件以及OpenFegin服务间调用

(一)Spring Cloud:概念、核心组件以及OpenFegin服务间调用

核心特性

  1. 服务注册与发现
  2. 负载均衡
  3. 服务间的调用
  4. 容错、服务降级、断路器
  5. 消息总线
  6. 分布式配置中心
  7. 链路器

核心组件

  1. Netflix:服务发现/负载均衡
  2. Config:分布式配置中心,利用Git/SVN集中管理项目的配置文件
  3. Bus:消息总线,构建消息驱动的微服务,也可以用来做一些状态管理
  4. Consul:服务注册发现
  5. Stream:基于Redis、RabbitMQ、Kafka实现的消息微服务
  6. OpenFeign:提供OpenFeign集成到SpringBoot应用中的方式,主要解决微服务间调用的问题。
  7. Gateway:官方网关服务
  8. Contract:一个消费者驱动的、面向Java的契约框架
  9. Data Flow:在一个结构化的平台上,组成数据微服务

注册中心

Eureka

类似于Dubbo中的Nacos、Zookeeper

单体应用的例子:所有的业务都集中在一个项目中,当用户从浏览器发起请求时,直接由前端发起请求给后端,后端调用业务逻辑,给前端请求做出响应,完成一次调用,整个调用过程是一条直线,不需要服务间的中转,没有必要引入注册中心。

图片原作者:江南一点雨 http://www.javaboy.org/

随系统量增大,可以将项目中拆分为不同的模块,当用户发起请求时,需要各个模块间进行调用。

图片原作者:江南一点雨 http://www.javaboy.org/

如此发现服务间的调用异常复杂,且具有强耦合性,为保证调用正常,服务间的IP必须写死,同时需要集群化部署。

Eureka基于REST来实现服务的注册与发现,SpringCloud中封装了Eureka。

Eureka有两部分:

  • 服务端:注册中心,用来接收其他服务的注册(IP、接口)
  • 客户端:Java客户端,用来注册,实现负载均衡

Eureka中三个角色:

eureka集群搭建

修改windows电脑hosts文件

新增一行:
127.0.0.1 eurekaA eurekaB
//目的是解析url

集群搭建,只需要修改配置文件即可

a.properties

#当前服务名字和端口
spring.application.name=eureka
server.port=1111
#给服务取别名注册到注册中心
eureka.instance.hostname=eurekaA
eureka.client.fetch-registry=true
eureka.client.register-with-eureka=true
#A服务要注册到B服务上(注册地址)
eureka.client.service-url.defaultZone=http://eurekaB:1112/eureka

b.properties

#当前服务名字和端口
spring.application.name=eureka
server.port=1112
#给服务取别名注册到注册中心
eureka.instance.hostname=eurekaB
eureka.client.fetch-registry=true
eureka.client.register-with-eureka=true

#B服务要注册到A服务上
eureka.client.service-url.defaultZone=http://eurekaA:1111/eureka

微服务模块启动

#指定配置文件启动,将不同的A,B服务相互注册
java -jar xxx.jar --spring.profiles.active=a
java -jar xxx.jar --spring.profiles.active=b

微服务间调用

微服务间的调用使用注解@FeignClient来配置,使用在对外暴露的接口上。fallback是容错的处理类,当远程调用接口失败/超时时,走对应接口的容错逻辑,fallback指定的类必须实现@FeignClient标记的接口。

服务A调用服务B
A是一个接口,在接口中使用@FeignClient定义要调用的目标服务B
@FeignClient(name = "B", fallback = A.class)
public interface A {
    //do somethings
    
    AFackBack implentments A{
        //远程调用失败的调用方法,一般是抛出业务异常
    }
}

点我进入demo源码地址

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!
本文分享自作者个人站点/博客:https://blog.csdn.net/weixin_42313773复制
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • 【Spring Cloud gateway】 集成测试

    1.1 子模块 customer-service-api-demo,提高发布接口

    用户5640963
  • SpringCloud架构图及简介[通俗易懂]

    Springboot: 搭建微服务的基石,可以帮我们快速、方便的启动一个微服务应用

    全栈程序员站长
  • 【SpringCloud-Alibaba系列教程】6.openfegin的使用

    OpenFeign是一种声明式、模板化的HTTP客户端。在Spring Cloud中使用OpenFeign,可以做到使用HTTP请求访问远程服务,就像调用本地方...

    xgc
  • 使用 Sentinel 实现接口限流

    在前面一篇文章我已经对 Sentinel 做了一个简单的介绍,相信大家对 Sentinel 有一个简单的了解,本次主要是讲 Sentinel 的使用。在 sen...

    没有故事的陈师傅
  • SpirngCloud集成OpenFeign

    前面在使用Ribbon+RestTemplate时,利用RestTemplate对http请求的封装处理,形成了一套模版化的调用方法。但是在实际开发中,由于对服...

    大忽悠爱学习
  • Spring Cloud是怎么运行的?

    在之前的文章中给大家介绍了Spring Boot的基本运行原理(链接),收到了很多读者朋友们关于目前比较流行的微服务框架Spring Cloud的问题反馈。因此...

    用户5927304
  • Spring Cloud 是怎么运行的?

    在之前的文章中给大家介绍了Spring Boot的基本运行原理,收到了很多读者朋友们关于目前比较流行的微服务框架Spring Cloud的问题反馈。因此,在这篇...

    纯洁的微笑
  • Spring Cloud(零)《总有一偏概述告诉你SpringCloud是什么》

    为了更好的实现领域驱动设计的落地,不仅要在设计思路上做到领域职责清晰、系统边界明确,还需要使用到Spring Boot、Spring Cloud框架服务体系来更...

    小傅哥
  • Java微服务框架全方位对比(Dubbo 和 Spring Cloud?)

    微服务(Microservices)是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微...

    聚优云惠
  • Java微服务框架选型(Dubbo 和 Spring Cloud?)

    微服务(Microservices)是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微...

    Java团长
  • 重磅!Spring Cloud 生态再添新套件:Spring Cloud Tencent

    大家好,我是DD。相信很多关注我的读者,都是因为Spring Cloud而关注的,但由于Spring Cloud目前比较稳定,在Spring Boot 3.0没...

    程序猿DD
  • SpringCloud-Alibaba | 微服务架构介绍

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

    码神联盟
  • 全方位解读服务网格(Service Mesh)的背景和概念

    一直以来“微服务”都是一个热门的词汇,在各种技术文章、大会上,关于微服务的讨论和主题都很多。对于基于 Dubbo、SpringCloud 技术体系的微服务架构,...

    xcbeyond
  • springcloud学习手册-什么是springcloud?

    导读 | springcloud 概念 springboot框架。 了解springcloud前先简单了解一下springboot框架。 springboot是...

    程序源代码
  • 微服务为什么选Spring Cloud?

    现如今微服务架构十分流行,而采用微服务构建系统也会带来更清晰的业务划分和可扩展性。同时,支持微服务的技术栈也是多种多样的,本系列文章主要介绍这些技术中的翘楚——...

    Java技术栈
  • 拜托!面试请不要再问我Spring Cloud底层原理

    毫无疑问,Spring Cloud是目前微服务架构领域的翘楚,无数的书籍博客都在讲解这个技术。不过大多数讲解还停留在对Spring Cloud功能使用的层面,其...

    JAVA葵花宝典
  • 拜托,面试请不要再问我Spring Cloud底层原理

    毫无疑问,Spring Cloud是目前微服务架构领域的翘楚,无数的书籍博客都在讲解这个技术。不过大多数讲解还停留在对Spring Cloud功能使用的层面,其...

    全栈程序员站长

扫码关注腾讯云开发者

领取腾讯云代金券