为了解决硬编码的遗留问题,需要服务注册与发现机制来解决这些问题。
站在用户的角度思考问题,与客户深入沟通,找到蓬莱网站设计与蓬莱网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站建设、成都网站设计、企业官网、英文网站、手机端网站、网站推广、国际域名空间、网站空间、企业邮箱。业务覆盖蓬莱地区。服务注册与发现机制的作用:记录每个服务提供者的网络信息,向服务消费者提供所需服务网络信息。
一、服务发现组件
服务提供者、服务消费者、服务发现组件三者之间的关系:
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中。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。