【微服务学习1--组件】服务注册中心--Eureka
  QkEIYW6ByZAy 2023年11月01日 38 0
一、简介:
 
    Eureka是由Netflix公司开源的一款提供服务注册和发现的产品。因此,在添加依赖时,会有NetFlix。
       该组件管理各种的服务功能:注册、 发现、熔断、负载、降级等。
             Eureka采用的是基于C/S的设计架构。
    Eureka由两部分组成(Server/Client):Eureka服务器和Eureka客户端。其中服务器可以用作服务注册服务器。而客户端是一个Java客户端,用来简化与服务器的交互、作为轮询负载均衡器,并提供服务的故障切换支持。

 

由上图我们可以简单的看到Eureka组件的架构图,主要由三部分组成:
        Eureka Server:提供服务注册和发现
        Service Provider:服务提供方、将自身服务注册到Eureka,从而使消费者可以找到
        Service Consumer: 服务消费方   从Eureka获取注册服务列表,从而能够消费服务。
 
下面演示入门案例
第一个案例:
 
    1.创建module:注意创建的方式为:Spring Initializr创建springBoot项目(快速入门创建,也可以使用maven格式)

 可以通过官网下载,也可以通过自定义的路径(阿里云https://start.aliyun.com)下载

 

  Group:可以是组织域名的倒写
    Artifact:项目名称
    Type:我们选择使用maven项目
    Lanagure:选用Java语言进行开发
    Packaging:打包方式,可以是jar包也可以是war包
    Java Version:Java版本
    注意此时的项目中的报名需要修改
 
    点击next--选择需要添加的依赖,首先是WEb-->spring web -->  spring cloud discovery-->Eureka-->Eureka Server
        中间右上角的SpringBoot版本号选择合适的,我选择的是2.7.13(之后还会修改)
 

2.修改src-->main-->resources-->application.properties:

server.port=9100 spring.application.name=eureka-server #设置注册中心得地址 eureka.instance.hostname=localhost #配置自己不能想自己注册 eureka.client.register-with-eureka=false #不需要检索服务 主要是维护服务 eureka.client.fetch-registry=false #注册中心地址 #eureka.client.service-url.defaultZone = http:${eureka.instance.hostname}:${server.port}/eureka eureka.client.service-url.defaultZone=http://127.0.0.1:9100/eureka
3.修改启动类Application.java
 
@SpringBootApplication @EnableEurekaServer//启用Eureka
public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
 添加注解开启Eureka服务
此时便可以运行,访问http://localhost:9100得到结果如下图:

 

4.以相同的步骤创建服务提供者 spring-cloudeureka-provider的module
    但在选择依赖时的点击next--选择需要添加的依赖,首先是WEb-->spring web spring cloud discovery-->Eureka Discovery Client
 
    4.1修改pom文件,修改版本:
    4.2 修改配置文件:
server.port=8083 #应用名 之后也会是注册的服务名 spring.application.name=eureka-provider #注册服务的地址 server.servlet.context-path=/02-spring-cloud-provider #配置注册中心地址 此时为客户端 eureka.client.service-url.defaultZone=http://localhost:9100/eureka

4.3创建控制器,模拟接收

@RestController public class TestController { @RequestMapping("/test") public String test(){ return "这是demo2得provider 端口号是8083"; } }

    4.4修改启动类,添加注解,允许启动、

@SpringBootApplication @EnableEurekaClient public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
  4.5测试启动:
        访问:http://localhost:9100

 

创建服务成功。
访问:localhost:8083/02-spring-cloud-provider/test 也可以正常显示
 
5.创建消费者module:spring-cloud-eureka-consumer:
    5.1与provider创建类型相同。
    5.2修改pom文件
    5.3修改配置文件:
#端口号 server.port=8084 spring.application.name=server-consumer server.servlet.context-path=/02-spring-cloud-consumer #配置注册中心地址 eureka.client.service-url.defaultZone=http://localhost:9100/eureka
5.4添加config.RestTemplateConfig类:
        RestTemplate主要是说明spring支持的Http请求,符合restful风格的,他可以接收常见的Rest请求方法的模板。
        使用该模板,我们能就可以访问到其请求体信息。
@Configuration public class RestTemplateConfig { @Bean public RestTemplate restTemplate(){ return new RestTemplate(); }

5.5添加controller.TestController控制器来测试:

@RestController public class TestController { @Autowired private RestTemplate restTemplate; @RequestMapping("/test") public String test(){ ResponseEntity<String> result=restTemplate.getForEntity("http://SERVER-PROVIDER/test",String.class); return result.getBody(); } }

  5.6修改启动类:

@SpringBootApplication @EnableEurekaClient public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
    5.7启动:
        5.8测试:
            访问:http://localhost:9100

   访问:http://localhost:8084/test

 
第二个案例:集群:
    在分布式系统中通常需要多台server来进行服务的注册,这样才能保证在大容量下可以进行正常的服务。在第一个案例的基础上继续进行展示:
        6,创建server  端口号为9200,
    使用集群可能需要修改系统的配置文件:C:\Windows\System32\drivers\etc\host

   6.1修改9100的配置文件(也就是第一个案例中的Server)

server.port=9100 eureka.instance.hostname=eureka9100 eureka.client.fetch-registry=false eureka.client.register-with-eureka=false eureka.client.service-url.defaultZone=http://eureka9200:9200/eureka
 #禁用自我保护机制 # eureka.server.enable-self-preservation=false
6.2创建9200的module
修改其配置文件:
server.port=9200 eureka.instance.hostname=eureka9200 eureka.client.fetch-registry=false eureka.client.register-with-eureka=false eureka.client.service-url.defaultZone=http://eureka9100:9100/eureka

  访问即可。

 
 
 
 
 
 
 
 
 
 
 
 
 
 

 

 

 

 

 

 

 

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  2Vtxr3XfwhHq   2024年05月17日   55   0   0 Java
  Tnh5bgG19sRf   2024年05月20日   113   0   0 Java
  8s1LUHPryisj   2024年05月17日   48   0   0 Java
  aRSRdgycpgWt   2024年05月17日   47   0   0 Java
QkEIYW6ByZAy