MSE-Nacos 测评

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 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的简单易用,高可用性,云上生态,可托管,可维护性,安全性等方面让人着迷,希望推进到业务测试使用起来。也推荐大家一起来测评。

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
目录
相关文章
|
1月前
|
人工智能 Serverless 测试技术
nacos常见问题之Serverless 应用引擎2.0不支持 MSE nacos如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
|
10月前
|
负载均衡 Kubernetes Java
MSE-Nacos测评
MSE-Nacos测评
259 0
|
1月前
|
监控 负载均衡 API
MSE Sentinel vs OpenSergo
“【5月更文挑战第24天】”
43 1
|
8月前
|
运维 Cloud Native 应用服务中间件
『MSE』阿里云中“间”力量MSE-Higress
云原生网关 MSE-Higress (以下简称 MSE-Higress )是遵循开源 Ingress/Gateway API 标准的下一代网关产品,将传统的流量网关、微服务网关、安全网关合三为一,降低50%的资源开销,具有高集成、易使用、易扩展、热更新的特点。MSE-Higress 提供了流量调度、服务治理、安全防护等能力,并深度集成 Dubbo、Nacos、Sentinel 等微服务技术栈,提升网关链路的整体性能、降低部署和运维成本,同时支持 Nginx Ingress 的平滑迁移,帮助用户零成本快速迁移到 MSE-Higress。
2047 10
『MSE』阿里云中“间”力量MSE-Higress
|
9月前
|
运维 Cloud Native Java
MSE-Higress
MSE-Higress
208 1
|
1月前
|
运维 监控 安全
MSE Nacos 配置变更审计平台使用指南
MSE Nacos 配置变更审计平台使用指南
|
1月前
|
存储 安全 Nacos
MSE Nacos,解决敏感配置的安全隐患
本文向大家介绍,MSE Nacos 是如何解决敏感配置的安全隐患,并提供使用 MSE Nacos 加解密敏感配置的最佳实践。
|
1月前
|
Nacos
MSE nacos读取不到nacos配置
MSE nacos读取不到nacos配置
41 0
|
8月前
|
存储 监控 安全
注册配置中心MSE-Nacos体验
拿最近参与的一个项目体验来说说MSE-Nacos。
232 58
|
8月前
|
安全 Java Nacos
『MSE』阿里云中“间”力量MSE-Nacos
注册配置中心 MSE-Nacos (以下简称 MSE-Nacos),即 Nacos 的企业版,开箱即用的 Nacos 云服务,对 Nacos 内核进行企业级稳定性加固,故障自动检测及恢复、多可用区容灾、推空保护等特性,具有风险管理能力,全局持续分析并管理集群风险;企业级安全基于 RAM 鉴权体系,可构建细粒度的安全控制能力,集成阿里云 KMS 提供配置加密能力,帮企业更安全地使用 Nacos 服务
64006 10
『MSE』阿里云中“间”力量MSE-Nacos