springclound提供rpc为各微服务模块进行调用,eureka为注册中心-rpc为feign 默认就集成了ribbon(负载均衡客户端)

具体代码在E:\学习文档子目录压缩\框架\微服务相关\springcloud\springclound提供rpc为各微服务模块进行调用,eureka为注册中心\springclound提供rpc为各微服务模块进行调用,eureka为注册中心-rpc为feign 默认就集成了ribbon(负载均衡客户端)或

我的网盘\我的笔记\学习文档子目录压缩\框架\微服务相关\springcloud\springclound提供rpc为各微服务模块进行调用,eureka为注册中心\springclound提供rpc为各微服务模块进行调用,eureka为注册中心-rpc为feign 默认就集成了ribbon(负载均衡客户端)

 

 

1.先开注册中心 EurekaServer,在开两个服务提供者eurekaclient (一个端口8762,一个端口8763),在开服务消费者服务 serice-feign,然后去注册中心看下,效果如下

 

2.请求service-ribbon 服务看负载效果

 

 

 

 

 

 

4.1 服务注册

4.1.1创建eurekaserver 项目

4.1.2引入maven依赖

<parent>

            <groupId>org.springframework.bootgroupId>

            <artifactId>spring-boot-starter-parentartifactId>

            <version>1.5.2.RELEASEversion>

            <relativePath />

      parent>

      <properties>

            <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>

            <project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding>

            <java.version>1.8java.version>

      properties>

 

      <dependencies>

           

            <dependency>

                  <groupId>org.springframework.cloudgroupId>

                  <artifactId>spring-cloud-starter-eureka-serverartifactId>

            dependency>

           

            <dependency>

                  <groupId>org.springframework.bootgroupId>

                  <artifactId>spring-boot-starter-testartifactId>

                  <scope>testscope>

            dependency>

      dependencies>

      <dependencyManagement>

            <dependencies>

                  <dependency>

                       <groupId>org.springframework.cloudgroupId>

                       <artifactId>spring-cloud-dependenciesartifactId>

                       <version>Dalston.RC1version>

                       <type>pomtype>

                       <scope>importscope>

                  dependency>

            dependencies>

      dependencyManagement>

      <build>

            <plugins>

                  <plugin>

                       <groupId>org.springframework.bootgroupId>

                       <artifactId>spring-boot-maven-pluginartifactId>

                  plugin>

            plugins>

      build>

      <repositories>

            <repository>

                  <id>spring-milestonesid>

                  <name>Spring Milestonesname>

                  <url>https://repo.spring.io/milestoneurl>

                  <snapshots>

                       <enabled>falseenabled>

                  snapshots>

            repository>

      repositories>

 

4.3配置application.yml

server:

  port: 8761

eureka:

  instance:

    hostname: localhost

  client:

    registerWithEureka: false

    fetchRegistry: false

    serviceUrl:

      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

 

4.4启动EurekaServer

@SpringBootApplication

@EnableEurekaServer

public class EurekaServerApplication {

      public static void main(String[] args) {

       SpringApplication.run(EurekaServerApplication.class, args);

      }

}

  1. eureka.client.registerWithEureka=true  #是否将自身注册  
  2. eureka.client.fetchRegistry=false    #如果为true,启动时报警

4.5打开eureka server 界面的

http://localhost:8761 ,界面如下:

 

No application available 没有服务被发现 ……^_^ 
因为没有注册服务当然不可能有服务被发现了。

 

 

4.2 服务提供者

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

 

4.2.1 创建项目eurekaclient

4.2.2 引入maven依赖

<parent>

       <groupId>org.springframework.bootgroupId>

       <artifactId>spring-boot-starter-parentartifactId>

        <version>1.5.2.RELEASEversion>

       <relativePath />

    parent>

    <properties>

       <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>

        <project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding>

       <java.version>1.8java.version>

    properties>

    <dependencies>

       <dependency>

           <groupId>org.springframework.cloudgroupId>

           <artifactId>spring-cloud-starter-eurekaartifactId>

       dependency>

       <dependency>

           <groupId>org.springframework.bootgroupId>

           <artifactId>spring-boot-starter-webartifactId>

       dependency>

       <dependency>

           <groupId>org.springframework.bootgroupId>

           <artifactId>spring-boot-starter-testartifactId>

           <scope>testscope>

       dependency>

    dependencies>

    <dependencyManagement>

       <dependencies>

           <dependency>

              <groupId>org.springframework.cloudgroupId>

              <artifactId>spring-cloud-dependenciesartifactId>

              <version>Dalston.RC1version>

              <type>pomtype>

              <scope>importscope>

           dependency>

       dependencies>

    dependencyManagement>

    <build>

       <plugins>

           <plugin>

              <groupId>org.springframework.bootgroupId>

              <artifactId>spring-boot-maven-pluginartifactId>

           plugin>

       plugins>

    build>

    <repositories>

       <repository>

           <id>spring-milestonesid>

           <name>Spring Milestonesname>

           <url>https://repo.spring.io/milestoneurl>

           <snapshots>

              <enabled>falseenabled>

           snapshots>

       repository>

    repositories>

4.2.3 application.yml配置

