乐趣区

关于微服务:微服务架构中的分布式技术选型分析

分布式应用

  • 在分布式系统中, 罕用 zookeeper+dubbo 组合
  • SpringBoot 举荐应用全栈的Spring,SpringBoot+SpringCloud

    Zookeeper+Dubbo

    Zookeeper

  • Zookeeper:(注册核心)

    • 是一个分布式, 开源的 分布式应用程序协调服务
    • 为分布式应用提供 一致性服务 的软件:

      • 配置保护
      • 域名服务
      • 分布式同步
      • 组服务

        Dubbo

  • Dubbo是 Alibaba 开源分布式框架

    • 最大的特点是 依照分层的形式架构 , 应用这种形式使各层之间 解耦合(最大限度地松耦合)
    • 从服务模型角度看,Dubbo 采纳简略的模型:要么是提供方提供服务, 要么是生产方生产服务
    • 形象出 提供方 (Provider) 和服务 生产方(Consumer) 两个角色

      Dubbo 的应用:
      Provider:
      1. 引入 dubbo-spring-boot-starter 依赖
      2. 引入 zookeeper 的客户端工具 zkclient 依赖
      3. 配置 application.properties 中 duboo 的相干属性:
                              dubbo.application.name=provider-ticket
                              dubbo.regestry.address=zookeeper://localhost:2181
                              dubbo.scan.base-packages=com.web.ticket.service
      4. 在实现类上标注 @Service 注解(com.alibaba.dubbo.config.annotation), 将服务公布进来. 并且将类增加到容器中 @Component
      
      Consumer:
      1. 引入 dubbo-spring-boot-starter 依赖
      2. 引入 zookeeper 的客户端工具 zkclient 依赖
      3. 配置 application.properties 中 duboo 的相干属性:
                              dubbo.application.name=provider-ticket
                              dubbo.regestry.address=zookeeper://localhost:2181
      4. 创立和 Provider 完全相同的接口目录构造:com.web.ticket.service.TicketService
      5. 创立 service 类, 在 service 类中通过标注 @Reference 注解引入 TicketService

      SpringBoot+SpringCloud

      SpringCloud

  • SpringCloud:

    • SpringCloud 是 分布式的整体解决框架
    • SpringCloud 提供了在分布式系统中 疾速构建的工具:

      • 配置管理
      • 服务发现
      • 熔断
      • 路由
      • 微代理
      • 管制总线
      • 一次性 token
      • 全局锁
      • leader 选举
      • 分布式 session
      • 集群状态
    • SpringCloud 能够 疾速的启动服务或构建利用, 同时可能疾速和云平台资源进行对接
  • SpringCloud 分布式开发组件:

    • 服务发现: Eureka
    • 客户端负载平衡: Ribbon
    • 断路器: Hystrix
    • 服务网关: Zuul
    • 分布式配置: SpringCloud Config

      Eureka-Server:
      1. 创立 Eureka 注册核心 Cloud Discovery-Eureka Server
      2. 配置文件:server.port=8761    eureka.instance.hostname=eureka-server    eureka.client.registry-with-eureka=false(不将本人注册到 Eureka 上)    eureka.client.fetch-registry=false(不从 Eureka 上获取服务的注册信息)    eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
      3. 在注册核心主类上标注 @EnableEurekaServer 注解启动 Eureka 注册服务
      
      Provider(同一个利用能够在注册核心注册多个)
      1. 创立提供者 CloudDiscovery-Eureka Discovery
      2. 创立 service 办法, 创立 controller 层通过 Http 服务申请进行通信(SpringCloud 整合微服务是通过轻量级 Http 进行服务通信)
      3. 配置文件:server.port=8001    spring.application.name=provide-ticket    eureka.instance.prefer-ip-address=true(注册服务的时候应用服务的 IP 地址)    eureka.instance.eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
      4. 在主类上标注 @EnableEurekaClient 注解将服务提供者 (Provider) 服务注册到注册核心
      
      Consumer
      1. 创立消费者 CloudDiscovery-Eureka Discovery
      2. 创立 controller 层通过 Http 服务申请进行通信
      3. 配置文件:spring.application.name=consumer-user    server-port=8200    eureka.instance.prefer-ip-address=true(注册服务的时候应用服务的 IP 地址)    eureka.instance.eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
      4. 在主类上标注 @EnableEurekaClient(@EnableDiscoveryClient)注解开启发现服务性能
      5. 创立 RestTemplate 并标注 @Bean 增加办法创立 Http 服务进行通信, 标注 @LoadBalanced 注解启用负载平衡机制
退出移动版