Springcloud Alibaba

SpringCloud. Alibaba的优势:

阿里使用过的组件经历了考验,性能强悍,设计合理,现在开源出来大家用
成套的产品搭配完善的可视化界面给开发运维带来极大的便利
搭建简单,学习曲线低。

结合SpringCloud Alibaba我们最终的技术搭配方案:

  • SpringClaud.Alilbaba.-Nacos:注册中心(服务发现/注册)
  • SpringCloud Alibaba-Nacos:配置中心(动态配置管理)
  • SpringCloud-Ribbon:负载均衡
  • SpringCloud-Feign:声明式HTTP客户端(调用远程服务)
  • SpringCloud Alibaba- Sentinel:服务容错(限流、降级、熔断)
  • SpringCloud-Gateway:API网关(webflux编程模式)
  • SpringClaud- Sleuth:调用链监控
  • SpringCloud Alibaba.- Seata:原Fescar,即分布式事务解决方案

1. Nacos 注册中心/发现

下载nacos服务器, 以下实验将==startup.cmd ==
set MODE=“standalone” (原来是用于发布环境的集群状态)
在这里插入图片描述

  1. 首先在公共的common-pom.xml导入依赖,
  2. 然后properties中指向注册中心地址,端口
<!--        服务的注册/发现-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
</dependencyies>
<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.2.2.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    
===========application.yml======
spring:
  cloud:
    nacos:
      server-addr: 127.0.0.1:8848
  1. 使用@EnableDiscoveryClient 注解开启服务注册于发现功能
  2. 启动nacos,解压目录后的bin/startup.cmd,然后打开浏览器输入:
    http://localhost:8848/nacos
  3. 写服务名给注册 :
spring:
	application:
		name: gulimall-coupon
  1. 运行服务后,再刷新浏览器可看到
    在这里插入图片描述

2. OpenFeign 远程调用

2.1 简介

Feign是一个声明式的HTTP客户端,它的目的就是让远程调用更加简单。Feign提供了HTTP请求的模板,通过编写简单的接口和插入注解,就可以定义好HTTP请求的参数、格式、地址等信息。

Feign整合了Ribbon(负载均衡)和Hystrix(服务熔断),可以让我们不再需要显式地使用这两个组件。

SpringCloudFeign.在NetflixEeign.的基础上扩展了对SpringlMMcC 注解的支持,在其实现下,我们只需创建一个接口并用注解的方式来配置它,即可完成对服务提供方的接口绑定。简化了SpringCloudRibbon.自行封装服务调用客户端的开发量。

2.2 使用

  1. 引入依赖,一般创建项目就导入这个模块和 Nacos注册中心发现
 <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
  1. 实例一个coupon服务(在Controller中模拟一个),member服务去调用该服务

步骤如下:
1.引入open-feign,nacos依赖
2.编写一个接口,告诉springcloud 这个接口要远程调用谁的服务
1).声明接口的每一个方法都是调用哪个远程服务的那个请求
3.开启远程调用功能

==========coupon  Controller=======
 @RequestMapping("/member/list") 
    public R membercoupons(){
        CouponEntity entity = new CouponEntity();
        entity.setCouponName("满100减10");
        return R.ok().put("coupon",Arrays.asList(entity));
    }

===========member Feign===========
package com.atguigu.gulimall.memeber.feign;

import com.atguigu.common.utils.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;

@FeignClient("gulimall-coupon")  //声明式远程调用
public interface CouponFeignService {
    @RequestMapping("/coupon/coupon/member/list")
    public R membercoupons();
}

===========member Application.java======
@EnableFeignClients(basePackages = "com.atguigu.gulimall.memeber.feign")
@EnableDiscoveryClient
@SpringBootApplication

=========member Controller=======
   @Autowired
    CouponFeignService couponFeignService;

    @RequestMapping("/coupons")
    public R test(){
        MemberEntity memberEntity = new MemberEntity();
        memberEntity.setNickname("张三");
        R membercoupons = couponFeignService.membercoupons();
        return R.ok().put("member",memberEntity).put("coupon",membercoupons.get("coupon"));
    }
Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