注册中心可以说是微服务架构中的“通讯录”,它记录了服务和服务地址的映射关系。在分布式架构中,服务会注册到注册中心,当服务需要调用其他服务时,就会在注册中心找到服务的地址,进行调用。
如图 2.1 所示,服务端A,B,C注册到注册中心,当消费者中D,E,F需要服务端的数据时,从注册中心获取到服务地址进行调用。
图 2.1
服务注册中心(称注册中心)是微服务架构非常重要的一个组件,在微服务架构里主要起到了协调者的一个作用。注册中心一般包含如下几个功能:
(1)服务发现
●服务注册/反注册:保存服务提供者和服务调用者的信息。
●服务订阅/取消订阅:服务调用者订阅服务提供者的信息,最好有实时推送的功能。
●服务路由(可选):具有筛选整合服务提供者的能力。
(2)服务配置
●配置订阅:服务提供者和服务调用者订阅微服务相关的配置。
●配置下发:主动将配置推送给服务提供者和服务调用者。
(3)服务健康检测
检测服务提供者的健康情况。
●Zookeeper
zookeeper它是一个分布式服务框架,是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。简单来说zookeeper=文件系统+监听通知机制。
●Eureka
Eureka是在Java语言上,基于Restful Api开发的服务注册与发现组件,Springcloud Netflix中的重要组件。
●Nacos
Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。简单来说 Nacos 就是注册中心 + 配置中心的组合,提供简单易用的特性集,帮助我们解决微服务开发必会涉及的服务注册与发现,服务配置,服务管理等问题。Nacos 还是Spring Cloud Alibaba 组件之一,负责服务注册与发现。
创建一个pom工程【cloud_maven】,作为整个微服务的父级工程模块,无须删除当前工程的任何包,如图 2.2 所示。
图 2.2
在当前【cloud_maven】工程配置pom.xml文件的坐标信息,配置代码如下所示。
如上述,pom文件中坐标描述如下所示:
●spring-cloud-dependencies SpringCloud核心坐标
●mysql-connector-java数据库驱动坐标
●druid数据库连接池坐标
●mybatis-spring-boot-starter mybatis的核心坐标
●junit test测试坐标
●log4j 日志坐标
●lombok 自动生成get set方法
然后再选择pom工程【cloud_maven】,右击选择“Module”按钮,创建注册中心模块并命名为【cloud_eureka】,如图 2.3 所示。
图 2.3
在进行配置【cloud_eureka】工程中的pom.xml文件中的坐标信息,具体的配置信息如下所示。
如上述pom.xml文件中的坐标描述:
●spring-cloud-starter-netflix-eureka-server eureka-server 服务端核心坐标
●spring-boot-starter-web web组件核心坐标
●spring-boot-starter-actuator监控核心坐标
●lombok自动生成get set 方法坐标
●spring-boot-starter-test springboot测试核心坐标
●junit test测试坐标
进行配置application.yml文件:
如上application.yml文件配置描述如下:
●server.port 配置端口
●eureka.instance.hostname: localhost eureka服务端的实例名字
●eureka.clien.register-with-eureka: false 表示不向注册中心注册自己
●eureka.clien.fetch-registry: false表示自己就是注册中心,职责是维护服务实例,并不需要去检索服务
●eureka.clien.service-url.defaultZone:http://${eureka.instance.ho stname}:${server.port}/eureka/设置与eureka server交互的地址查询服务和注册服务都需要依赖这个地址
主启动类:
在【cloud_eureka】工程中的com.cloud.maven包下创建一个主启动类,代码如下所示。
如上主启动注解描述:
●@SpringBootApplication SringBoot启动类入口
●@EnableEurekaServer 开启扫描Eureka
启动主启动类,在浏览器输入地址http://localhost:7001/,如图2.4所示。
图 2.4
如图 2.4所示,Instances currenty registered with Eureka是监控当前没有任何服务注册,当前是没有服务所示这里显示什么都没有。