SpringCloud-Eureka

news2024/11/24 18:47:46

1.Spring Cloud是什么?

                SpringCloud是一系列框架的有序集合。【包含了开发所需的其他的框架】
                它利用SpringBoot的开发便利性,巧妙地简化了分布式系统基础设施的开发,如服务注册、服务发现、配置中心、消息总线、负载均衡、断路器、数据监控等,这些都可以用SpringBoot的开发风格做到一键启动和部署。
            通俗地讲,SpringCloud就是用于构建微服务开发和治理的框架集合(并不是具体的一个框架),主要贡献来自Netflix OSS。
    微服务--搭积木
        提供不同形状的积木块【服务】
        通过不同形状的积木块相互配合建造出来的城堡 【项目】

2.SpringCloud模块介绍       

    Eureka [juˈriːkə] :服务注册中心,用于服务管理。
    Ribbon [ˈrɪbən] :基于客户端的负载均衡组件。
    Hystrix:容错框架,能够防止服务的雪崩效应。
    Feign  [feɪn]:Web服务客户端,能够简化HTTP接口的调用。
    Zuul:API 网关,提供路由转发、请求过滤等功能。
    Config:分布式配置管理。
    Sleuth [sluːθ]:服务跟踪。
    Stream:构建消息驱动的微服务应用程序的框架。
    Bus:消息代理的集群消息总线。
    除了上述模块,还有 Cli、Task等。教程中只介绍一些常用的模块。  

3.SpringCloud版本介绍 

         在第一次访问 Spring Cloud 官网时一定会有一个疑惑那就是版本太多了,到底哪个是稳定版本?哪个才是自己需要的版本?接下来就给大家简单介绍一下版本的问题。

        参考图:

         从图中可以看到 Spring Cloud 不是像别的项目那样,版本号采用 1.1、1.2、1.3 这种的格式    因为 SpringCloud 是一个拥有诸多子项目的大型综合项目,可以说是对微服务架构解决方的综合套件组件,其中包含的各个子项目都独立进行着内容的迭代与更新,各自维护着自己的发布版本号
          建议:至于怎么选择适合自己的版本,大家可以在接触的时候直接选最新的稳定版本。新版本中的 Bug 肯定要少,并且更稳定。

4.SpringCloudEureka是什么?

        SpringCloudEureka是SpringCloudNetflix微服务套件的一部分,基于Netflix Eureka做了二次封装,主要负责实现微服务架构中的服务治理功能。
        SpringCloudEureka是一个基于REST的服务,并且提供了基于Java的客户端组件,能够非常方便地将服务注册到SpringCloudEureka中进行统一管理。
        服务治理是微服务架构中必不可少的一部分,阿里开源的 Dubbo 框架就是针对服务治理的。服务治理必须要有一个注册中心,除了用Eureka作为注册中心外,我们还可以使用 Consul、Etcd、Zookeeper等来作为服务的注册中心。
        用过Dubbo的读者应该清楚,Dubbo中也有几种注册中心,比如基于Zookeeper、基于Redis等,不过用得最多的还是Zookeeper方式。
    
        为什么 Eureka 比 Zookeeper 更适合作为注册中心呢?主要是因为 Eureka 是基于 AP 原则构建的,而 ZooKeeper 是基于 CP 原则构建的。
        在分布式系统领域有个著名的 CAP 定理,即 C 为数据一致性;A 为服务可用性;P 为服务对网络分区故障的容错性。这三个特性在任何分布式系统中都不能同时满足,最多同时满足两个。
       Zookeeper 有一个 Leader,而且在这个 Leader 无法使用的时候通过 Paxos(ZAB)算法选举出一个新的 Leader。这个 Leader 的任务就是保证写数据的时候只向这个 Leader 写入,Leader 会同步信息到其他节点。通过这个操作就可以保证数据的一致性。
    总而言之,想要保证 AP 就要用 Eureka,想要保证 CP 就要用 Zookeeper。
       Dubbo 中大部分都是基于 Zookeeper 作为注册中心的。Spring Cloud 中当然首选 Eureka。

