【微服务学习1--组件】服务注册中心--Eureka

锦通  金牌会员 | 2023-7-13 08:13:24 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 880|帖子 880|积分 2640

一、简介:     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:
  1. server.port=9100
  2. spring.application.name=eureka-server
  3. #设置注册中心得地址
  4. eureka.instance.hostname=localhost
  5. #配置自己不能想自己注册
  6. eureka.client.register-with-eureka=false
  7. #不需要检索服务 主要是维护服务
  8. eureka.client.fetch-registry=false
  9. #注册中心地址
  10. #eureka.client.service-url.defaultZone = http:${eureka.instance.hostname}:${server.port}/eureka
  11. eureka.client.service-url.defaultZone=http://127.0.0.1:9100/eureka
复制代码
3.修改启动类Application.java 
  1. @SpringBootApplication
  2. @EnableEurekaServer//启用Eureka
  3. public class Application {
  4.     public static void main(String[] args) {
  5.         SpringApplication.run(Application.class, args);
  6.     }
  7. }
复制代码
 添加注解开启Eureka服务此时便可以运行,访问http://localhost:9100得到结果如下图:
 
4.以相同的步骤创建服务提供者 spring-cloudeureka-provider的module    但在选择依赖时的点击next--选择需要添加的依赖,首先是WEb-->spring web spring cloud discovery-->Eureka Discovery Client     4.1修改pom文件,修改版本:    4.2 修改配置文件:
  1. server.port=8083
  2. #应用名 之后也会是注册的服务名
  3. spring.application.name=eureka-provider
  4. #注册服务的地址
  5. server.servlet.context-path=/02-spring-cloud-provider
  6.         
  7. #配置注册中心地址 此时为客户端
  8. eureka.client.service-url.defaultZone=http://localhost:9100/eureka
复制代码
4.3创建控制器,模拟接收
  1. @RestController
  2. public class TestController  {
  3.     @RequestMapping("/test")
  4.     public String test(){
  5.         return "这是demo2得provider 端口号是8083";
  6.     }
  7. }
复制代码
    4.4修改启动类,添加注解,允许启动、
  1. @SpringBootApplication
  2. @EnableEurekaClient
  3. public class Application {
  4.     public static void main(String[] args) {
  5.         SpringApplication.run(Application.class, args);
  6.     }
  7. }
复制代码
  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修改配置文件:
  1. #端口号
  2. server.port=8084
  3. spring.application.name=server-consumer
  4. server.servlet.context-path=/02-spring-cloud-consumer
  5. #配置注册中心地址
  6. eureka.client.service-url.defaultZone=http://localhost:9100/eureka
复制代码
5.4添加config.RestTemplateConfig类:        RestTemplate主要是说明spring支持的Http请求,符合restful风格的,他可以接收常见的Rest请求方法的模板。        使用该模板,我们能就可以访问到其请求体信息。
  1. @Configuration
  2. public class RestTemplateConfig {
  3.     @Bean
  4.     public RestTemplate restTemplate(){
  5.         return new RestTemplate();
  6.     }
复制代码
5.5添加controller.TestController控制器来测试:
  1. @RestController
  2. public class TestController {
  3.    
  4.     @Autowired
  5.     private RestTemplate restTemplate;
  6.    
  7.     @RequestMapping("/test")
  8.     public String test(){
  9.         ResponseEntity<String> result=restTemplate.getForEntity("http://SERVER-PROVIDER/test",String.class);
  10.         return result.getBody();
  11.         
  12.     }
  13. }
复制代码
  5.6修改启动类:
  1. @SpringBootApplication
  2. @EnableEurekaClient
  3. public class Application {
  4.     public static void main(String[] args) {
  5.         SpringApplication.run(Application.class, args);
  6.     }
  7. }
复制代码
    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)
  1. server.port=9100
  2. eureka.instance.hostname=eureka9100
  3. eureka.client.fetch-registry=false
  4. eureka.client.register-with-eureka=false
  5. eureka.client.service-url.defaultZone=http://eureka9200:9200/eureka
  6. #禁用自我保护机制
  7. # eureka.server.enable-self-preservation=false
复制代码
6.2创建9200的module修改其配置文件:
  1. server.port=9200
  2. eureka.instance.hostname=eureka9200
  3. eureka.client.fetch-registry=false
  4. eureka.client.register-with-eureka=false
  5. eureka.client.service-url.defaultZone=http://eureka9100:9100/eureka
复制代码
  访问即可。
               
 
 
 
 
 
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

锦通

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表