1.逆向工程renren-generator生成代码

image.png

2.SpringCloud Alibaba简介

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

3.版本选择

 1.5.x 版本适用于 Spring Boot 1.5.x
 2.0.x 版本适用于 Spring Boot 2.0.x 
 2.1.x 版本适用于 Spring Boot 2.1.x

4.项目中的依赖

在 common 项目中引入如下。进行统一管理

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>2.1.0.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

5.接入nacos

在common服务加依赖

    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>

在coupon服务MallCouponApplication启动类添加@EnableDiscoveryClient
在member服务MallMemberApplication启动类添加@EnableDiscoveryClient
我本地已经安装好nacos了,启动访问:http://127.0.0.1:8848/nacos/
用户名和密码都是:nacos
image.png

6.添加feign

在member服务添加依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

在启动类添加@EnableFeignClients(basePackages = "com.yxw.gulimall.member.feign")
image.png

7.测试feign

在coupon服务CouponController添加测试代码

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

在member服务添加测试代码

@FeignClient("mall-coupon")
public interface CouponFeignService {
  @RequestMapping("coupon/coupon/member/list")
  public R membercoupons();
}

在MemberController添加测试代码

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

启动coupon和member服务
访问:http://127.0.0.1:8000/member/member/coupons
image.png

8.nacos配置中心

在common服务添加依赖

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

在coupon新建bootstrap.properties文件添加如下信息

spring.application.name=mall-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848

nacos添加配置文件
image.png

如果配置中心和当前服务配置文件都配置了相同项,优先使用配置中心的配置

测试代码:
在coupon服务添加依赖

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

image.png

9.网关gateway

新建服务mall-gateway并在pom文件添加依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>

在启动类添加注解@EnableDiscoveryClient

@EnableDiscoveryClient
//由于网关不需要连接数据库,这里做个排除数据库相关
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class MallGatewayApplication {

  public static void main(String[] args) {
      SpringApplication.run(MallGatewayApplication.class, args);
  }
}

在application.properties配置文件添加

spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
spring.application.name=mall-gateway
server.port=88

在bootstrap.properties配置文件添加

spring.application.name=mall-gateway

spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.namespace=a0c67ee6-6827-461e-963b-55ed09864244

在nacos新建配置
image.png


great
1 声望0 粉丝