spring cloud --1. 服务的注册与发现(Eureka)
此文章是看了方志朋老师的教材自己写的框架demo:
学习spring cloud推荐大家看下方志朋老师的史上最简单的 SpringCloud 教程 | 终章,地址如下:
https://blog.csdn.net/forezp/article/details/70148833
spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等。它运行环境简单,可以在开发人员的电脑上跑。
spring cloud基于springboot
一:服务的注册与发现(Eureka)
1.作用
Spring Cloud Netflix下的Eureka是一个服务注册和发现模块。
Eureka:
1. 是纯正的 servlet 应用,需构建成war包部署
2. 使用了 Jersey 框架实现自身的 RESTful HTTP接口
3. peer之间的同步与服务的注册全部通过 HTTP 协议实现
4. 定时任务(发送心跳、定时清理过期服务、节点同步等)通过 JDK 自带的 Timer 实现
5. 内存缓存使用Google的guava包实现
2.代码实现(注册中心)
2.1创建一个maven项目:
2.2项目创建成功后,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> <groupId>com.immo</groupId> <artifactId>immo-eureka</artifactId> <version>0.0.1-SNAPSHOT</version>
<!-- spring boot 依赖包 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.2.RELEASE</version> <relativePath/> </parent>
<!-- 编码和java版本 --> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.7</java.version> </properties>
<!-- spring cloud --> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> <version>1.3.4.RELEASE</version> </dependency> </dependencies>
</project> |
2.3 编写启动类
在src/main/java 下创建com.immo包,创建EurekaApplication.java:
打开EurekaApplication.java,编写启动类:
@SpringBootApplication注解:相当于
@Configuration:用于定义一个配置类
@EnableAutoConfiguration :Spring Boot 会自动根据你jar 包的 依赖来自动配置项目。
@ComponentScan:告诉Spring 哪个packages 的用注解标识的类会 被spring自动扫描并且装入bean 容器
@EnableEurekaServer:声明是一个eureka的一个server
package com.immo;
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication @EnableEurekaServer public class EurekaApplication { public static void main(String[] args) { SpringApplication.run(EurekaApplication.class,args); } } |
2.4 编写配置文件
在src/main/resources下创建application.properties 配置文件:
(spring boot启动默认找该文件,或者appication.yml)
server.port=9000 eureka.instance.hostname=localhost #表示是否将自己注册到Eureka eureka.client.registerWithEureka=false #是否从Eureka中获取注册信息 eureka.client.fetchRegistry=false #指向另一个注册中心 eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/ # 设为false,关闭自我保护 eureka.server.enable-self-preservation= true # 清理间隔(单位毫秒,默认是60*1000) eureka.server.eviction-interval-timer-in-ms= 10000 #心跳间隔时间,默认是30秒 eureka.server.instance.lease-renewal-interval-in-seconds= 10 #最后一次心跳时间后leaseExpirationDurationInSeconds秒就认为是下线了,默认是90秒 eureka.server.instance.lease-expiration-duration-in-seconds= 30 |
2.5 测试
执行EurekaApplication.java的main方法:
启动成功后,访问 http://localhost:9000/ 进入eureka的管理界面(目前还没发布服务) :