目前开源的注册中心框架有很多,国内比较常见的有:
- Eureka:Netflix公司出品,目前被集成在SpringCloud当中,一般用于Java应用
- Nacos:Alibaba公司出品,目前被集成在SpringCloudAlibaba中,一般用于Java应用
- Consul:HashiCorp公司出品,目前集成在SpringCloud中,不限制微服务语言 Nacos由Alibaba发布的,官网为国内服务器,访问和中文文档相对便于使用。
一、Nacos注册中心的作用
1、代理服务提供方部署的多个访问实例,并实时监测服务提供方是否正常运行的信息提供给服务调用方
- 服务提供者会定期向注册中心发送请求,报告自己的健康状态(心跳请求)
- 当注册中心长时间收不到提供者的心跳时,会认为该实例宕机,将其从服务的实例列表中剔除
- 当服务有新实例启动时,会发送注册服务请求,其信息会被记录在注册中心的服务实例列表
- 当注册中心服务列表变更时,会主动通知微服务,更新本地服务列表
2、服务调用方可通过注册中心随机访问服务实例端口,服务调用方自己对实例列表负载均衡,挑选一个实例
二、注册中心入门使用
1、进入nacos.io Nacos官网中将所需版本的Nacos安装包下载
2、解压安装包部署到服务器英文目录下,再将解压后config文件中的sql文件导入服务器数据库中
3、更改配置文件nacos\conf\application.properties中连接数据库信息配置,其中包括数据库服务器地址ip、连接用户名和密码
4、启动Nacos 指令:
windows
startup.cmd -m standalone
mac/Linux
sh startup.sh -m standalone
5、 未修改默认服务端口号的情况下 访问:http://localhost:8848/nacos 地址进入Nacos网页管理界面
初始默认登入的账号密码都为:nacos
三、javaSpringBoot整合Nacos
1、在官方文档中进入Java SDK
2、导入对应Nacos依赖 Maven 坐标:
<!--nacos 服务注册发现-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
3、在对应服务中配置Nacos服务地址和服务对象
spring:
application:
name: name-service # 服务名称
cloud:
nacos:
server-addr: 192.168.150.101:8848 # nacos地址
完成后可进入Nacos管理网页,点击服务列表可查看注册成功的服务:
4、完成上诉配置后,进入Service运行窗口中,右键可创建多个实例的服务,选择CopyConfiguration后进入选配界面
选配界面:
四、javaSpringBoot不同服务中调用Nacos注册中心的所需的其他服务
通过注入SpringCloud中的DiscoveryClient配置类,调用方法获取所有服务目标实例:
getInstances("参数为对应注册中心中的服务名称")
List<ServiceInstance> instances = discoveryClient.getInstances(serviceId);
// 通过randomInt随机数 使每次访问的服务实例随机
int index = RandomUtil.randomInt(instances.size());
ServiceInstance serviceInstance = instances.get(index);
//再获取实例的uri
URI uri = serviceInstance.getUri();
在通过springBean文件注入 RestTemplate,通过RestTemplate利用获取到的服务实例uri发起对应的Http请求,完成注册中心的远程并且随机调用服务实例;