专栏首页性能与架构Nacos入门指南02 - 环境搭建

Nacos入门指南02 - 环境搭建

你好,欢迎阅读,本文是系列文章中的第2篇。

Part1 - Nacos 是什么?

Part2 - Nacos 环境搭建

Part3 - Nacos 服务发现实践

Part4 - Nacos 分布式配置实践

本文的目的是把 Nacos 跑起来,并体验一下 Nacos 的 OpenAPI。

1. 环境搭建

有2种方式:

(1)手动编译、启动

(2)使用 Docker 容器

1.1 手动编译启动

需要2个步骤:

  • 编译 Nacos
  • 启动

步骤1 - 编译 Nacos

有2种方式,可以下载源码后自己编译,也可以直接下载官方编译后的。

方式1 - 源码编译

从 GitHub 上下载 Nacos 项目源码,项目地址:

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

下载好项目源码后,进入目录,进行编译:

mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U

第一次编译的时间会很长,需要下载大量的依赖包。

完成后,成果位置:

distribution/target/nacos-server-$version/nacos

小提示:如果在 GitHub 下载速度慢的话,建议到国内的码云下载。 码云同步了 GitHub 中知名项目,所以从这下载会很快。操作如下图。

方式2 - 下载官方编译的包

官方也提供了编译好的压缩包,可以在 GitHub 中直接下载。

在 Nacos 项目首页的右侧,有一个 Releases 部分,点进去。

这就是编译后的压缩包,下载即可。

可惜的是码云中只同步了源码,并没有同步发布页面中的内容,直接在 GitHub 中下载会很慢。

步骤2 - 启动

在 nacos 编译后的目录下执行:

sh bin/startup.sh -m standalone

-m standalone 表示使用单机方式启动,这是最简单的方式,适合我们练习使用。

启动后的效果如下:

Nacos 会在后台启动,最后提示了日志的输出位置。

如果是 Windows 系统,执行 startup.cmd 即可。

1.2 Docker 容器

Nacos 官方提供了 Docker 镜像,可以直接使用:

# 下载 nacos docker 项目
git clone https://github.com/nacos-group/nacos-docker.git

# 单机模式启动
cd nacos-docker
docker-compose -f example/standalone-derby.yaml up

会启动3个容器:

  • prometheus,用于采集 nacos 数据,进行监控
  • grafana,用于图形化显示监控数据
  • nacos-standalone,nacos server

nacos 容器的本机挂载端口为 8848,访问其控制台

http://localhost:8848/nacos

默认的用户名与密码都为 nacos。

2. 体验 Nacos API

下面体验4个主要 API :

  • 注册实例
  • 心跳
  • 查询服务实例列表
  • 注销实例

2.1 注册实例

发送请求:

curl -X POST 'http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=service-a&ip=192.168.1.1&port=8080'

查看控制台中的服务列表:

已经注册成功了,但 service-a 这个服务实例是不存在的,怎么能注册成功呢?

Nacos 注册中心不管是否真的存在,只要能注册上来,并且一直有心跳就认为此实例是存活的,没心跳就删掉。

2.2 实例心跳

发送请求:

curl -X PUT 'http://127.0.0.1:8848/nacos/v1/ns/instance/beat?serviceName=service-a&beat=%7B%22ip%22:%22192.168.31.1%22,%22port%22:8080%7D'

此接口有2个参数,serviceName 和 beat,其中 beat 的值有点乱,这是因为其值是 JSON 字符串,需要进行 URL 编码,例如:

搜一个在线URL编码网站即可。

2.3 查询服务实例列表

发送请求:

curl -X GET 'http://127.0.0.1:8848/nacos/v1/ns/instance/list?serviceName=service-a'

返回:

{
    "metadata":{

    },
    "dom":"service-a",
    "cacheMillis":3000,
    "useSpecifiedURL":false,
    "hosts":[
        {
            "valid":true,
            "marked":false,
            "metadata":null,
            "instanceId":"192.168.31.1#8080#DEFAULT#DEFAULT_GROUP@@service-a",
            "port":8080,
            "healthy":true,
            "ip":"192.168.31.1",
            "clusterName":"DEFAULT",
            "weight":0,
            "ephemeral":true,
            "serviceName":"service-a",
            "enabled":true
        }
    ],
    "name":"DEFAULT_GROUP@@service-a",
    "checksum":"2be56e35d79c2cf9982e0b5e19b2bd29",
    "lastRefTime":1604222416258,
    "env":"",
    "clusters":""
}

2.4 注销实例

发送请求:

curl -X DELETE 'http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=service-a&ip=192.168.31.1&port=8080'

指定服务名、实例IP与端口。

查看控制台的服务列表:

已经空了。

本文分享自微信公众号 - 性能与架构(yogoup),作者:杜亦舒

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-11-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Nacos入门指南02 - 环境搭建

    可惜的是码云中只同步了源码,并没有同步发布页面中的内容,直接在 GitHub 中下载会很慢。

    dys
  • 异地多活架构

    同城异区两个机房距离一般就是几十千米,网络传输速度几乎和同一个机房相同,降低了系统复杂度、成本。

    dys
  • mysql char与varchar类型的区别

    image.png 基本区别 char 是固定长度的,varchar 是可变长度的 char 如果某个长度小于M,MySQL就会在它的右边用空格补足,使长度达到...

    dys
  • 子集

    给定一组不含重复元素的整数数组nums,返回该数组所有可能的子集(幂集)。 说明:解集不能包含重复的子集。

    WindrunnerMax
  • 发现产品机会点?试试用户分层

    作者:viviheyfeng,腾讯无线安全产品部设计组 引言 随着产品发展和用户结构变化,我们的用户不再是一个简单的整体。对于同一功能的不同用户,甚至是同一...

    腾讯大讲堂
  • 移动直播LiteAVSDK,推流事件回调onPushEvent()

    您可以为 LivePusher 对象绑定一个TXLivePushListener,之后 SDK 的内部推流状态信息均会通过 onPushEvent(事件通知) ...

    腾讯云-chaoli
  • 简化之道:容器与SDN

    SDN技术为简化接入网络、支持应用创造了机会,但是大多数公司即便采用了SDN技术,但是对待网络的态度仍然跟从前一样,造成的结果是网络仍然保持了原有的复杂性。容器...

    SDNLAB
  • 2种常见软件项目工作量评估方法简述

      本文的目标读者是从事软件行业想快速了解软件开发过程工作量评估的人员。软件工作量评估方法很多,如代码行法、类比法、WBS、故事点、用例点、NESMA、FPA、...

    软件造价评估联盟
  • Annals of Neurology :低频振荡(LFOs)与中风患者的运动恢复状况有关

    大多数中风患者在急性发作期存活下来,并长期生活在残疾之中。然而,能够帮助中风患者运动功能恢复的有效治疗方法尚未被开发,而发展这一方法的关键是识别恢复的神经生理信...

    用户1279583
  • python中传值和传地址问题

    在python中,还没有对这个知识点有一个详细的定义,很模糊的说明了,通过下面代码,可以观察出来,什么时候传的是值,什么时候传的是地址

    py3study

扫码关注云+社区

领取腾讯云代金券