美文网首页
微服务之服务治理

微服务之服务治理

作者: i骷髅精灵 | 来源:发表于2019-12-03 09:22 被阅读0次

    服务治理所解决的问题

    在传统rpc远程调用中,服务与服务依赖关系,管理比较复杂,所以需要使用服务治理,管理服务与服务之间依赖关系,可以实现服务调用、负载均衡、容错等,实现服务发现与注册。
    在服务注册与发现中,有一个注册中心,当服务器启动的时候,会把当前自己服务器的信息 比如 服务地址通讯地址等以别名方式注册到注册中心上。
    另一方(消费者|服务提供者),以该别名的方式去注册中心上获取到实际的服务通讯地址,让后在实现本地rpc调用远程。

    服务治理所使用的技术手段

    1、通过注册中心实现服务的注册与发现 ,需要一个注册中心,常用的有zookeeper、Eureka、Consul 等
    2、通过本地RPC接口调用需要的服务,常用Feign客户端、RestTemplate等方式

    服务发现与注册的简单技术实现

    Eureka实现服务的注册与发现(springcloud整合Eureka)

    pom.xml 依赖项
    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
       
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>Greenwich.SR3</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
        <dependencies>
            <!-- springboot整合eureka客户端 -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            </dependency>
    
            <!-- springboot整合fegnin客户端 -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-openfeign</artifactId>
            </dependency>
       </dependencies>
    
    </project>
    
    
    
    application.yml中配置
    ### 服务名称(服务注册到eureka名称)
    spring:
      application:
        name: app-itmayiedu-order
    eureka:
      client:
        service-url:
          defaultZone: http://localhost:8100/eureka
        ###因为该应用为注册中心,不会注册自己,集群为true
        register-with-eureka: false
        ###是否需要从eureka上获取注册信息,集群为true
        fetch-registry: false
    
    
    在启动类Application上加入注解 @EnableEurekaClient
    @SpringBootApplication
    @EnableEurekaClient
    public class Application {
        public static void main(String[] args) {
            SpringApplication.run(OrderApplication.class, args);
        }
    }
    

    然后在使用到服务是就可以使用服务器名称(application.yml中配置的应用名称代替服务地址进行服务调用)

    zookeeper实现服务的注册与发现(springcloud整合zookeeper)

    zookeeper的整合跟Eureka非常类似

    pom.xml 依赖项
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
            </dependency>
            <!--zk工具包 保持客户端zookeeper版本与服务器端一致-->
            <dependency>
                <groupId>org.apache.zookeeper</groupId>
                <artifactId>zookeeper</artifactId>
                <version>3.4.14</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-log4j12</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>log4j</groupId>
                        <artifactId>log4j</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
    

    注意zookeeper指定版本是为了服务端和客户端版本保持一致,防止兼容性的问题出现

    application.yml中配置
    spring:
      application:
        name: app-order-service
      cloud:
        zookeeper:
          discovery:
            register: true
            enabled: true
            instance-id: 1
            root: /demo
          connect-string: 39.104.124.245:2181
    
    在启动类Application上加入注解 @EnableDiscoveryClient
    @SpringBootApplication
    @EnableDiscoveryClient
    public class Application {
        public static void main(String[] args) {
            SpringApplication.run(OrderApplication.class, args);
        }
    }
    

    然后在使用到服务是就可以使用服务器名称(application.yml中配置的应用名称代替服务地址进行服务调用)

    相关文章

      网友评论

          本文标题:微服务之服务治理

          本文链接:https://www.haomeiwen.com/subject/fuoqgctx.html