Skip to content

服务发现

作者:唐亚峰 | battcn
字数统计:902 字

介绍

什么是注册中心

注册中心在微服务项目中扮演着非常重要的角色,是微服务架构中的纽带,类似于通讯录,它记录了服务和服务地址的映射关系。在分布式架构中,服务会注册到这里,当服务需要调用其它服务时,就到这里找到服务的地址,进行调用。

  • 为什么要使用注册中心

解决了服务发现的问题。在没有注册中心时候,服务间调用需要知道被调方的地址或者代理地址。当服务更换部署地址,就不得不修改调用当中指定的地址或者修改代理配置。而有了注册中心之后,每个服务在调用别人的时候只需要知道服务名称就好,继续地址都会通过注册中心同步过来。

TIP

WEMIRR-PLATFORM 默认采用的是 Nacos 作为服务发现与配置中心的,如果对于企业已经有 EurekaZooKeeperConsulApolloSpring Cloud Config 的小伙伴们 请自行更换 pom.xml 中的依赖即可(但作者还是比较推荐Nacos)更符合国人

Nacos 官方文档
https://nacos.io/zh-cn/docs/v2/what-is-nacos.html

安装方式

下面提供了三种安装方式,总有一款适合你,如果不适合请联系作者添加文档 Thanks~~~

源码安装

喜欢尝鲜的小伙伴们可以从 Github 上下载源码方式来安装最新版本的 Nacos

lua
git clone https://github.com/alibaba/nacos.git

cd nacos/

mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U
  
ls -al distribution/target/

// change the $version to your actual path
cd distribution/target/nacos-server-$version/nacos/bin

压缩包安装

您可以从

下载 nacos-server-$version.zip 包。

lua
unzip nacos-server-$version.zip 或者 tar -xvf nacos-server-$version.tar.gz
cd nacos/bin

Docker 安装

开发测试环境更推荐使用 Docker 的方式安装,简单粗暴易上手(前提是小伙伴们已经安装过 Docker

WARNING

安装 Nacos (>=2.0)

shell
# 拉去镜像
docker pull nacos/nacos-server
# 以 standalone 方式运行镜像 (如果是虚拟机、Unix、Linux 之类的服务器需要暴露 8848、9848、18848、19848)
docker run -itd --name nacos -p 8848:8848  -p 9848:9848 --restart=always -e MODE=standalone nacos/nacos-server

启动方式

启动命令(standalone代表着单机模式运行,非集群模式)

Docker 启动

shell
docker start nacos

Linux/Unix/Mac 启动

启动命令(standalone代表着单机模式运行,非集群模式)

shell
sh startup.sh -m standalone

如果您使用的是ubuntu系统,或者运行脚本报错提示[[符号找不到,可尝试如下运行

shell
bash startup.sh -m standalone

Windows 启动

shell
startup.cmd -m standalone

如何使用

添加依赖

xml
<!-- Spring Cloud Alibaba Nacos 服务发现 -->
<dependency>
	<groupId>com.alibaba.cloud</groupId>
	<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

<!-- Spring Cloud Alibaba Nacos 服务配置 -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

<!-- Spring Boot Web -->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>

添加配置

yaml
spring: 
  application:
    # 应用名称
    name: wemirr-platform-authority
  config:
    import:
      # 如果提前在 Ncoas 配置了 可以通过下面的方式导入 nacos 配置
      - optional:nacos:${spring.application.name}.properties
      # 这是完写法 
      - optional:nacos:mybatis-plus-default.yaml?group=DEFAULT_GROUP&refreshEnabled=true
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
      config:
        server-addr: 127.0.0.1:8848
        refresh-enabled: true

Application启动类加入注解 @EnableDiscoveryClient 即可轻松搞定服务注册于发现

java
@EnableDiscoveryClient
@SpringBootApplication
public class AuthorityApplication {

    @SneakyThrows
    public static void main(String[] args) {
        SpringApplication.run(AuthorityApplication.class, args);
    }
}

启动服务

启动应用程序后,如未发现异常日志,查看Nacos控制台的服务列表

Nacos服务列表