SpringCloud的入门学习之Eureka(Eureka的单节点)

2年前 (2022) 程序员胖胖胖虎阿
357 0 0

SpringCloud--->Spring生态体系的微服务架构:https://spring.io/

官网贴图,如下所示,介绍了微服务的架构体系(话说,英语好读官网,可能很爽吧,没体验过)。

SpringCloud的入门学习之Eureka(Eureka的单节点)

1、微服务是一种架构风格(微服务架构是区分与单体架构的)。一个大型的复杂软件应用,由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好的完成该任务。

2、常见的架构风格,如是,a、客户端与服务端、b、基于组件模型的架构(EJB)、c、分层架构(MVC)、d、面向服务架构(SOA)。

3、微服务的特点,如下所是:

  特点一:系统是由多个服务构成。

  特点二、每个服务可以单独独立部署。

  特点三、每个服务之间是松耦合的。服务内部是高内聚的,外部是低耦合的。高内聚就是每个服务只关注完成一个功能。

4、微服务的优缺点,如下所示:

  优点:测试容易、可伸缩性强、可靠性强、跨语言程度会更加灵活、团队协作容易、系统迭代容易。

  缺点:运维成本过高,部署数量较多、接口兼容多版本、分布式系统的复杂性、分布式事务。

5、常见软件架构方式的区别,包含MVC架构、RPC架构(面向服务架构)、SOA架构(面向服务架构)、微服务架构(面向服务架构)。如下所示:

不同软件架构的描述,如下所示:

SpringCloud的入门学习之Eureka(Eureka的单节点)

6、什么是 SpringCloud?

  1)、Spring Cloud是一个服务治理平台,提供了一些服务框架。包含了:服务注册与发现、配置中心、消息中心 、负载均衡、数据监控等等。

  2)、Spring Cloud是一个微服务框架,相比 Dubbo 等 RPC 框架, Spring Cloud 提供的全套的分布式系统解决方案。

  3)、Spring Cloud对微服务基础框架 Netflix 的多个开源组件进行了封装,同时又实现了和云端平台以及和 Spring Boot 开发框架的集成。

  4)、Spring Cloud为微服务架构开发涉及的配置管理,服务治理,熔断机制,智能路由,微代理,控制总线,一次性 token,全局一致性锁,leader 选举,分布式session,集群状态管理等操作提供了一种简单的开发方式。

  5)、Spring Cloud为开发者提供了快速构建分布式系统的工具,开发者可以快速的启动服务或构建应用、同时能够快速和云平台资源进行对接。

  6)、Sping Cloud是Spring 的一个顶级项目与 Spring Boot、Spring Data 位于同一位置。

7、Spring Cloud的子项目。

1)、Spring Cloud Config:配置管理工具,支持使用 Git 存储配置内容,支持应用配置的外部化存储,支持客户端配置信息刷新、加解密配置内容等。
2)、Spring Cloud Bus:事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与 Spring Cloud Config 联合实现热部署。
3)、Spring Cloud Netflix:针对多种 Netflix 组件提供的开发工具包,其中包括Eureka、Hystrix、Zuul、Archaius 等。
  a、Netflix Eureka:一个基于 rest 服务的服务治理组件,包括服务注册中心、服务注册与服务发现机制的实现,实现了云端负载均衡和中间层服务器的故障转移。
  b、Netflix Hystrix:容错管理工具,实现断路器模式,通过控制服务的节点, 从而对延迟和故障提供更强大的容错能力。
  c、Netflix Ribbon:客户端负载均衡的服务调用组件。
  d、Netflix Feign:基于 Ribbon 和 Hystrix 的声明式服务调用组件。
  e、Netflix Zuul:微服务网关,提供动态路由,访问过滤等服务。
  f、Netflix Archaius:配置管理 API,包含一系列配置管理 API,提供动态类型化属性、线程安全配置操作、轮询框架、回调机制等功能。
