Nacos、Eureka和Zookeeper有什么区别

    Nacos、Eureka和Zookeeper都是服务注册中心,它们的主要功能是管理分布式系统中各个微服务实例的注册与发现。它们之间的主要区别在于:

1. 语言支持:Nacos是用Java语言开发的,Eureka是用Java语言开发的,Zookeeper则是用C语言开发的。

2. 功能特性:Nacos支持服务发现、配置管理、流量管理、DNS、动态DNS等多种特性,而Eureka只支持服务注册和发现功能,Zookeeper可以实现可靠的数据存储和协调。

3. 应用场景:Nacos适用于Kubernetes、Service Mesh、Spring Cloud等云原生场景,Eureka适用于Spring Cloud生态系统,Zookeeper适用于Hadoop分布式集群等大规模分布式系统场景。

4. CAP理论:Nacos支持使用Raft和Paxos来保证分布式一致性,可以实现CP(Consistency and Partition tolerance),也可以实现AP(Availability and Partition tolerance)。Eureka支持实现AP模型,而Zookeeper是CP模型。

5. 运行模式:Nacos和Eureka都支持自主部署和集群模式,而Zookeeper需要独立部署和启动集群。

总的来看,Nacos是一个全栈解决方案,支持服务发现、配置管理和流量管理等多个功能。Eureka专注于服务注册和发现,适用于Spring Cloud场景。Zookeeper则是一个通用的分布式数据存储和协调系统,适用于大规模分布式系统的场景。

public class RegistryService {
    public static void main(String[] args) {
        // Nacos注册中心
        NamingService naming = NacosFactory.createNamingService("localhost:8848");
        try {
            naming.registerInstance("service", "127.0.0.1", 8080);
            List<Instance> instances = naming.getAllInstances("service");
            for (Instance instance : instances) {
                System.out.println(instance.getIp() + ": " + instance.getPort());
            }
        } catch (NacosException e) {
            e.printStackTrace();
        }

        // Eureka注册中心
        EurekaClientConfig eurekaConfig = new DefaultEurekaClientConfig();
        eurekaConfig.setRegistryUrl("http://localhost:8761/eureka/");
        PeerAwareInstanceRegistry registry = new PeerAwareInstanceRegistryImpl(
                new InMemoryInstanceRepository(),
                eurekaConfig,
                new Provider<HealthCheckHandler>() {
                    @Override
                    public HealthCheckHandler get() {
                        return null;
                    }
                });
        Applications applications = new Applications();
        Application application = new Application("service");
        InstanceInfo serviceInstance = InstanceInfo.Builder.newBuilder()
                .setAppName("service")
                .setIPAddr("127.0.0.1")
                .setPort(8080)
                .build();
        application.addInstance(serviceInstance);
        applications.addApplication(application);
        registry.register(serviceInstance, true);

        // Zookeeper注册中心
        ZooKeeper zk = new ZooKeeper("localhost:2181", 3000, null);
        zk.create("/services/service", "".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL);
        List<String> instances = zk.getChildren("/services/service", false);
        for (String instance : instances) {
            byte[] data = zk.getData("/services/service/" + instance, false, null);
            System.out.println(new String(data));
        }
    }
}

603dfb918946416ab13b6fcbe802a91d.jpg

 

 

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码视野

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值