Fork me on GitHub

SpringcloudAlibaba

简介

2019年7月24日,Spring官方宣布SpringCloudAlibaba毕业,仓库迁移至Alibaba Github OSS下,这意味着Spring Cloud Alibaba 是国内首个进入Spring社区的开源项目,同时意味着原先的SpringCloud组件停止更新,SpringCloudAlibaba将成为主流。
特征:

  • 流量控制和服务降级: Alibaba Sentinel的流量控制、断路和系统自适应保护

  • 服务注册与发现:实例可以注册到阿里巴巴的 Nacos,客户端可以通过 Spring 管理的 bean 发现实例。通过 Spring Cloud Netflix 支持客户端负载均衡器 Ribbon

  • 分布式配置:使用阿里巴巴Nacos作为数据存储

  • 事件驱动:构建与Spring Cloud Stream RocketMQ Binder连接的高度可扩展的事件驱动微服务

  • Message Bus : 用 Spring Cloud Bus RocketMQ 链接分布式系统的节点

  • Distributed Transaction :支持Seata高性能、易用的分布式事务解决方案

  • Dubbo RPC :通过Apache Dubbo RPC扩展Spring Cloud service-to-service调用的通信协议

官网地址:
https://spring.io/projects/spring-cloud-alibaba

Nacos

简介

Nacos(Naming Configuration Service) 是一个易于使用的动态服务发现、配置和服务管理平台,用于构建云原生应用程序。
Nacos = 注册中心+配置中心组合
官网网址:https://nacos.io/zh-cn/index.html
windows下载地址:
链接:https://pan.baidu.com/s/1fp6ZJC9u5BUcY-BXf5BOCw
提取码:y530
Linux下载地址:
链接:https://pan.baidu.com/s/138fdOWpFu6QWfX_YYCGd6w
提取码:gqn1

启动

startup.cmd -m standalone:windows下单机模式启动;
sh startup.sh -m standaloneLinux下单机模式启动。

项目创建

  • 父项目POM中依赖
<spring-cloud-alibaba-version>2.2.5.RELEASE</spring-cloud-alibaba-version>
 <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba-version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
  • 配置子项目POM中依赖
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
		<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

配置中心也要注册进nacos中,故要添加discovery依赖

  • 配置子项目bootstrap.yml中
spring:
  application:
    name: nacos-config
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848 #Nacos服务注册中心地址
      config:
        server-addr: 127.0.0.1:8848 #Nacos作为配置中心地址
        file-extension: yaml


management:
  endpoint:
    web:
      exposure:
        include:'*'
  • nacos中加入配置列表
    image

  • 注册和发现子项目POM中依赖

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
  • 注册和发现子项目bootstrap.yml中依赖
spring:
  application:
    name: nacos-discovery
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848 #Nacos服务注册中心地址
  • 注册和发现子项目启动Application类中加入注解
@EnableDiscoveryClient

启动项目

访问nacos启动页面
http://192.168.101.105:8848/nacos/index.html
出现如下页面配置成功
image

Rabbon

简介

它是一个基于HTTP和TCP客户端负载均衡器。它虽然只是一个工具类库,它却是每一个微服务的基础设施。因为实际上,对于服务间调用、API网关请求转发都需要经过Ribbon负载均衡来实现。总体来说,Ribbon的主要作用是:从注册服务器端拿到对应服务列表后以负载均衡的方式访问对应服务。
何时使用Ribbon呢?一般情况下当一个模块需要从另外一个模块获取数据时候就需要使用Ribbon的远程访问功能了。
要注意的是Nacos已经整合了Ribbon,所以我们想要使用只需要导入Spring Cloud Alibaba Nacos的依赖就可以直接使用了。故不需要单独导入依赖

配置文件编写

@Component
public class ConfigurationBean {

    @Bean
    @LoadBalanced
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
}

访问业务代码编写

 @Resource
 private RestTemplate restTemplate;
 @GetMapping(value = "/getBean")
    public Uesr getBean(){
        Uesr uesr=new Uesr();
        uesr.setAge(12);
        uesr.setUsername("张三");
        return restTemplate.postForObject(serverURL+"/getBean",uesr, Uesr.class);
    }

    @GetMapping(value = "/getPort")
    public String getPort(){
        return restTemplate.getForObject(serverURL+"/getPort/{id}",String.class,123);
    }

消费者yml配置

service-url:
  nacos-user-service: http://nacos-config #Nacos提供服务者地址

访问

注意: Rabbon服务请求是基于RestFUL风格进行访问,故服务提供者接口应提供RestFUL风格。

Gitee地址

https://gitee.com/zhuayng/foundation-study/tree/develop/OtherFrame/SpringCloudAlibaba/nacos-spring-cloud-example

posted @ 2020-12-08 16:19  晨度  阅读(374)  评论(0编辑  收藏  举报