Nacos上手实践(基于Spring Cloud)

栏目: Java · 发布时间: 6年前

内容简介:Nacos是阿里出品的帮助发现、配置和管理微服务的一款产品,而且这应该是所有服务发现与管理产品中中文文档最为友好的,你完全直接去官网查看,中文手册用起来就是爽!本文主要会快速上手入门使用Nacos,并结合项目(Spring Cloud)来进行开发。下载对应系统的包,windows下双击 startup.cmd 即可运行,运行成功如图,默认为8848端口 [站外图片上传中...(image-aed23d-1560732011514)]

Nacos是阿里出品的帮助发现、配置和管理微服务的一款产品,而且这应该是所有服务发现与管理产品中中文文档最为友好的,你完全直接去官网查看,中文手册用起来就是爽!

本文主要会快速上手入门使用Nacos,并结合项目(Spring Cloud)来进行开发。

安装Nacos

下载对应系统的包,windows下双击 startup.cmd 即可运行,运行成功如图,默认为8848端口 [站外图片上传中...(image-aed23d-1560732011514)]

Nacos默认提供了控制台管理,访问地址: http://127.0.0.1:8848/nacos 可以看到: [站外图片上传中...(image-30abf4-1560732011514)]

默认用户命和密码都为:nacos,登录进入后可看到管理界面

[站外图片上传中...(image-ca6684-1560732011514)]

服务发现

以下为 Nacoas 提供的一个服务发现的说明图。 [站外图片上传中...(image-969e3d-1560732011514)]

创建工程

创建provider项目:leon-provider,指定Spring Boot版本为1.5.21,然后添加Nacos的相关依赖:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <version>${latest.version}</version>
</dependency>
复制代码

这里需要注意各个版本的对应关系 [站外图片上传中...(image-f5f765-1560732011514)]

[站外图片上传中...(image-2cd059-1560732011514)]

我们的spring boot是属于1.5.X的序列,所以对应的spring cloud的版本为:Spring Cloud Edgware 。 本位中使用的Nacos的版本为1.0.0,所以注意,如果需要引入spring cloud alibaba的相关依赖,那么就只能为特定三个版本。本文中使用0.1.2版本

[站外图片上传中...(image-562718-1560732011514)]

在leon-provider中添加spring cloud 的相关依赖

<properties>
    <java.version>1.8</java.version>
    <spring-cloud.version>Edgware.SR5</spring-cloud.version>
</properties>
    
<dependencyManagement>
  <dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>${spring-cloud.version}</version>
        <type>pom</type>
        <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>
复制代码

如果需要使用 Spring Cloud Edgware 版本,请在 dependencyManagement 中添加如下内容

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
    <version>0.1.2.RELEASE</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>
复制代码

指定Nacos相关依赖版本为0.1.2

<properties>
    <java.version>1.8</java.version>
    <spring-cloud.version>Edgware.SR5</spring-cloud.version>
    <latest.version>0.1.2.RELEASE</latest.version>
</properties>

复制代码

配置Nacos服务地址

在application.yml中配置Nacos服务信息:

server:
  port: 8080
spring:
  application:
    name: leon-provider
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
复制代码

给启动类添加注解:

@EnableDiscoveryClient
复制代码

启动程序,运行成功后,可以看到Nacos中已经有了注册信息: [站外图片上传中...(image-5b2fe0-1560732011514)] 点击详情后可查看当前服务的IP、端口、健康状态等信息。

在leon-provider工程中创建LoginService类,提供简单的登录方法:

@RestController
public class LoginService {

    @RequestMapping("/login")
    public String login(@RequestParam("userName") String userName, @RequestParam("passWord") String passWord) {
        if (userName.equals("leon") && passWord.equals("888")) {
            return "leon-provider: login success";
        }
        return "leon-provider: login fail";
    }
}

复制代码

创建Consumer工程

创建leon-consumer工程,指定spring boot、Spring cloud版本和leon-provider一致,同时添加spring cloud feign依赖(关于Feign本文不在赘述)

添加Nacos的服务端IP和端口信息,

server:
  port: 8081
spring:
  application:
    name: leon-consumer
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
复制代码

在leon-consumer中创建Feign Client,通过name属性定义想要调用的服务名称

@FeignClient(name = "leon-provider")
public interface UserFeignClient {
    @RequestMapping(value = "/login", method = RequestMethod.GET)
    public String login(@RequestParam("userName") String userName, @RequestParam("passWord") String passWord);
}

复制代码

创建Controller类并调用接口

@RestController
public class UserController {

    @Autowired
    private UserFeignClient userFeignClient;

    /**
     * 用户账号名和密码登录
     *
     * @param userName
     * @param passWord
     * @return
     */
    @RequestMapping("/login")
    public String login(@RequestParam("userName") String userName, @RequestParam("passWord") String passWord) {
        return userFeignClient.login(userName, passWord);
    }
}

复制代码

在启动类上添加注解 @EnableFeignClients,然后运行leon-consumer服务。刷新控制台,可以看到注册服务有两个: [站外图片上传中...(image-e7c9b1-1560732011514)]

访问leon-consumer中的login接口,查看是否能正常调用leon-provider服务。

[站外图片上传中...(image-7b8471-1560732011514)]

管理服务

在控制台中,选择leon-provider服务,进入详情后,可以选择将其下线 [站外图片上传中...(image-6b7e3-1560732011514)]

下线后再次访问接口,可以发现已经找不到对应的服务了。通过配置的方式可以优雅的实现服务上、下线。 [站外图片上传中...(image-c598ab-1560732011514)]

注意

服务通过控制台下线,只是代表会在订阅端过滤掉,在控制台不受影响,所以即使下线服务,在控制台依然显示是健康的实例。如果我们停掉服务,就会发现变成红色为非健康实例了

配置中心

Nacos同样提供了线上配置服务,新增配置 [站外图片上传中...(image-797f5f-1560732011514)]

[站外图片上传中...(image-b51ac7-1560732011514)]

点击发布完成配置,然后返回可查看 [站外图片上传中...(image-f829ed-1560732011514)]

在项目中添加依赖:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    <version>${latest.version}</version>
</dependency>
复制代码

在Controller中添加方法

@Value("${name:}")
private String name;

@Value("${age:}")
private String age;


@RequestMapping("/config")
public String config() throws NacosException {
    return name + " | " + age;
}

复制代码

运行程序访问

[站外图片上传中...(image-345f84-1560732011514)]

注意

  • 其中dataId的名字需要和spring.application.name保持一致(出去后缀)
  • 添加@RefreshScope注解才能实现动态刷新
  • 配置服务的参数必须配置在bootstrap文件中

以上所述就是小编给大家介绍的《Nacos上手实践(基于Spring Cloud)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Web Caching

Web Caching

Duane Wessels / O'Reilly Media, Inc. / 2001-6 / 39.95美元

On the World Wide Web, speed and efficiency are vital. Users have little patience for slow web pages, while network administrators want to make the most of their available bandwidth. A properly design......一起来看看 《Web Caching》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试