SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式学习笔记 day1

1 认识微服务

  1.1 微服务介绍

        微服务是一种经过良好架构设计的分布式架构方案,其主要目的是降低程序内部的耦合度,微服务有以下的架构特征:

        · 单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责,避免重复的业务开发。

        · 面向服务:微服务对外暴露业务接口

        · 自治:团队独立、技术独立、数据独立、部署独立

        · 隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题

  1.2 微服务技术对比

Dubbo SpringCloud SpringCloudAlibaba
注册中心 zookeeper、Radis Eureka、Consul Nacos、Eureka
服务远程调用 Dubbo协议 Feign(http协议) Dubbo、Feign
配置中心 SpringCloudConfig SpringCloudConfig、Nacos
服务网关 SpringCloudGateway、Zuul SpringCloudGateway、Zuul
服务监控和保护 dubbo-admin(功能弱) Hystrix Sentinel

2 服务拆分及远程调用

 2.1 服务拆分注意事项

        1.不同的微服务不要开发相同的业务

        2.微服务数据独立,不能访问其他服务的数据库

        3.微服务可以将自己的业务暴露为借口,供其他的微服务调用

 2.2 服务调用关系

        1.服务提供者:暴露借口给其他微服务调用

        2.服务消费者:调用其他微服务提供的接口

        3.提供者和消费者角色其实是相对的

        4.一个服务可以同时是消费者和提供者

 2.3 eureka注册中心

        eureka的作用,其实就像是一个中间代理。

●消费者该如何获取服务提供者具体信息?
        ◆服务提供者启动时向eureka注册自己的信息
        ◆eureka 保存这些信息
        ◆消费者根据服务名称向eureka拉取提供者信息

●如果有多个服务提供者,消费者该如何选择?
        ◆服务消费者利用负载均衡算法,从服务列表中挑选一个

●消费者如何感知服务提供者健康状态?
        ◆服务提供者会每隔30秒向EurekaServer发送心跳请求,报告健康状态
        ◆eureka会更新记录服务列表信息,心跳不正常会被剔除
        ◆消费者就可以拉取到最新的信息

Eureka使用步骤:

1.搭建EurekaServer
        ● 引入eureka-server依赖
        ● 添加@EnableEurekaServer注解
        ● 在application.yml中配置eureka地址

2.服务注册:

        ● 在POM文件中引入eureka-client依赖
        ● 在application.yml中配置eureka地址

3.服务发现
        ● 引入eureka-client依赖
        ● 在application.yml中配 置eureka地址
        ● 给RestTemplate添加@LoadBalanced注解
       ●  用服务提供者的服务名称远程调用

2.4 Ribbon负载均衡

负载均衡流程

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式学习笔记 day1_第1张图片

 负载均衡策略

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式学习笔记 day1_第2张图片

 饥饿加载

        Ribbon默认是采用懒加载,即第一次访问时才会 去创建LoadBalanceClient,请求时间会很长。而饥饿加载则会在项目启动时创建,降低第一次访问的耗时, 通过下面配置在yml文件中开启饥饿加载:

ribbon:
   eager-load:
       enabled: true #开启饥饿加载
       clients:  # 指定对userservice这个服务饥饿加载
           - xxservice1
           - xxservice2

你可能感兴趣的:(dubbo,spring,intellij-idea)