首页 > 编程语言 > 详细

Spring cloud 框架 --- Eureka 心得

时间:2020-05-12 18:54:02      阅读:84      评论:0      收藏:0      [点我收藏+]

1.前言

(1)接触了spring cloud 框架 ,首先要知道Eureka是什么。

    Eureka是spring cloud框架的 注册服务中心  ,可以有多个注册服务中心存在, 多个注册中心通过相互注册来同步服务注册信息。

(2)有什么用处?

    是为了分布式运算做配合工作,让不同的服务器可以相互通信,以微服务的方式各自处理专门的业务,其实就是http的访问,向指定服务器传入参数,让其把处理结果返回过来,但是因为服务提供者的访问路径不稳定,即ip等因素不稳定,可能会变化,却又不想让服务消费者改变调用代码,因此引入一个中间层 eureka ,统一管理所有服务的访问接口,这样消费者只需要向注册中心获取服务列表,知道服务名字【名字一般不会变】,那么就不需要关心ip是否变化,动态注入参数即可。

    不仅是分布式 计算用到 服务清单 ,集群 也可以用到 ,用于做负载均衡 ,提高处理效率。

2.心得

(1)spring cloud 框架分 3类角色  :服务消费者  、 服务提供者  、注册中心 。

技术分享图片

 

 

(2)服务提供者提供服务,向消费者暴露http请求接口【服务提供者也可以是服务消费者】,需要向服务注册中心注册信息 ,即在服务列表添加这个提供者服务的ip等信息;

(3)服务消费者则向服务注册中心获取服务列表 ,通过注册列表知道服务名字,即可获取并调用服务提供者的接口,这样就不需要知道服务提供者的具体ip信息了,ip信息由服务注册中心统一管理,因此,服务消费者只需要知道eureka 服务中心ip地址或者域名即可获取服务列表信息后使用服务接口。

(4)服务提供者需要知道 eureka 服务中心ip地址或者域名 ,向最少一个eureka 服务中心注册信息 ,可以多个同时注册。

注册中心可以互相注册,也可以不注册,但是为了保持服务列表的同步性,也就是CAP定理的 AP高可用性,服务注册中心一般是设置相互注册,

因此需要知道每个注册中心的ip地址/域名,

(5)spring cloud 引入了 eureka 的好处就是不再需要关注提供者的ip信息了 ,因为提供者的ip信息容易变动 ,现在提供者的信息由服务注册中心统一管理,ip信息不容易变动,因此只需要关注注册中心的ip即可  ,因为 注册中心相互注册信息同步,只要有一个没有坏,都不影响服务使用,

3.目录结构

使用maven多模块 ,在一个maven项目了添加多个maven子项目,使用spring boot 框架,

技术分享图片

 

 

 4.eureka 注册中心配置

新建3个工程,

microservicecloud-eureka-7001 、
microservicecloud-eureka-7002 、
microservicecloud-eureka-7003

 配置基本一样,

技术分享图片

 

 

 pom.xml文件导入依赖

技术分享图片
<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>

    <parent>
        <groupId>com.atguigu.springcloud</groupId>
        <artifactId>microservicecloud</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

    <artifactId>microservicecloud-eureka-7001</artifactId>

    <dependencies>
        <!--eureka-server服务端 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka-server</artifactId>
        </dependency>
        <!-- 修改后立即生效,热部署 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>springloaded</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>
    </dependencies>

</project>
View Code

在启动的主函数加入注解 

@EnableEurekaServer // EurekaServer服务器端启动类,接受其它微服务注册进来

技术分享图片

 

 

 在application.yml配置文件设置属性

技术分享图片
server: 
  port: 7001
 
eureka: 
  instance:
    hostname: eureka7001.com #eureka服务端的实例名称(这里使用了虚拟主机映射,修改hosts文件即可实现)
  client: 
    register-with-eureka: false     #false表示不向注册中心注册自己。
    fetch-registry: false     #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
    service-url: 
      #单机 defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
      #设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址(单机)。
      defaultZone: http://localhost:7002/eureka/,http://localhost:7003/eureka/

 

 
View Code

如果想不向其他服务注册中心同步自己的服务列表信息,则需要将

