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

2021年09月16日 阅读数:2
这篇文章主要向大家介绍微服务架构中的分布式技术选型分析,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

分布式应用

  • 在分布式系统中,经常使用zookeeper+dubbo组合
  • SpringBoot推荐使用全栈的Spring,SpringBoot+SpringCloudweb

    Zookeeper+Dubbo

    Zookeeper

  • Zookeeper:(注册中心)spring

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

      • 配置维护
      • 域名服务
      • 分布式同步
      • 组服务架构

        Dubbo

  • Dubbo是Alibaba开源分布式框架app

    • 最大的特色是按照分层的方式架构,使用这种方式使各层之间解耦合(最大限度地松耦合)
    • 从服务模型角度看,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分布式开发组件:ide

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

      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注解启用负载均衡机制