SpringCloud入门之Eureak

1. 什么是Spring Cloud

Spring Could 是基于SpringBoot 实现的微服务架构开发工具,它利用Spring Boot 的开发便利性简化了分布式系统的开发,比如服务注册,服务发现,服务网关,服务路由,链路追踪,负载均衡、数据监控等,Spring Could 并不制造轮子,而是将市面上开发比较好的模块集成进去,进行封装,从而减少模块的开发成本。

2. Spring Could的组件

在这里插入图片描述

3. Spring Could 的优缺点

3.1 优点
		1. 耦合度较低,不会影响其他的模块开发
		2. 减轻团队的成本,可以并行开发,不用关注其他人怎么开发,先关注自己的开发
		3. 服务拆分粒度更细,有利于资源的重复利用,有利于提高开发效率
		4. 可以更精准的制定优化服务方案,提高系统的可维护性
3.2 缺点:
		1. 部署较麻烦,给运维工程师带来一定的麻烦
		2. 针对数据的管理比较麻烦
		3. 系统集成测试比较麻烦

4. Spring Cloud 和Dubbo对比

Dubbo只是实现了服务治理,而SpringCloud 实现了微服务架构的方方面面,服务治理只是其中的一个方面。
最大的区别是: Dubbo底层是使用Netty这样的NIO框架,是基于TCP协议传输的,配合Hession序列化完成的RPC通信。而Spring Cloud 是基于HTTP协议+Rest接口调用远程过程的通信,相对来说,HTTP请求会有更大的报文,占的宽带也会更多。但是REST相比RPC更为灵活。

DubboSpringCloud
服务注册中心ZookeeperSpring Cloud Netfix Eureka
服务调用方式RPCREST API
服务监控Dubbo-monitorSpring Boot Admin
熔断器不完善Spring Cloud Netflix Hystrix
服务网关Spring Cloud Netflix Zuul
分布式配置Spring Cloud Config
服务跟踪Spring Cloud Sleuth
数据流Spring Cloud Stream
批量任务Spring Cloud Task
信息总线Spring Cloud Bus

5. SpringCloud 常用模块

服务发现——Netflix Eureka
客服端负载均衡——Netflix Ribbon
断路器——Netflix Hystrix
服务网关——Netflix Zuul
分布式配置——Spring Cloud Config

6 服务发现——Netflix Eureka

注册中心是服务发现的核心,它保存了各个可用服务实例的网络网址。服务注册中心必须要有高可用性和实时更新功能。 Netflix Eureka 就是一个服务注册中心。它提供了服务注册和查询信息的REST API。
服务中心又称注册中心,管理各种服务的注册、发现、熔断、负载、降级等。
有了服务中心调用关系会发生变化在这里插入图片描述
有了服务中心任何一个服务都不能直接调用别的服务,要通过服务中心在这里插入图片描述

项目1调用项目2项目2调用项目3

在这里插入图片描述
加入服务中心后
在这里插入图片描述

当然服务中心这么重要的组件一但挂掉将会影响全部服务,因此需要搭建Eureka集群来保持高可用性,生产中建议最少两台。
随着系统的流量不断增加,需要根据情况来扩展某个服务,Eureka内部已经提供均衡负载的功能,只需要增加相应的服务端实例既可。
那么在系统的运行期间某个实例挂了怎么办?Eureka内容有一个心跳检测机制,如果某个实例在规定的时间内没有进行通讯则会自动被剔除掉,避免了某个实例挂掉而影响服务。
因此使用了Eureka就自动具有了注册中心、负载均衡、故障转移的功能。
Eureka Server提供服务注册服务,各个节点启动后,会在Eureka Server中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。

6.2 Eureka搭建

1. 在父模块的pom文件中定义springCloud的版本

<!--Spring Cloud-->
5
        <dependency>
6
            <groupId>org.springframework.cloud</groupId>
7
            <artifactId>spring-cloud-dependencies</artifactId>
8
            <version>Finchley.SR2</version>
9
            <type>pom</type>
10
            <scope>import</scope>
11
        </dependency>
12
   

2.创建Eureka服务器模块commonservice-eureka
3. 配置pom文件

<?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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.forezp</groupId>
    <artifactId>eureka-server</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>eureka-server</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>com.forezp</groupId>
        <artifactId>sc-f-chapter1</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

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

</project>

4.配置application.properties

#服务端口
server.port=8220
# 服务名
spring.application.name=ketai-eureka
# 环境设置:dev、test、prod
spring.profiles.active=dev
# 服务地址
eureka.instance.hostname=localhost
#Eureka客户端与Eureka服务端进行通信的地址
eureka.client.serviceUrl.defaultZone= http://${eureka.instance.hostname}:${server.port}/eureka/
#是否将自己注册到Eureka服务器中,本身是服务器,无需注册
eureka.client.registerWithEureka=false
# 是否需要拉取服务信息
eureka.client.fetchRegistry=false 
# 设置日志级别
logging.level.root=WARN

5 创建启动类
在启动类上加上注解**@EnableEurekaServer**

@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class);
    }
}

6启动注册中心并在浏览器访问
System Status:系统信息
DS Replicas:服务器副本
Instances currently registered with Eureka:已注册的微服务列表
General Info:一般信息
Instance Info:实例信息

6.3 服务注册

1. 创建maven模块
2. pom文件

?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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.forezp</groupId>
    <artifactId>service-hi</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>service-hi</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>com.forezp</groupId>
        <artifactId>sc-f-chapter1</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


</project>

3.、添加服务配置信息
配置application.properties,在客户端微服务中添加注册Eureka服务的配置信息

#指定注册中心地址
eureka.client.service-url.defaultZone=http://localhost:8220/eureka/
#eureka服务器上获取的是服务器的ip地址,否则是主机名
eureka.instance.prefer-ip-address=true

4、添加Eureka客户端注解
在客户端微服务启动类中添加注解
@EnableEurekaClient

@EnableDiscoveryClient和@EnableEurekaClient:都是能够让注册中心能够发现,扫描到该服务。
@EnableEurekaClient只适用于Eureka作为注册中心,@EnableDiscoveryClient 可以是其他注册中心。
从Spring Cloud Edgware开始,@EnableDiscoveryClient 或@EnableEurekaClient 可省略。只需加上相关依赖,并进行相应配置,即可将微服务注册到服务发现组件上。
5、启动客户端微服务
启动注册中心
启动已注册的微服务,可以在Eureka注册列表中看到被注册的微服务

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值