搭建Eureka服务注册中心 

         1.创建一个SpringBoot项目【2.5.12】

         2.导入依赖【1.SpringCloud依赖 2.Eureka服务依赖】

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>2021.0.2-SNAPSHOT</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
</dependencyManagement>


<!--eureka-server-->
<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
            <version>3.0.2</version>
</dependency>

 3.在主类中设置@EnableEurekaServer

@SpringBootApplication
//表示开启EurekaServer[注册中心]
@EnableEurekaServer
public class SpringcloudServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringcloudServerApplication.class, args);
    }

}

4.配置配置文件 

spring.application.name=eurekaserver
server.port=8761
#由于该应用为注册中心, 所以设置为false, 代表不向注册中心注册自己
eureka.client.register-with-eureka=false
#由于注册中心的职责就是维护服务实例, 它并不需要去检索服务, 所以也设置为 false
#eureka.client.register-with-eureka一定要配置为false,不然启动时会把自己当作客户端向自己注册,会报错。
eureka.client.fetch-registry=false

5.启动注册中心服务,测试http://localhost:8761/,出现以下页面显示Eureka注册中心搭建成功

 使用Eureka编写服务提供者

1.创建一个SpringBoot项目【2.5.12】

2.导入依赖【1.SpringCloud依赖 2.Eureka服务依赖

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
<!--eureka-server-->
<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            <version>3.0.2</version>
</dependency>
<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>2021.0.2-SNAPSHOT</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
</dependencyManagement>

3.创建服务接口和实现类

public interface UserName {

    /**
     *  得到用户姓名
     * @return
     */
    String getUsername();
}
@Service("userService")
public class UserService implements UserName {


    @Override
    public String getUsername() {
        return "宁红叶";
    }
}

4.创建提供者的控制器

@RestController
public class UserController {

    @Autowired
    private UserName userName;

    @RequestMapping("username")
    public String getUserName(){
        return userName.getUsername();
    }
}

5.配置文件

spring.application.name=eurekaprovderdemo
server.port=8081
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/
#采用IP注册
eureka.instance.preferIpAddress=true
#定义实例ID格式
eureka.instance.instance-id=${spring.cloud.client.ip-address}:${spring.application.name}:${server.port}

6.主类设置@EnableEurekaClient注解

@SpringBootApplication
@EnableEurekaClient
public class SpringcloudProvideApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringcloudProvideApplication.class, args);
    }

}

7.测试服务提者

        1.启动注册中心服务
        2.运行服务提供者主类
        3.浏览器中测试:http://localhost:8761/  可以看见注册好的服务

 

 使用Eureka编写服务消费者

1.创建一个SpringBoot项目【2.5.12】
2.导入依赖【1.SpringCloud依赖 2.Eureka服务依赖】

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
<!--eureka-server-->
<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            <version>3.0.2</version>
</dependency>
<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>2021.0.2-SNAPSHOT</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
</dependencyManagement>

3.创建RestTemplateConfiguration配置类

    通过 RestTemplate 来消费接口
    RestTemplate 是 Spring 提供的用于访问 Rest 服务的客户端,RestTemplate 提供了多种便捷访问远程 Http 服务的方法,能够大大提高客户端的编写效率。

@Configuration
public class RestTemplateConfiguration {

    @Bean
    public RestTemplate getRestTmplate(){
        return new RestTemplate();
    }
}

4.创建消费者的控制器,将创建好的RestTemplate注入进控制器

@RestController
public class UserBeanController {

    @Autowired
    private RestTemplate restTemplate;

    @RequestMapping("/showName")
    public String getUserName(){
        System.out.println("123");
        return restTemplate.getForObject("http://localhost:8081/username", String.class);
    }
}

5.配置文件

spring.application.name=eurekacomsumerdemo1
server.port=8082

6.主类设置@EnableEurekaClient注解

