为了解决硬编码的遗留问题,需要服务注册与发现机制来解决这些问题。
公司主营业务:成都网站建设、成都网站设计、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出大峪免费做网站回馈大家。
服务注册与发现机制的作用:记录每个服务提供者的网络信息,向服务消费者提供所需服务网络信息。
一、服务发现组件
服务提供者、服务消费者、服务发现组件三者之间的关系:
1、每一个为服务启动的时候都会将自己的网络信息注册到服务发现组件中,服务发现组件将这些信息进行存储;
2、服务消费者从服务发现组件中查询服务提供者的网络信息,并使用这些信息对服务提供者进行访问;
3、每个微服务与服务发现组件之间通过存在通信机制,当服务发现组件长时间无法与某微服务进行联系,服务发现组件会将该实例注销;
4、微服务的网络信息进行变更时,会重新注册到服务发现组建中,该服务的调用方无需修改提供者的信息。
服务发现组件基本功能:
1、服务注册表:这是服务发现组件的核心。用来记录各个微服务的信息,包括微服务的名称、IP、端口等。服务注册表提供查询API和管理API,查询API用于查询可用的微服务实例,管理API用于服务的注册与注销;
2、服务注册与发现:
服务注册:微服务启动时将信息注册到服务发现组件中的过程;
服务发现:查询可用的微服务列表及其网络信息的机制
3、服务检查:使用一定的机制检测服务的有效性,如果检测到某微服务已经挂掉会自动将该实例注销。
二、Eureka
Eureka是springcloud提供的一种服务发现组件。
1、Eureka Server 和 Eureka client
Eureka包含两个组件:Eureka Server 和 Eureka client,二者关系如下:
Eureka Server提供了服务发现与注册的机制,微服务启动时会向Eureka Server注册自己的信息,Eureka Server会将这些信息进行存储。
微服务启动后,会在指定间隔(默认30秒)向Eureka Server发送心跳,表明服务正在运行;
如果Eureka Server长时间(默认90秒)没有收到来自某微服务的心跳,Eureka Server就会注销这个实例;
Eureka client缓存了服务注册表的信息。微服务无需每次都向Eureka Server查询服务状态,减轻了Eureka Server的压力。同时,如果Eureka Server挂掉,微服务依然可以从缓存中获取到服务提供者的网络信息并完成调用。
三、编写Eureka Server
项目结构如下:
添加pom依赖:
org.springframework.cloud spring-cloud-starter-eureka-server
启动类添加注解:
@SpringBootApplication @EnableEurekaServer //表明自己是一个Eureka Server public class EurakaApplication { public static void main(String[] args) { SpringApplication.run(EurakaApplication.class, args); } }
yml文件中添加配置:
server: port: 8761 eureka: client: register-with-eureka: false #表示是否将自己注册到Eureka Server中,默认为true。由于本项目就是一个Eureka Server,故此处设为false fetch-registry: false #表示是否从其他Eureka Server中获取信息,由于此处为单点Eureka Server,设为false即可 service-url: default-zone: # 设置与Eureka Server的交互地址,查询与注册服务都需要用到该地址,多个地址可以使用","分隔
此时启动项目并且访问http://localhost:8716/,得到如下页面,此时还没有任何微服务注册进来。
四、将微服务注册到Eureka Server中
还以user项目为例:
pom依赖:
org.springframework.cloud spring-cloud-starter-eureka-server
yml文件:
spring: application: name: user # 指定注册到Eureka Server中的应用名字 eureka: client: service-url: default-zone: http://localhost:8761/eureka/ instance: prefer-ip-address: true #是否将自己的IP注册到Eureka Server中,如果不配置或设置为false,会将微服务所在的操作系统的hostname注册到Eureka Server
启动类添加注解:
@SpringBootApplication @EnableEurekaClient //声明自己是一个注册服务 public class UserApplication { public static void main(String[] args) { SpringApplication.run(UserApplication.class, args); } }
此时启动项目并且再次访问:http://localhost:8716/,得到如下页面:
此时用户微服务已经注册到Eureka Server中。
网站栏目:springCloud入门学习(三):服务注册与发现
地址分享:http://lswzjz.com/article/igidei.html