前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >玩转SpringCloud(F版本) 一.服务的注册与发现(Eureka)

玩转SpringCloud(F版本) 一.服务的注册与发现(Eureka)

作者头像
房上的猫
发布2019-01-24 11:06:38
5550
发布2019-01-24 11:06:38
举报
文章被收录于专栏:个人随笔

一.服务的注册与发现(Eureka)

spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等

1. 主项目:版本控制

Springboot集中声明

代码语言:javascript
复制
<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>2.0.4.RELEASE</version>
  <relativePath/>
</parent>

Springcloud版本

代码语言:javascript
复制
<spring-cloud.version>Finchley.RELEASE</spring-cloud.version>

主项目管理的依赖Jar:

代码语言:javascript
复制
<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
  </dependency>
</dependencies>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

Springboot组件:

代码语言:javascript
复制
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

2.创建2个model工程

一个model工程作为服务注册中心,即Eureka Server,另一个作为Eureka Client。

1)创建服务注册中心(Eureka Server)

项目架构:

引入主项目:

代码语言:javascript
复制
<parent>
   <groupId>com.fsdm</groupId>
   <artifactId>SpringCloud_test1</artifactId>
   <version>1.0-SNAPSHOT</version>
</parent>

引入spring-cloud-starter-netflix-eureka-server的依赖:

代码语言:javascript
复制
<dependencies>
   <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
   </dependency>
</dependencies>

Application启动类:

代码语言:javascript
复制
@EnableEurekaServer
@SpringBootApplication
public class Demo1Application {

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

注解解析:

@SpringBootApplication

1. 复合注解主要包括@ComponentScan,和@SpringBootConfiguration,@EnableAutoConfiguration。

2. @SpringBootConfiguration标注当前类是配置类

3. @EnableAutoConfiguration启动自动的配置,根据你添加的jar包来配置你项目的默认配置

4. @EnableAutoConfiguration扫描当前包及其子包下被@Component,@Controller,@Service,@Repository注解标记的类并纳入到spring容器中进行管理

@EnableEurekaServer

1. 表明这是一个EurekaServer(服务注册中心)

2. 配合yml文件使用:

代码语言:javascript
复制
Eureka:
  Client:
    registerWithEureka: false
    fetchRegistry: false

yml配置:

代码语言:javascript
复制
server:
  port: 8761

eureka:
  instance:
    hostname: localhost
  client:
  #  表明自己是一个eureka server.
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

spring:
  application:
    name: eurka-server

启动程序,访问http://localhost:8761/

当client向server注册时,它会提供一些元数据,例如主机和端口,URL,主页等。Eureka server 从每个client实例接收心跳消息。 如果心跳超时,则通常将该实例从注册server中删除。

No application available 表示没有服务被发现

因为我们还没有注册服务当然没有发现服务啦,

2)创建一个服务提供者 (eureka client)

项目架构:

引入主项目:

代码语言:javascript
复制
<parent>
   <groupId>com.fsdm</groupId>
   <artifactId>SpringCloud_test1</artifactId>
   <version>1.0-SNAPSHOT</version>
</parent>

需要的jar以及组件:

代码语言:javascript
复制
<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>

Application启动类:

代码语言:javascript
复制
@SpringBootApplication
@EnableEurekaClient
@RestController
public class Demo2Application {

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

   @Value("${server.port}")
   String port;
   @RequestMapping("/hi")
   public String home(@RequestParam String name) {
      return "hi "+name+",i am from port:" +port;
   }


}

注解解析:

@EnableEurekaClient

1. 表明这是一个EurekaClient(服务提供者)

2. 基于spring-cloud-netflix,只能为eureka作用。

@RestController

1. 复合注解主要包括@Controller和@ResponseBody

2. 标注controller层,可供url访问

3. 无法返回jsp页面,或者html,配置的视图解InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容。

yml配置:

代码语言:javascript
复制
server:
  port: 8762

spring:
  application:
#工程名称
    name: service-hi

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

需要指明spring.application.name,这个很重要,这在以后的服务与服务之间相互调用一般都是根据这个name 。

启动这个项目,刷新http://localhost:8761/

发现一个服务已经注册在服务中了,服务名为SERVICE-HI ,端口为8762

你会发现一个服务已经注册在服务中了,服务名为SERVICE-HI

关于红色字体的警告解释:

https://www.cnblogs.com/breath-taking/articles/7940364.html

访问http://localhost:8762/hi?name=fsdm

未完,待续。。。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-09-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一.服务的注册与发现(Eureka)
    • 1. 主项目:版本控制
      • 2.创建2个model工程
        • 1)创建服务注册中心(Eureka Server)
        • 项目架构:
        • 2)创建一个服务提供者 (eureka client)
    相关产品与服务
    微服务引擎 TSE
    微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档