美文网首页Java
spring cloud之Eureka--服务治理

spring cloud之Eureka--服务治理

作者: 毛于晏 | 来源:发表于2018-12-08 14:56 被阅读110次

最近一直在看spring的一些框架, 前面发布了一些关于springboot的文章, 然而学习是不能止步的. 学习多了才发现学习还是蛮有意思的.后面一段时间会持续更新一些关于springcloud的文章;

下面是我github的一个demo仅供参考,后续我会将spring cloud的内容继续完善;
spring_cloud_demo

1.什么是Eureka

Eureka是Netflix开发的服务发现框架, 本身是一个基于REST的服务;(这里我们在请求时候基本运用的是RESTful风格的URL, 后面会说道)
Eureka包含两个组件:Eureka Server和Eureka Client。
Eureka Server提供服务注册服务,各个节点启动后,会在Eureka Server中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。
在应用启动后,将会向Eureka Server发送心跳,默认周期为30秒,如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,Eureka Server将会从服务注册表中把这个服务节点移除(默认90秒)。
Eureka Server之间通过复制的方式完成数据的同步,Eureka还提供了客户端缓存机制,即使所有的Eureka Server都挂掉,客户端依然可以利用缓存中的信息消费其他服务的API。综上,Eureka通过心跳检查、客户端缓存等机制,确保了系统的高可用性、灵活性和可伸缩性。

Eureka
如图有三个模块,
1.服务发现组件: 这个就是Eureka service, 消费者和服务者都要在该服务器上注册,只有在这个服务上注册的才可以相互进行数据交流
2:服务消费者: 调用方, 例如查看订单下的所有商品, 现在订单系统是一个服务器, 商品系统是一个服务器; 我只能拿到订单号, 找到订单下的商品的id, 为了得到商品信息, 只有拿着这些商品id去商品服务上去找商品.
3.服务提供者: 被调用方, 2中说道的商品服务,为订单系统调用提供数据.

2.spring cloud

当你学习过spring springMVC后你会发现, spring后面出的框架都是在这些基础上进行叠加, 对其他框架进行整合, 去其糟粕,取其精华;
spring cloud, 基于spring boot之上进行开发, cloud将许多优秀的框架进行对spring的兼容, 并二次封装,让使用者更加方面的调取服务;spring boot是spring cloud的基础; 一会boot, 一会cloud 是不是很乱; 如果还不会使用spring boot的请左转 手把手教你springboot快速整合mybatis;

3.创建一个Eureka服务端

废话不多说了,下面进入正题;

3.1添加依赖

pom.xml

<!-- 这里可以用IDEA进行快速创建spring boot项目 -->
<parent>
      <!--spring boot 基础依赖-->
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.1.RELEASE</version>
        <relativePath/> 
    </parent>
<!-- 使用dependencyManagement进行版本管理 
    spring cloud里面整合了大量的框架, 使用这个对里面的依赖进行统一管理
-->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Camden.SR6</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
<!-- 引入eureka server依赖 -->
    <dependencies>
         <!-- 引入eureka server依赖 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka-server</artifactId>
        </dependency>
    </dependencies>

3.2添加注解

依赖我们加入后, 需要在spring boot的启动类中添加一个注解

package cn.cooplan.eurekaservice;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@EnableEurekaServer   //告诉spring boot启动Eureka的服务端
@SpringBootApplication
public class EurekaServiceApplication {

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

3.3编写配置文件

eureka:
  client:
  
    register-with-eureka: false #false 不将本服务注册到eureka;(该项目为Eureka的服务端,只提供容器环境, 不进行调用)
   
    fetch-registry: false  #false 不从Eureka拉取资源
    service-url:
  
      defaultZone: http://192.168.0.101:8003/eureka/  #defaultZone在编写yml时候没有提示, 注意的是一定要驼峰命名,不然会找不到Eureka服务地址
  instance:
  
    prefer-ip-address: true  #以IP地址注册到服务中心,相互注册使用IP地址

server:
  port: 8003 #修改tomcat默认端口号, 因为在一台电脑进行演示, 避免端口冲突

3.4启动Eureka服务

启动spring boot就可以了, 启动spring boot的启动类;
浏览器访问:http://192.168.0.101:8003
当看到下面的页面, 说明你的Eureka服务启动成功

Eureka.jpg
到着我们已经做了三分之一的工作,~ 下面是对消费者和生产者进行配置;

4.配置生产者和消费者

这里我们以订单系统为消费者, 商品系统为生产者;
创建order和goods两个spring boot应用, 添加spring cloud依赖, 添加依赖与3.创建一个Eureka服务端步骤一样;

4.1添加启动类注解, 编写yml文件

Eureka的服务端与客户端(生产者, 消费者)差异在启动类加的注解不一样, yml的配置参数不同;
下面举例一个order为例, 两者配置方法相同

4.2添加启动类注解

package cn.cooplan.order;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@EnableEurekaClient //开启Eureka客户端服务, 代表该服务是一个客户端
@SpringBootApplication
public class OrderApplication {

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

}

4.3编写yml文件

eureka:
  client:
    fetch-registry: true    #true将服务添加到Eureka服务中
    register-with-eureka: true  #true允许从Eureka服务中获取数据, 进行交互
    service-url:
      #注意: defaultZone 一定要驼峰命名
      defaultZone: http://192.168.0.101:8003/eureka/  #指向你的Eureka服务
server:
  port: 8002

4.4启动Eureka客户端

同Eureka service一样启动spring boot的启动类; 注意的是, 先启动Eureka service服务, 不然客户端会找不到service报错
浏览器访问:http://192.168.0.101:8003
当看到下面的页面, 说明你的客户端已经注册到Eureka服务中

Eureka.jpg

5.总结

这个时候我们的Eueka服务已经完成,
我们在使用spring cloud的时候, 实际上就是在写一个spring boot的项目; cloud只是将我们需要的分布式框架与spring整合, 并且更方便的调用;
以上内容是我在学习中自己摸索的, 如果有问题, 请留言;

相关文章

网友评论

    本文标题:spring cloud之Eureka--服务治理

    本文链接:https://www.haomeiwen.com/subject/jmlqhqtx.html