Spring Cloud 入门 -- 搭建Eureka注册中心 实现服务者与消费者的服务调用

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

哈喽!大家好,我是【Bug 终结者,【CSDN新星创作者】🏆,阿里云技术博主🏆,51CTO人气博主🏆,INfoQ写作专家🏆

一位上进心十足,拥有极强学习力的【Java领域博主】😜😜😜

🏅【Bug 终结者】博客的领域是【面向后端技术】的学习,未来会持续更新更多的【后端技术】以及【学习心得】。 偶尔会分享些前端基础知识,会更新实战项目,面向企业级开发应用

🏅 如果有对【后端技术】、【前端领域】感兴趣的【小可爱】,欢迎关注【Bug 终结者】💞💞💞

❤️❤️❤️ 感谢各位大可爱小可爱! ❤️❤️❤️

文章目录

  • 一、什么是Spring Cloud?

  • 二、Spring Cloud 与 Spring Boot 的关系

  • 三、Spring Cloud 与Dubbo 的区别

    • ⛽服务的调用方式
  • ⛽社区更新力度

  • 四、Spring Cloud 能干什么?

  • 五、什么是Eureka?

  • 六、Eureka 的特性及优点

  • 七、Spring Cloud入门案例 – 搭建Eureka注册中心

    • ✴️需求说明
  • ❇️ 效果图

  • ♻️项目结构

  • ⏳核心源码

    • ⌚父级模块
  • ⌚实体类模块

  • ⌚注册中心模块

  • ⌚服务提供者模块

  • ⌚服务消费者模块

  • 八、源码下载

  • ♨️往期精彩热文回顾

  • ⛵小结

一、什么是Spring Cloud?

=====================================================================================

摘自Spring Cloud官网

Spring Cloud provides tools for developers to quickly build some of the common patterns in distributed systems (e.g. configuration management, service discovery, circuit breakers, intelligent routing, micro-proxy, control bus, one-time tokens, global locks, leadership election, distributed sessions, cluster state). Coordination of distributed systems leads to boiler plate patterns, and using Spring Cloud developers can quickly stand up services and applications that implement those patterns. They will work well in any distributed environment, including the developer’s own laptop, bare metal data centres, and managed platforms such as Cloud Foundry.

以上翻译如下:

Spring Cloud 为开发者提供了工具来快速构建分布式系统中的一些常见模式(例如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话,集群状态)。分布式系统的协调导致了样板模式,使用 Spring Cloud 开发人员可以快速建立实现这些模式的服务和应用程序。它们在任何分布式环境中都能很好地工作,包括开发人员自己的笔记本电脑、裸机数据中心以及 Cloud Foundry 等托管平台。

在这里插入图片描述

大致意思就是 Spring Cloud 是一个分布式框架基于Spring Boot微服务,将一个一个独立的模块聚合,达到了“高内聚 · 低耦合

二、Spring Cloud 与 Spring Boot 的关系

===================================================================================================

  • Spring Boot专注于开发方便的开发单个个体微服务;

  • Spring Cloud是关注全局的微服务协调整理治理框架,它将Spring Boot开发的一个个单体微服务,整合并管理起来,为各个微服务之间提供:配置管理、服务发现、断路器、路由、为代理、事件总栈、全局锁、决策竞选、分布式会话等等集成服务;

  • Spring Boot专注于快速、方便的开发单个个体微服务,Spring Cloud关注全局的服务治理框架

  • Spring Boot 可以离开Spring Cloud 独立运行,而Spring Cloud 不可以离开Spring Boot,是基于Spring Boot

三、Spring Cloud 与Dubbo 的区别

============================================================================================

⛽服务的调用方式


Spring Cloud采用HTTP的REST方式调用服务,Dubbo采用RPC框架实现远程调用服务

⛽社区更新力度


Dubbo活跃度较低

Spring Cloud社区活跃度比较高

定位不同:Dubbo 的定位是一款高性能RPC框架,而Spring Cloud的目标是分布式微服务架构的一站式解决方案

| 框架 | Spring Cloud | Dubbo |

| — | — | — |

| 服务注册中心 | Spring Cloud Netfix Eureka | Zookkeper |

| 服务调用方式 | REST API | RPC |

