Spring Cloud微服务的服务治理组件eureka(二)

目录

  1. 背景

  2. eureka服务提供者搭建

  3. 高可用集群

 

一、背景

  最初实现微服务的系统可能服务并不多,可以通过静态配置完成服务的调用,需要手工维护服务的清单。但是随着系统的发展,系统功能越来越复杂,相应的微服务应用也不断增加,静态配置越来越难以维护,随着不断的发展,我们的集群规模,服务位置,服务命名也会发生变化,如果还是通过手工维护,及易发生错误,和命名冲突,同时维护将大量消耗人力。为了解决微服务架构中服务实例维护问题。出现了大量的围绕服务注册,服务发现的自动化管理的微服务框架。

 

  • 服务注册:在服务治理框架中,通常会构建一个服务注册中心,每个服务单元向注册中心登记自己的服务,将主机、端口、版本号、和通信协议和一些附加信息告知注册中心。注册中心按服务名分类组织服务清单
  • 服务发现:服务治理框架下,通过服务名,发起请求调用实现,因此,服务消费方在调用服务提供方的接口时,并不知道具体的实例位置地址,服务调用方需要向注册中心咨询服务,湖区服务清单。

 

 

 

二、eureka服务提供者搭建

  开发工具:idea

  1、File---> New ---> Project---->spring Initialzr  

 

 

2、填写项目包名、项目名,继续NEXT

 

 

 

 

 3、选中Discovery Client和web模块、Next-->(选择项目目录)Finish

 

 

 

 

4、项目生成后目录结构如下,其中controller为新建的包,其他文件及目录是默认生成的

 

 

 

 5、我们来看看pom.xml

1 <dependency>
2        <groupId>org.springframework.cloud</groupId>
3        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
4 </dependency>
5 <dependency>
6         <groupId>org.springframework.boot</groupId>
7         <artifactId>spring-boot-starter-web</artifactId>
8 </dependency>

 

6、启动类加上EnableDiscoveryClient注解,自动化配置为服务治理的客户端

@EnableDiscoveryClient
@SpringBootApplication
public class EurekaClientApplication {

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

}

 

7、application.properities配置

1 server.port=8082
2 spring.application.name=eureka-client
#注册的服务中心的路径,这里注册了多个代表注册了一个服务中心集群
3 eureka.client.service-url.defaultZone=http://admin:123456@localhost:1111/eureka/,http://admin:123456@localhost:1112/eureka/ 4 #IP进行注册 5 eureka.instance.instance-id=${spring.application.name}:${spring.cloud.client.ip-address}:${server.port} 6 eureka.instance.preferIpAddress=true

 

8、Controller提供服务请求入口。

 1 @RestController
 2 public class DemoController {
 3 
 4     private static final Logger logger = LoggerFactory.getLogger(DemoController.class);
 5 
 6 
 7     @RequestMapping(value = "/demo")
 8     public String index(@RequestParam("name") String demo_name){
 9         return "Hello world|| I'm "+demo_name;
10     }
11 
12 }

 

9、点击以下图标启动服务

 

 

 出现以下日志代码启动成功

 

10、访问注册中心localhost:1111,出现一个实例就是我们刚才注册的

 

 

 

三、高可用集群

  另建一个项目eureka-client2

  项目依赖相同

     <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

  配置类似,application一样,提供集群服务,端口不一样

server.port=8083
spring.application.name=eureka-client
eureka.client.service-url.defaultZone=http://admin:123456@localhost:1111/eureka/,http://admin:123456@localhost:1112/eureka/
#IP进行注册
eureka.instance.instance-id=${spring.application.name}:${spring.cloud.client.ip-address}:${server.port}
eureka.instance.preferIpAddress=true
@EnableDiscoveryClient
@SpringBootApplication
public class EurekaClient2Application {

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

}
@RestController
public class DemoController {

    private static final Logger logger = LoggerFactory.getLogger(DemoController.class);


    @RequestMapping(value = "/demo")
    public String index(@RequestParam("name") String demo_name){
        return "Hello world cleint2|I'm "+demo_name;
    }

}

  至此,高可用服务提供方就搭建成功了。

 

 

 

  如果我看的更远,那是因为站在巨人的肩膀上!

 

 

<< 返回页首 >>

posted @ 2020-07-09 10:48  啧啧啧花儿不谢呀!  阅读(172)  评论(0编辑  收藏  举报