SpringFramework架构师

微服务实战——SpringCloud下的服务发现与注册组件Eur

2020-01-18  本文已影响0人  渠唐

聊聊服务发现注册

服务多,迭代快是微服务的明显特征。那么在快速小版本迭代业务时,如果按照传统的方式发布更新服务,手动的修改一些服务与服务之间的调用关系是非常麻烦且累人的。一个典型的场景可能是,一个微服务升级迭代之后,硬件环境发生改变(IP等的变化)。传统的做法是修改与其有调用关系的微服务调用地址然后一个个重启。这显然是非常麻烦又容易出错的。而服务发现与注册就是帮你把上述一系列的工作给封装好实现自动发现注册的服务去更新。集体为所有的微服务启动时都去注册中心登记,不管是调用者还是服务提供者,都通过注册中心完成服务的发现。这样就大大提升了我们实际工作中的效率问题。

当前流行的服务发现与注册组件

当前世面的服务注册发现框架很多,比较常见的有Zookeeper、SpringCloudEureka、Consul、Etcd等。这里只做简单介绍。具体还以实际场景做出选择。

上述组件的比较

Zookeeper Eureka Consul Etcd 功能
keepalive 客户主动报心跳 服务状态,内存,磁盘等 连接心跳 健康检查
N Y Y N 多数据中心
Y Y Y Y SpringCloud集成
ACL NA ACL/https Https 安全
客户端 Java/Http Http/dns Http/grpc 客户端接口
CP AP CA CP CAP
Paxos 定制P2P Raft Raft 一致性协议
Y N Y Y KV存储

项目搭建

    <parent>
        <artifactId>spring-cloud-demo</artifactId>
        <groupId>cn.kxtop.blog</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>eureka</artifactId>

    <dependencies>
        <!-- eureka server -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
        <!-- 系统监控 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
# Eureka支持集群间互相注册,这里为了方便只搭建一台,生产环境中请搭建集群并修改# eureka.client.registerWithEureka = false eureka.client.fetchRegistry = false配置
    spring.application.name = eureka-registry
    logging.level.org.spring.framework.security=INFO
    eureka.instance.prefer-ip-address = true
    eureka.client.registerWithEureka = false
    eureka.client.fetchRegistry = false
    eureka.server.waitTimeInMsWhenSyncEmpty = 0
    server.port = 8761
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

    @EnableEurekaServer
    @SpringBootApplication
    public class EurekaApplication {

            public static void main(String[] args) {
                    SpringApplication.run(EurekaApplication.class, args);
            }

    }

最后

下一篇,测试创建业务项目并测试Eureka服务注册与发现。

持续学习,记录点滴。更多请点击查看原文

上一篇 下一篇

猜你喜欢

热点阅读