| 服务监控 | Spring Boot Admin | Dubbo-monitor |

| 断路器 | Spring Cloud Netfix Hystrix | 未完善,引用外部断路器 |

| 服务网关 | Spring Cloud Netfix Zuul | 无 |

| 分布式配置 | Spring Cloud Config | 无 |

| 服务跟踪 | Spring Cloud Sleuth | 无 |

| 消息总栈 | Spring Cloud Bus | 无 |

| 数据流 | Spring Cloud Strem | 无 |

| 批量任务 | Spring Cloud Task | 无 |

两者最大的区别:Spring Cloud 抛弃了 Dubbo 的 RPC,采用了基于 HTTP 的 REST方式

严格来说,这两种方式各有优劣。虽然从一定程度上来说,后者牺牲了服务调用的性能,但也避免了上面提到的原生RPC带来的问题。而且REST相比RPC更为灵活,服务提供方和调用方的依赖只依靠一纸契约,不存在代码级别的强依赖,这个优点在当下强调快速演化的微服务环境下,显得更加合适。

四、Spring Cloud 能干什么?

=======================================================================================

  • Distributed/versioned configuration 分布式/版本控制配置

  • Service registration and discovery 服务注册与发现

  • Routing 路由

  • Service-to-service calls 服务到服务的调用

  • Load balancing 负载均衡配置

  • Circuit Breakers 断路器

  • Distributed messaging 分布式消息管理

五、什么是Eureka?

===============================================================================

Netflix在涉及Eureka时,遵循的就是API原则.

Eureka是Netflix子模块,也是核心模块之一。Eureka是基于REST的服务,用于定位服务,以实现云端中间件层服务发现和故障转移,服务注册与发现对于微服务来说是非常重要的,有了服务注册与发现,只需要使用服务的标识符,就可以访问到服务,而不需要修改服务调用的配置文件了,功能类似于Dubbo的注册中心,比如Zookeeper。

六、Eureka 的特性及优点

==================================================================================

  • Eureka是一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转移。

  • Eureka 主管服务注册与发现,在微服务中,以后了这两者,只需要使用服务的标识符,就是那个在每个服务的yml文件中取得服务名称, 就可以访问到服务,不需要修改服务调用的配置文件。

  • Eureka遵循AP原则 高可用,分区容错性,因为使用了自我保护机制所以保证了高可用。

Eureka两大组件:Eureka Server(提供注册服务)、 Eureka Client(JAVA客户端,负责发送心跳)

Eureka三大角色:

  • Eureka Server:提供服务注册和发现

  • Service Provider:服务提供方,将自身服务注册到Eureka,从而使服务消费方能够找到

  • Service Consumer:服务消费方,从Eureka获取注册服务列表,从而能够消费服务。

七、Spring Cloud入门案例 – 搭建Eureka注册中心

====================================================================================================

✴️需求说明


基于Spring Boot聚合工程

使用Spring Cloud 实现分布式应用

  • 服务提供者,将服务注册到Eureka注册中心

  • 服务消费者,从Eureka取出调用的服务并获取返回结果

流程图

在这里插入图片描述

❇️ 效果图


在这里插入图片描述

♻️项目结构


在这里插入图片描述

模块说明

  • spring_cloud模块:父级模块

  • springcloud-api:实体类模块

  • springcloud-eureka:注册中心模块

  • springcloud-provider:服务提供者模块

  • springcloud-consumer:服务消费者模块

⏳核心源码


⌚父级模块

pom.xml

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns=“http://maven.apache.org/POM/4.0.0”

xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”

xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”>

4.0.0

org.example

spring_cloud

1.0-SNAPSHOT

springcloud-api

springcloud-provider

springcloud-eureka

springcloud-consumer

pom

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<maven.compiler.source>1.8</maven.compiler.source>

<maven.compiler.target>1.8</maven.compiler.target>

<junit.version>4.12</junit.version>

<log4j.version>1.2.17</log4j.version>

<lombok.version>1.16.18</lombok.version>

org.springframework.cloud

spring-cloud-alibaba-dependencies

0.2.0.RELEASE

pom

import

org.springframework.cloud

spring-cloud-dependencies

Greenwich.SR1

pom

import

org.springframework.boot

spring-boot-dependencies

2.1.4.RELEASE