@SpringBootApplication
@EnableEurekaClient
public class SpringcloudConsumerApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringcloudConsumerApplication.class, args);
    }

}

7.测试服务消费者者
    1.启动注册中心服务
    2.运行服务提供者主类
    3.运行服务消费者者主类

    4.浏览器访问:http://localhost:8082/showName

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/188881.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何安装python运行环境,想学python需要安装什么

这篇文章主要介绍了安装python程序后要进行什么设置&#xff0c;具有一定借鉴价值&#xff0c;需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获&#xff0c;下面让小编带着大家一起了解一下。 1、使用python需要安装哪些软件 《Python 3.9.7软件》百度网盘资源免费下…

浅析DDOS攻击及防御

如今&#xff0c;信息技术的发展为人们带来了诸多便利&#xff0c;无论是个人社交行为&#xff0c;还是商业活动都离不开网络。但是&#xff0c;网络空间在创造机遇的同时&#xff0c;也带来了威胁&#xff0c;其中 DDOS 就是最具破坏力的攻击。经过这些年的不断发展&#xff0…

QT/C++——文件和进程线程编程

目录 一、文件普通读写和流式读写 二、目录遍历和文件属性读写 三、进程 四、线程 五、线程同步 六、线程互斥 一、文件普通读写和流式读写 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTextEdit> #include <QLineEdit> #include…

iPhone彻底删除的重要照片怎么找回来?三招找回被删照片!

要说iPhone手机占用储存空间最多的是什么&#xff1f;照片&#xff0c;相信是大部分苹果手机用户的回答。 iPhone强大的拍照技术&#xff0c;拍了很多照片&#xff0c;却十分占用内存。在清理照片时&#xff0c;为了快速释放内存&#xff0c;快速滑动批量删除照片。 我们知道&…

C++ 标准库 常用算法总结(排序、合并、搜索和分区)

本系列文章介绍了所有的STL常用的算法。这些算法通常都有不同的功能&#xff0c;例如&#xff1a;排序元素算法{sort()、stable_sort()、nth_element()}、 查询元素算法{find()、find_if()、find_if_not()、find_end()、find_first_of()、adjacent_find()}、 复制元素算法{co…

Android 分区存储

1.Android存储 Android存储分为内部存储和外部存储&#xff08;外部存储并不是指SD存储卡或外部硬盘&#xff09;。 ①内部存储 用于Android系统本身和应用程序的存储区域&#xff0c;比如手机的/system/、/data/等目录。 如果没有这一块存储区域是无法运行Android系统和应用…

Windows Server 2022 中文版、英文版下载 (updated Jan 2023)

Windows Server 2022 正式版&#xff0c;2023 年 1 月更新&#xff0c;持续更新中… 请访问原文链接&#xff1a;https://sysin.org/blog/windows-server-2022/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;www.sysin.org 此次发布更新…

如何设置 Excel 的行标题

