写点什么

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

发布于: 2021 年 04 月 26 日
微服务架构中的分布式技术选型分析

分布式应用

  • 在分布式系统中,常用 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.service4.在实现类上标注@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:21814.创建和Provider完全相同的接口目录结构:com.web.ticket.service.TicketService5.创建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 Server2.配置文件: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 Discovery2.创建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)服务注册到注册中心
Consumer1.创建消费者CloudDiscovery-Eureka Discovery2.创建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注解启用负载均衡机制
复制代码


发布于: 2021 年 04 月 26 日阅读数: 19
用户头像

一位攻城狮的自我修养 2021.04.06 加入

分享技术干货,面试题和攻城狮故事。 你的关注支持是我持续进步的最大动力! https://github.com/ChovaVea

评论

发布
暂无评论
微服务架构中的分布式技术选型分析