pom

import

mysql

mysql-connector-java

5.1.47

com.alibaba

druid

1.1.10

org.mybatis.spring.boot

mybatis-spring-boot-starter

1.3.2

ch.qos.logback

logback-core

1.2.3

junit

junit

${junit.version}

log4j

log4j

${log4j.version}

org.projectlombok

lombok

${lombok.version}

⌚实体类模块

pom.xml

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns=“http://maven.apache.org/POM/4.0.0”

xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”

xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”>

spring_cloud

org.example

1.0-SNAPSHOT

4.0.0

springcloud-api

<maven.compiler.source>8</maven.compiler.source>

<maven.compiler.target>8</maven.compiler.target>

org.projectlombok

lombok

Dept实体类

package com.wanshi.springcloud.entity;

import lombok.Data;

import lombok.NoArgsConstructor;

import lombok.experimental.Accessors;

@Data

@NoArgsConstructor

//支持链式编程

@Accessors(chain = true)

public class Dept {

private Integer dept_noid;

private String dept_name;

private String db_source;

}

⌚注册中心模块

pom.xml

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns=“http://maven.apache.org/POM/4.0.0”

xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”

xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”>

spring_cloud

org.example

1.0-SNAPSHOT

4.0.0

springcloud-eureka

org.springframework.cloud

spring-cloud-starter-eureka-server

1.4.6.RELEASE

org.springframework.boot

spring-boot-devtools

application.yml

server:

port: 7001

eureka 配置

eureka:

instance:

hostname: localhost # eureka 服务端的实例名称

client:

register-with-eureka: false # 是否向 eureka 注册自己,不注册自己

fetch-registry: false # fetch-registry 如果为false,表示自己为注册中心

service-url: # 将默认的url去掉,替换为自己的,监控页面

defaultZone: http:// e u r e k a . i n s t a n c e . h o s t n a m e : {eureka.instance.hostname}: eureka.instance.hostname:{server.port}/eureka/

启动类

package com.wanshi.springcloud;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication

// EnableEurekaServer 启动Eureka服务

@EnableEurekaServer

public class EurekaServerMainApplication {

public static void main(String[] args) {

SpringApplication.run(EurekaServerMainApplication.class, args);

}

}

⌚服务提供者模块

pom.xml

org.springframework.cloud

spring-cloud-starter-eureka

1.4.6.RELEASE

org.springframework.boot

spring-boot-starter-actuator

org.example

springcloud-api

1.0-SNAPSHOT

junit

junit

test

mysql

mysql-connector-java

com.alibaba

druid

ch.qos.logback

logback-core

org.mybatis.spring.boot

mybatis-spring-boot-starter

org.springframework.boot

spring-boot-test

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

spring-boot-starter-jetty

org.springframework.boot

spring-boot-devtools

org.springframework.boot

spring-boot-starter-jdbc

application.yml

server:

port: 8001

servlet:

context-path: /springcloud-provider-dept/

spring:

写在最后

还有一份JAVA核心知识点整理(PDF):JVM,JAVA集合,JAVA多线程并发,JAVA基础,Spring原理,微服务,Netty与RPC,网络,日志,Zookeeper,Kafka,RabbitMQ,Hbase,MongoDB,Cassandra,设计模式,负载均衡,数据库,一致性哈希,JAVA算法,数据结构,加密算法,分布式缓存,Hadoop,Spark,Storm,YARN,机器学习,云计算…

image

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

org.springframework.boot

spring-boot-starter-jetty

org.springframework.boot

spring-boot-devtools

org.springframework.boot

spring-boot-starter-jdbc

application.yml

server:

port: 8001

servlet:

context-path: /springcloud-provider-dept/

spring:

写在最后

还有一份JAVA核心知识点整理(PDF):JVM,JAVA集合,JAVA多线程并发,JAVA基础,Spring原理,微服务,Netty与RPC,网络,日志,Zookeeper,Kafka,RabbitMQ,Hbase,MongoDB,Cassandra,设计模式,负载均衡,数据库,一致性哈希,JAVA算法,数据结构,加密算法,分布式缓存,Hadoop,Spark,Storm,YARN,机器学习,云计算…

[外链图片转存中…(img-Hnka5Lb3-1714749349357)]

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值