4)、Spring Cloud for Cloud Foundry:通过 Oauth2协议绑定服务到CloudFoundry,CloudFoundry 是 VMware 推出的开源 PaaS 云平台。
5)、Spring Cloud Sleuth:日志收集工具包,封装了 Dapper,Zipkin 和 HTrace操作。
6)、Spring Cloud Data Flow:大数据操作工具,通过命令行方式操作数据流。
7)、Spring Cloud Security:安全工具包,为你的应用程序添加安全控制,主要是指 OAuth2。
8)、Spring Cloud Consul:封装了 Consul 操作,consul 是一个服务发现与配置工具,与 Docker 容器可以无缝集成。
9)、Spring Cloud Zookeeper:操作Zookeeper的工具包,用于使用zookeeper方式的服务注册和发现。
10)、Spring Cloud Stream:数据流操作开发包,封装了与 Redis,Rabbit、Kafka 等发送接收消息。
11)、Spring Cloud CLI:基于 Spring Boot CLI,可以让你以命令行方式快速建立云组件。

8、什么是服务注册中心。

  答:服务注册中心是服务实现服务化管理的核心组件,类似于目录服务的作用,主要用来存储服务信息,譬如提供者 url 串、路由信息等。服务注册中心是 SOA 架构中最基础的设施之一。

9、服务注册中心的作用。

  答:服务的注册、服务的发现。

10、常见的注册中心有哪些。

  答:例如,Dubbo的注册中心Zookeeper、Sringcloud的注册中心Eureka。

11、服务注册中心解决了什么问题。

  答:服务管理、服务的依赖关系管理。

12、什么是Eureka注册中心?

  答:Eureka是Netflix开发的服务发现组件,本身是一个基于 REST 的服务。Spring Cloud 将它集成在其子项目 spring-cloud-netflix 中,以实现Spring Cloud 的服务注册于发现,同时还提供了负载均衡、故障转移等能力。

13、Eureka 注册中心三种角色。

  a、Eureka Server,通过 Register、Get、Renew 等接口提供服务的注册和发现。
  b、Application Service (Service Provider),服务提供方,把自身的服务实例注册到 Eureka Server中。
  c、Application Client (Service Consumer),服务调用方,通过 Eureka Server获取服务列表,消费服务。

14、Eureka的入门案例介绍与使用,首先创建Eureka Server,通过 Register、Get、Renew 等接口提供服务的注册和发现。由于使用的是maven构建的springboot项目,所以首先引入pom.xml配置文件,这里需要注意的是springboot的版本、springcloud的版本对应,不然会出现一个版本不对应错误,稍后可以贴一下错误。我使用的springboot版本是2.2.0的,springcloud版本是Hoxton.RC1。

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
 5     https://maven.apache.org/xsd/maven-4.0.0.xsd">
 6     <modelVersion>4.0.0</modelVersion>
 7     <parent>
 8         <groupId>org.springframework.boot</groupId>
 9         <artifactId>spring-boot-starter-parent</artifactId>