service-url: 
#单机 defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
#设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址(单机)。
defaultZone: http://localhost:7002/eureka/,http://localhost:7003/eureka/

这一段删除,否则最少需要注册一个,不然会报错,启动不了

到了现在,可以启动这个子项目了,【我把7002端口的也启动了,其他端口的注册中心与7001的配置基本一样,只是需要注册的ip地址不同】

技术分享图片

 

 

 

浏览器输入 网址 http://localhost:7001/  ,这是eureka 控制面板,可以显示服务注册情况

技术分享图片

 

 

 

当前还没服务提供者注册,所以显示无服务实例可用

技术分享图片

 

 

 

5.eureka 服务提供者配置

其实所谓的服务提供者,其实是在以前web项目的基础上,添加了向服务注册中心注册该项目的ip访问信息,其他的业务spring boot该怎么做还是老样子,不影响内部业务,这样即便自己项目修改IP,也不会影响到服务消费者的使用,还可以为负载均衡做相应的配合,因为有服务列表的存在,做集群 则很方便。

新建了3个子工程,端口号不同

分别是

microservicecloud-provider-dept-8001
microservicecloud-provider-dept-8002
microservicecloud-provider-dept-8003

配置类似,这里展示8001端口的

技术分享图片

 

 

启动类添加注解

@EnableEurekaClient //本服务启动后会自动注册进eureka服务中
@EnableDiscoveryClient //服务发现,可以是其他注册中心,不仅仅是eureka。

技术分享图片

 

 

 application.yml文件

技术分享图片
server:
  port: 8001

mybatis:
  config-location: classpath:mybatis/mybatis.cfg.xml        # mybatis配置文件所在路径
  type-aliases-package: com.atguigu.springcloud.entities    # 所有Entity别名类所在包
  mapper-locations:
    - classpath:mybatis/mapper/**/*.xml                       # mapper映射文件

spring:
  application:
    name: microservicecloud-dept1 # 应用名称
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource            # 当前数据源操作类型
    driver-class-name: org.gjt.mm.mysql.Driver              # mysql驱动包
    url: jdbc:mysql://localhost:3306/clinic?characterEncoding=utf-8        # 数据库名称
    username: root
    password: mysql
    dbcp2:
      min-idle: 5                                           # 数据库连接池的最小维持连接数
      initial-size: 5                                       # 初始化连接数
      max-total: 5                                          # 最大连接数
      max-wait-millis: 200                                  # 等待连接获取的最大超时时间

eureka:
  client: #客户端注册进eureka服务列表内
    service-url:
      #            defaultZone: http://localhost:7002/eureka
      #       将该service注册到集群eureka中
      #       defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/

      #    应该写 eureka 注册中心服务器的地址 ,如果有域名可以写域名,否则报错无法连接
      defaultZone: http://localhost:7001/eureka/,http://localhost:7002/eureka/,http://localhost:7003/eureka/
  instance:
    instance-id: microservicecloud-dept8001   # 在eureka中显示对应的服务名字  , 在列Status 下面显示
    prefer-ip-address: true     #在eureka中下边的访问路径可以显示IP地址

info: # 在eureka列Status中可以点击info链接,显示有值。链接后的内容就是在这里配置的
  app.name: java3y-microservicecloudn你可以看到我吗
  company.name: www.java3y.com
  build.artifactId: $project.artifactId$
  build.version: $project.version$
View Code

 

启动后,即可自动向服务注册中心注册该工程的ip信息  ,

技术分享图片

 

 

 浏览器查看7001 端口的eureka控制面板

技术分享图片

 

 

 

再查看7002端口的

技术分享图片

 

 

 

都有显示注册的服务实例信息的ip

技术分享图片

 

 

 直接浏览器用localhost调用

技术分享图片

 

 

 

现在知道了ip,可以用ip调用

 

技术分享图片

 

 

 

 

ok,完美运行,不影响服务提供者的路径访问的同时还在注册中心注册了信息列表,

 

6.eureka 服务消费者配置

 

//todo

 

Spring cloud 框架 --- Eureka 心得

原文:https://www.cnblogs.com/c2g5201314/p/12877948.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!