Excel的行标题 打开或关闭Excel标题行Excel中的标题行格式选项Microsoft Excel工作表可以容纳一百万行,其中包含数字或文本数据集。行标题是位于工作表第1列左侧的灰色列,其中包含数字(1、2、3等),有助于识别工作表中的每一行。 尽管列标题是灰色的行,但它通常是字母(A、…

java泛型4

通配符之设定类型通配符的上限-------什么时候需要设置上限&#xff1f;&#xff1f;&#xff1f;&#xff1f;协变 还差一个Canvas类 这样定义行不行&#xff1f;不行&#xff01;&#xff01;&#xff01; 测试一下&#xff1a; 注意上面的drawAll()方法的形参类型是List …

好的直线导轨应该具备哪些要求?

直线导轨运用于各行各业&#xff0c;范围非常之广&#xff0c;但是对于直线导轨的要求都是大同小异的&#xff0c;下面我们来看下良好的直线导轨都应具备哪些要求&#xff1f; 1>运动灵敏度与定位精度高&#xff1a;定位精度是指运动构件能按要求停止在指定位置的能力。运动…

musl pwn 入门 (4)

在前面的介绍中&#xff0c;我们学习了musl pwn的基本原理&#xff0c;下面我们就通过一道经典例题进一步巩固。 这是DefCon Quals 2021中的一道题mooosl&#xff0c;直接在github上搜这道题的名字就可以找到作者发布的附件&#xff0c;内含说明、作者的exp、源码以及二进制程…

Linux系统之openEuler安装部署

Linux系统之openEuler安装部署一、openEuler介绍1.openEuler简介2.openEuler的硬件要求①物理机的安装要求②虚拟机的安装要求二、下载openEuler系统镜像1.官方网址2.下载openEuler系统镜像三、虚拟机配置工作1.设置虚拟机名称2.处理器配置3.设置虚拟机内存4.设置网络类型5.磁盘…

电脑桌面壁纸不清晰?壁纸模糊怎么修复高清?

我们在入手新电脑之后&#xff0c;首先就是会想要设置一个好看的壁纸&#xff0c;虽然系统会自带一些壁纸&#xff0c;但大多数用户都不喜欢这样一成不变的壁纸。于是在网上找了很好好看的壁纸换上&#xff0c;结果发现在更换电脑壁纸之后却发现壁纸显示非常的模糊不清。为什么…

git中gitignore忽略文件规则配置

我们在日常开发中会遇见项目打包的情况&#xff0c;然后这时候我们想要打包完成后提交一次代码&#xff0c;会忘记删除dist文件或者打包文件&#xff0c;会跟着提交上去&#xff0c;这样就造成了协同开发的麻烦&#xff0c;也会造成codeReview的障碍&#xff0c;让别人在拉取代…

CNN平移不变性

目录 .1 简介&#xff1a; 1.1什么是平移不变性 1.2 平移不变性/平移同变性 1.3 为什么卷积神经网络具有平移不变性 总结 1.4 证伪&#xff1a;CNN中的图片平移不变性 .2 实例 references&#xff1a; .1 简介&#xff1a; 1.1什么是平移不变性 不变性 不变性意味着即…

跟风试试ChatGPT

文章目录前言什么是ChatGPTChatGPT怎么玩注册验证使用设计型开发型强人所难型Python调用ChatGPT总结前言 其实现在也不算是跟风了&#xff0c;从 ChatGPT 出现至今已经有几个月的时间&#xff0c;这股风似乎已经刮过去了&#xff0c;虽然各种新闻铺天盖地&#xff0c;但因为懒…

RHCE(远程连接服务器)

文章目录一、远程连接服务器简介1、什么是远程连接服务器2、远程连接服务器的功能3、远程连接服务器的类型4、文字接口连接服务器二、连接加密技术简介1、版本协商阶段2、密钥和算法协商阶段会话密钥的生成3、认证阶段SSH提供两种认证方法&#xff1a;三、SSH远程连接服务简介1…

高阶数据结构之红黑树

文章目录红黑树红黑树的性质红黑树的定义红黑树的插入情况一&#xff1a;插入节点的父节点为红&#xff0c;祖父节点为黑&#xff0c;叔叔节点存在且为红情况二&#xff1a;当前节点的父节点为红&#xff0c;祖父节点为黑&#xff0c;叔叔节点不存在或者为黑红黑树的验证验证是…

Linux常用命令——read命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) read 从键盘读取变量值 补充说明 read命令从键盘读取变量的值&#xff0c;通常用在shell脚本中与用户进行交互的场合。该命令可以一次读取多个变量的值&#xff0c;变量和输入的值都需要使用空格隔开。在read命…

这些预测性维护的专业术语你都了解吗?

一、前言 随着时代的发展&#xff0c;越来越多的企业希望能够在对设备和系统无损的前提下&#xff0c;通过一系列的测试和分析来实现维护。这种维护工作是基于设备和系统本身的运行状态来安排实施的&#xff0c;被称为CBM&#xff08;Condition Based Maintenance&#xff09;…