MSE-Nacos 测评

简介: MSE-Nacos 注册中心 测评

本文介绍四块内容:


一,前言

二,购买使用

三,测试案例

四,总结



一,前言


注册配置中心我们有在使用自建的ZooKeeper,在ACK上创建了5个实例的集群,从目前使用情况下,很少出现问题,有可能我们规模不大。偶尔有几次出现问题是,ZK的master因为节点故障,临时进行了选举,这期间服务注册不上去,后端出现了报错。所以ZooKeeper的可用性(AP)是我们比较关心的点,恰巧它只支持一致性(CP)。

等了解到Nacos,在AP层面的能力正是我们所需的,不过需要自建,还是比较麻烦。后来了解到它的企业版MSE-Nacos问世,才发现这款产品是我们的梦寐以求的。托管,可扩缩容,白屏化管理,支持RAM鉴权,一键接入健康和报警等等功能深深吸引了我们。现在我们来测试下MSE-Nacos 这款产品吧,看看是否在使用上,安全性,稳定性等功能满足我们的需求吧。




二,购买使用


此次购买开发版,早些还支持基础版,目前已经停止新购。

生产环境建议采购专业版本,支持同城高可用部署和推空保护。

几分钟后 就创建完成。

图片.png


配置访问白名单,因为买的是公网,后续需要对本地服务进行测试,白名单就是本地的出口IP。

如果需要vpc网络,可以在升降配页面再配置。

如果实例修改了引擎实例参数,或者实例有问题,也可以在本页面进行实例重启维护。


默认资源和服务使用public空间,如果需要做隔离,把控风险,可以使用新建命名空间。

 图片.png



三,测试案例


环境:

  • Dubbo:3.0.6
  • Nacos:阿里云2.2.3.0
  • Java:1.8

网上开源代码里搜的demo,我将nacos改成了MSE-Nacos。


主要定义了TestService接口

package com.dubbo.api;
public interface TestService {
    /**
     * 获取名称
     *
     * @param id
     * @return
     */
    String getName(Integer id);
}


dubbo-provider(服务提供者)

TestServiceImpl实现类

package com.dubbo.provider.service;
import com.dubbo.api.TestService;
import org.apache.dubbo.config.annotation.DubboService;
@DubboService
public class TestServiceImpl implements TestService {
    @Override
    public String getName(Integer id) {
        // 模拟查询数据库操作,返回了"张三";
        return "张三";
    }
}


启动类

package com.dubbo.provider;
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@EnableDubbo
public class DubboProviderApplication {
    public static void main(String[] args) {
        SpringApplication.run(DubboProviderApplication.class, args);
    }
}


配置nacos

server:
  port: 8001
spring:
  application:
    name: dubbo-provider
dubbo:
  # 注册中心地址--阿里云
  registry:
    address: nacos://xxx.mse.aliyuncs.com:8848


dubbo-consumer(服务消费者)

定义controller

package com.dubbo.consumer.controller;
import com.dubbo.api.TestService;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestController {
    @DubboReference
    private TestService testService;
    @GetMapping("/test")
    public String test(Integer id) {
        return testService.getName(id);
    }
}


启动类:

package com.dubbo.consumer;
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@EnableDubbo
public class DubboConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(DubboConsumerApplication.class, args);
    }
}


application.yml 配置Nacos 地址

server:
  port: 8002
spring:
  application:
    name: dubbo-consumer
dubbo:
  # 阿里云-注册中心地址
  registry:
    address: nacos://xxx.nacos-ans.mse.aliyuncs.com:8848
    register: false
consumer:
  # 取消服务启动检查
  check: false

本地启动provider服务和 consumer服务:



测试启动:

查看本地监听的端口都已经启动


浏览器访问:

http://localhost:8002/test

返回数据正常。


测试MSE-Nacos控制台功能

查看MSE-Nacos的服务

已经注册创建了3个服务。



点击接口可以查看提供者,订阅者和该接口的推送轨迹。


查看订阅者信息


查看推送轨迹

推送轨迹可以协助排查注册中心服务推送相关的问题,它详细展示了配置中心配置变更的信息记录,

默认全局的需要专业版才开通。

图片.png



如果使用到配置管理,可以查看配置列表。

图片.png



 

此处有接入的示例代码,👍


也可以将历史配置进行回滚操作


图片.png

 

监控中心:

这些监控 可以导入到grafana观察以及进一步使用Explore快速分析指标数据。


图片.png


 

访问鉴权

我们创建的Nacos引擎默认是不启用鉴权的,Nacos引擎会响应所有请求。

虽然我们加了IP白名单,但无法控制白名单其它用户访问Nacos实例,所以需要鉴权来控制操作和访问。


1,开启鉴权,修改ConfigAuthEnabledNamingAuthEnabled为“是”。


2,创建RAM账号和AK及分配策略

创建RAM子账户,选择OpenAPI调用访问,会自动创建访问密钥(AccessKey)

随后授权如下策略:

AliyunMSEFullAccess AliyunMSEReadOnlyAccess


3,客户端配置鉴权

此处使用dubbo

对应的配置为


图片.png

 

##鉴权
dubbo:
  registry:
    address: nacos://mse-8e0e94816-p.nacos-ans.mse.aliyuncs.com:8848?accessKey=XXX&secretKey=XXX