eureka:

  client:

    serviceUrl:

      defaultZone: http://localhost:8761/eureka/

server:

  port: 8762

spring:

  application:

    name: service-hi

 

4.2.4 发布服务

通过注解@EnableEurekaClient 表明自己是一个eurekaclient.

 

@SpringBootApplication

@EnableEurekaClient

@RestController

public class ServiceHiApplication {

 

     public static void main(String[] args) {

          SpringApplication.run(ServiceHiApplication.class, args);

     }

 

     @Value("${server.port}")

     String port;

 

     @RequestMapping("/hi")

     public String home(@RequestParam String name) {

          return "hi " + name + ",i am from port:" + port;

     }

 

}

4.2.5 演示效果

需要指明spring.application.name,这个很重要,这在以后的服务与服务之间相互调用一般都是根据这个name 。 
启动工程,打开http://localhost:8761 ,即eureka server 的网址:

 

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

这时打开 http://localhost:8762/hi?name=forezp ,你会在浏览器上看到 :

hi forezp,i am from port:8762

  • 服务消费者(Feign)

6.1 什么是Feign

Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单。使用Feign,只需要创建一个接口并注解。它具有可插拔的注解特性,可使用Feign 注解和JAX-RS注解。Feign支持可插拔的编码器和解码器。Feign默认集成了Ribbon,并和Eureka结合,默认实现了负载均衡的效果。

简而言之:

  • Feign 采用的是基于接口的注解
  • Feign 整合了ribbon

6.2 准备工作

继续用上一节的工程, 启动eureka-server,端口为8761; 启动service-hi 两次,端口分别为8762 8773.

6.2.1 准备工创建一个feign的服务

新建一个spring-boot工程,取名为serice-feign,在它的pom文件引入Feign的起步依赖spring-cloud-starter-feignEureka的起步依赖spring-cloud-starter-eurekaWeb的起步依赖spring-boot-starter-web,代码如下:

 

<parent>

        <groupId>org.springframework.bootgroupId>

        <artifactId>spring-boot-starter-parentartifactId>

        <version>1.5.2.RELEASEversion>

        <relativePath/>

    parent>

 

    <properties>

        <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>

        <project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding>

        <java.version>1.8java.version>

    properties>

 

    <dependencies>

        <dependency>

            <groupId>org.springframework.cloudgroupId>

            <artifactId>spring-cloud-starter-eurekaartifactId>

        dependency>

        <dependency>

            <groupId>org.springframework.cloudgroupId>

            <artifactId>spring-cloud-starter-feignartifactId>

        dependency>

        <dependency>

            <groupId>org.springframework.bootgroupId>

            <artifactId>spring-boot-starter-webartifactId>

        dependency>

 

        <dependency>

            <groupId>org.springframework.bootgroupId>

            <artifactId>spring-boot-starter-testartifactId>

            <scope>testscope>

        dependency>

    dependencies>

 

    <dependencyManagement>

        <dependencies>

            <dependency>

                <groupId>org.springframework.cloudgroupId>

                <artifactId>spring-cloud-dependenciesartifactId>

                <version>Dalston.RC1version>

                <type>pomtype>

                <scope>importscope>

            dependency>

        dependencies>

    dependencyManagement>

 

    <build>

        <plugins>

            <plugin>

                <groupId>org.springframework.bootgroupId>

                <artifactId>spring-boot-maven-pluginartifactId>

            plugin>

        plugins>

    build>

 

    <repositories>

        <repository>

            <id>spring-milestonesid>

            <name>Spring Milestonesname>

            <url>https://repo.spring.io/milestoneurl>

            <snapshots>

                <enabled>falseenabled>

            snapshots>

        repository>

    repositories>

6.2.2 application.yml配置

在工程的配置文件application.yml文件,指定程序名为service-feign,端口号为8765,服务注册地址为http://localhost:8761/eureka/ ,代码如下:

eureka:

  client:

    serviceUrl:

      defaultZone: http://localhost:8761/eureka/

server:

  port: 8765

spring:

  application:

    name: service-feign

 

6.2.3 定义一个feign接口

@FeignClient(value = "service-hi")

public interface SchedualServiceHi {

     @RequestMapping(value = "/hi", method = RequestMethod.GET)

     String sayHiFromClientOne(@RequestParam(value = "name") String name);

}

6.2.4一个”/hi”的API接口

@RestController

public class HiController {

    @Autowired

    SchedualServiceHi schedualServiceHi;

    @RequestMapping(value = "/hi",method = RequestMethod.GET)

    public String sayHi(@RequestParam String name){

        return schedualServiceHi.sayHiFromClientOne(name);

    }

}

6.2.5启动方式

@SpringBootApplication

@EnableDiscoveryClient

@EnableFeignClients

public class SericeFeignApp {

 

    public static void main(String[] args) {

       SpringApplication.run(SericeFeignApp.class, args);

    }

 

}

 

6.2.6 演示效果

启动程序,多次访问http://localhost:8765/hi?name=forezp,浏览器交替显示:

hi forezp,i am from port:8762

hi forezp,i am from port:8763

 

 

 

 

你可能感兴趣的:(微服务相关)