10         <version>2.2.0.RELEASE</version>
11         <relativePath />
12         <!-- lookup parent from repository -->
13     </parent>
14     <groupId>com.bie</groupId>
15     <artifactId>springcloud-eureka-server</artifactId>
16     <version>0.0.1-SNAPSHOT</version>
17     <name>springcloud-eureka-server</name>
18     <description>Demo project for Spring Boot</description>
19 
20     <properties>
21         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
22         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
23         <java.version>1.8</java.version>
24         <spring-cloud.version>Hoxton.RC1</spring-cloud.version>
25         <maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
26     </properties>
27 
28     <dependencies>
29         <dependency>
30             <groupId>org.springframework.boot</groupId>
31             <artifactId>spring-boot-starter-web</artifactId>
32         </dependency>
33         <dependency>
34             <groupId>org.springframework.cloud</groupId>
35             <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
36         </dependency>
37 
38         <dependency>
39             <groupId>org.springframework.boot</groupId>
40             <artifactId>spring-boot-starter-test</artifactId>
41             <scope>test</scope>
42             <exclusions>
43                 <exclusion>
44                     <groupId>org.junit.vintage</groupId>
45                     <artifactId>junit-vintage-engine</artifactId>
46                 </exclusion>
47             </exclusions>
48         </dependency>
49     </dependencies>
50 
51     <dependencyManagement>
52         <dependencies>
53             <dependency>
54                 <groupId>org.springframework.cloud</groupId>
55                 <artifactId>spring-cloud-dependencies</artifactId>
56                 <version>${spring-cloud.version}</version>
57                 <type>pom</type>
58                 <scope>import</scope>
59             </dependency>
60         </dependencies>
61     </dependencyManagement>
62 
63     <build>
64         <plugins>
65             <plugin>
66                 <groupId>org.springframework.boot</groupId>
67                 <artifactId>spring-boot-maven-plugin</artifactId>
68             </plugin>
69         </plugins>
70     </build>
71 
72     <repositories>
73         <repository>
74             <id>spring-milestones</id>
75             <name>Spring Milestones</name>
76             <url>https://repo.spring.io/milestone</url>
77         </repository>
78     </repositories>
79 
80 </project>

如果版本不一致,报错如下所示:

1 java.lang.NoSuchMethodError: org.springframework.boot.builder.SpringApplicationBuilder.<init>([Ljava/lang/Object;)V

如果不知道如何,找对应的版本,可以使用spring官网的案例,将pom.xml配置拷贝到你的代码里面即可。

SpringCloud的入门学习之Eureka(Eureka的单节点)

SpringCloud的入门学习之Eureka(Eureka的单节点)

SpringCloud的入门学习之Eureka(Eureka的单节点)

最后找到这个页面,然后将这个jdk、打包方式、java语言、maven方式、项目名称、包名称、依赖包等等选择好,就可以下载下来,然后将pom.xml里面的配置拷贝到你的项目里面即可。

SpringCloud的入门学习之Eureka(Eureka的单节点)

然后配置一下application.properties配置文件。将eureka不注册到Eureka-server服务中、不从Eureka-server中获取服务注册信息,避免出现错误。

 1 # 配置项目名称
 2 spring.application.name=springcloud-eureka-server
 3 
 4 # 配置端口号
 5 spring.port=8080
 6 
 7 # 是否将自己注册到 Eureka-Server 中,默认的为 true
 8 eureka.client.registerWithEureka=false
 9 
10 # 是否从 Eureka-Server 中获取服务注册信息,默认为 true
11 eureka.client.fetchRegistry=false

可以将注册@EnableEurekaServer添加到主类上面,表示启动Eureka-server服务端。Eureka提供服务的注册与发现。

 1 package com.bie;
 2 
 3 import org.springframework.boot.SpringApplication;
 4 import org.springframework.boot.autoconfigure.SpringBootApplication;
 5 import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
 6 
 7 @EnableEurekaServer // 表示启动的是eureka的server服务器端
 8 @SpringBootApplication
 9 public class SpringCloudApplication {
10 
11     public static void main(String[] args) {
12         SpringApplication.run(SpringCloudApplication.class, args);
13     }
14 
15 }

启动主类以后,如果正常启动可以在浏览器查看到页面信息,Eureka提供的管理界面,通过管理界面可以看到注册到Eureka-server的服务信息。如下所示:

SpringCloud的入门学习之Eureka(Eureka的单节点)

 

作者:别先生

博客园:https://www.cnblogs.com/biehongli/

如果您想及时得到个人撰写文章以及著作的消息推送,可以扫描上方二维码,关注个人公众号哦。

 

版权声明:程序员胖胖胖虎阿 发表于 2022年11月11日 下午9:40。
转载请注明:SpringCloud的入门学习之Eureka(Eureka的单节点) | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...