此外MSE Nacos 还支持更细粒度的授权,结合RAM Policy 可以对实例、命名空间、Group、DataId等设置访问的读、写权限,授权给应用最小够用权限,以此降低某个实例被恶意用户非法获取、修改的风险。


此处就不一一介绍啦。



建议

在创建告警规则的时候,选择nacos实例后,告警分组 没有展示出来,进而无法进一步配置告警指标等。


查文档,没有说明Nacos 开发版本不支持。


图片.png




四,总结


MSE-Nacos总体测试下来,使用比较丝滑,白屏化管理使用简单,直接在控制台查看和维护。对比目前在使用的ZooKeeper集群还是黑屏命令化管理,非常不便,也容易出错。

MSE-Nacos 可以配置集群,支持高可用,同时支持AP和CP,对一致性和可用性的需求都满足。

前言也说了ZK集群在维护期间会出现不可用,维护起来非常痛苦。我们在ACK的自建集群,需要逐台进行ZOO_SERVERS的定义,方便逐次选举,拉入进群。但 每次选举的时候又有半分钟以上的不可用,因为ZooKeeper的选举过程速度很慢,选举过程中需要进行元数据的同步操作,通常耗时30到120秒,所以选举期间注册服务是瘫痪的,导致服务不可用。

上面介绍了MSE-Nacos很多优点,不过最吸引我的还是MSE-Nacos 的 阿里云生态,比如鉴权方面可以使用RAM的Policy做非常精细的授权,确保客户端拿到的是最小够用原则授权,保证了安全性。还可以一键启用Grafana监控和接入钉钉告警。

总之,MSE-Nacos的简单易用,高可用性,云上生态,可托管,可维护性,安全性等方面让人着迷,希望推进到业务测试使用起来。也推荐大家一起来测评。

目录
相关文章
|
JSON 安全 JavaScript
SpringBoot时间格式化
SpringBoot时间格式化
304 0
|
数据采集 存储 分布式计算
一篇文章搞懂数据仓库:数据治理(目的、方法、流程)
一篇文章搞懂数据仓库:数据治理(目的、方法、流程)
28956 2
一篇文章搞懂数据仓库:数据治理(目的、方法、流程)
|
Java 数据库连接 Go
如何在Spring Boot应用中使用Nacos实现动态更新数据源
如何在Spring Boot应用中使用Nacos实现动态更新数据源
1390 0
|
6月前
|
缓存 监控 网络协议
【免费开源】基于 STM32 的远程视频监控项目 —— 从无线通信选型到系统架构实战解析
本项目基于STM32实现低成本、低功耗远程视频监控,融合DCMI图像采集、JPEG硬件压缩、Wi-Fi/4G无线传输、MQTT/TCP协议及云端展示。涵盖硬件选型、通信方案对比(推荐Wi-Fi局域网/4G DTU野外)、内存优化与稳定性设计,适配农业、工业、实验室等IoT场景,提供完整开源实战方案。
【免费开源】基于 STM32 的远程视频监控项目 —— 从无线通信选型到系统架构实战解析
|
12月前
|
人工智能 物联网 机器人
面向多模态感知与反思的智能体架构Agentic AI的实践路径与挑战
Agentic AI(能动智能体)代表人工智能从被动响应向主动规划、自主决策的范式转变。本文系统解析其核心架构,涵盖感知、记忆、意图识别、决策与执行五大模块,并探讨多智能体协作机制与通信协议设计。结合代码示例,展示意图识别、任务规划与异步执行的实现方式,分析该架构的优势与挑战,如高自主性与通信复杂性等问题。最后展望未来方向,包括引入RAG、LoRA与多模态感知等技术,推动Agentic AI在自动编程、机器人协作等场景的广泛应用。
面向多模态感知与反思的智能体架构Agentic AI的实践路径与挑战
|
数据管理 BI 定位技术
什么是数据地图、血缘分析和数据资产?
什么是数据地图、血缘分析和数据资产?
|
消息中间件 JSON Java
Spring Boot、Spring Cloud与Spring Cloud Alibaba版本对应关系
Spring Boot、Spring Cloud与Spring Cloud Alibaba版本对应关系
36355 1
|
人工智能 开发框架 数据可视化
Eino:字节跳动开源基于Golang的AI应用开发框架,组件化设计助力构建AI应用
Eino 是字节跳动开源的大模型应用开发框架,帮助开发者高效构建基于大模型的 AI 应用。支持组件化设计、流式处理和可视化开发工具。
2583 27
|
Java Nacos 数据安全/隐私保护
nacos启动问题之启动时连接报错如何解决
Nacos是一个开源的、易于部署的动态服务发现、配置管理和服务管理平台,旨在帮助微服务架构下的应用进行快速配置更新和服务治理;在实际运用中,用户可能会遇到各种报错,本合集将常见的Nacos报错问题进行归纳和解答,以便使用者能够快速定位和解决这些问题。
5501 108
|
Dubbo 前端开发 Java
Dubbo3 服务原生支持 http 访问,兼具高性能与易用性
本文展示了 Dubbo3 triple 协议是如何简化从协议规范与实现上简化开发测试、入口流量接入成本的,同时提供高性能通信、面向接口的易用性编码。
17300 113

热门文章

最新文章