当前位置:   article > 正文

Java项目硅谷课堂学习笔记-P9-整合网关与实现订单和营销管理模块_硅谷orderinfoserviceimpl

硅谷orderinfoserviceimpl

P9-整合网关与实现订单和营销管理模块

    • 1.1什么是Spring Cloud
    • 1.2Spring Cloud和Spring Boot关系
    • 1.3Spring Cloud相关基础服务组件
  • 4. 后台管理系统-订单管理模块
      • 4.2.1后端-条件分页查询接口controller
      • 4.2.2后端-serviceImpl层
      • 4.2.3后端-service_gateway配置文件
    • 5. 后台管理系统-营销管理模块
    • 5.2开发优惠券相关接口
    • 6.1编写获取用户信息接口
    • 6.2创建模块定义远程接口.
      • 6.2.2service_client引入依赖
      • 6.2.3定义远程调用的接口
    • 6.3编写Service实现方法
      • 6.3.1service_activity引入依赖
      • 6.3.2service_activity添加注解
      • 6.3.3CouponInfoServiceImpl实现方法

1.SpringCloud

1.1什么是Spring Cloud

Spring Cloud是一系列框架的集合。它利用Spring Boot的开发便利性简化了分布式系统基础设施的开发,如

  • 服务发现
  • 服务注册
  • 配置中心
  • 消息总线
  • 负载均衡
  • 熔断器
  • 数据监控等

都可以用Spring Boot的开发风格做到一键启动和部署。Spring并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过SpringBoot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包

1.2Spring Cloud和Spring Boot关系

Spring Boot 是 Spring 的一套快速配置脚手架,可以基于Spring Boot 快速开发单个微服务,Spring Cloud是一个基于Spring Boot实现的开发工具;

Spring Boot专注于快速、方便集成的单个微服务个体,Spring Cloud关注全局的服务治理框架;

Spring Boot使用了默认大于配置的理念,很多集成方案已经帮你选择好了,能不配置就不配置,Spring Cloud很大的一部分是基于Spring Boot来实现,必须基于Spring Boot开发。可以单独使用Spring Boot开发项目,但是Spring Cloud离不开 Spring Boot

1.3Spring Cloud相关基础服务组件

  1. 服务发现——Netflix Eureka (Nacos)
  2. 服务调用——Netflix Feign
  3. 熔断器——Netflix Hystrix
  4. 服务网关——Spring Cloud GateWay
  5. 分布式配置——Spring Cloud Config (Nacos)
  6. 消息总线 —— Spring Cloud Bus (Nacos)

2.Nacos

2.0Nacos作用

  1. 注册中心
  2. 配置中心

2.1基本概念

Nacos 是阿里巴巴推出来的一个新开源项目,是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

2.2常见的注册中心

  1. Eureka(原生,2.0遇到性能瓶颈,停止维护)

  2. Zookeeper(支持,专业的独立产品。例如:dubbo)

  3. Consul(原生,GO语言开发)

  4. Nacos

相对于 Spring Cloud Eureka 来说,Nacos 更强大。

Nacos = Spring Cloud Eureka + Spring Cloud Config

Nacos 可以与 Spring, Spring Boot, Spring Cloud 集成,并能代替 Spring Cloud Eureka, Spring Cloud Config

通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-discovery 实现服务的注册与发现。

2.3Nacos结构图

2.4Nacos启动

Nacos下载地址

Windows

启动方式,cmd打开,执行命令:

startup.cmd -m standalone

访问:http://localhost:8848/nacos

用户名密码:nacos/nacos

如果Nacos启动不了发现网页打不开,

  • 看一看当前文件夹所在路径是否包含中文,更换到全英文路径的文件下
  • 其次删除解压的文件,重新解压,再次启动即可

2.5服务注册

2.5.1引入依赖

<!-- 服务注册 -->
<dependency>
   <groupId>com.alibaba.cloud</groupId>
   <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

<!-- 服务调用feign -->
<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

2.5.2配置自己的服务service_vod

配置application.properties,在客户端微服务中添加注册Nacos服务的配置信息

# nacos服务地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

2.5.3添加Nacos客户端注解

在service_vod微服务启动类中添加注解

package com.jq.vod;


import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.context.annotation.ComponentScan;
@EnableDiscoveryClient
@SpringBootApplication
@ComponentScan(basePackages = "com.jq")
public class ServiceVodApplication {
 
    public static void main(String[] args) {
 
        SpringApplication.run(ServiceVodApplication.class);
    }
}

2.6Nacos使用注意点

后期每个功能写完的时候,首先启动Nacos,然后再启动Java程序,否则报错

3.gateway网关

3.1Gateway概述

Spring cloud gateway是spring官方基于Spring 5.0、Spring Boot2.0和Project Reactor等技术开发的网关,Spring Cloud Gateway旨在为微服务架构提供简单、有效和统一的API路由管理方式,Spring Cloud Gateway作为Spring Cloud生态系统中的网关,目标是替代Netflix Zuul,其不仅提供统一的路由方式,并且还基于Filter链的方式提供了网关基本的功能,例如:安全、监控/埋点、限流等。

3.2Gateway核心概念

网关提供API全托管服务,丰富的API管理功能,辅助企业管理大规模的API,以降低管理成本和安全风险,包括

  • 协议适配
  • 协议转发
  • 安全策略
  • 防刷
  • 流量
  • 监控日志等

一般来说网关对外暴露的URL或者接口信息,我们统称为路由信息。如果研发过网关中间件或者使用过Zuul的人,会知道网关的核心是Filter以及Filter Chain(Filter责任链)。Sprig Cloud Gateway也具有路由和Filter的概念。下面介绍一下Spring Cloud Gateway中几个重要的概念。

3.2.1路由

路由是网关最基础的部分,路由信息有

  • 一个ID
  • 一个目的URL
  • 一组断言
  • 一组Filter组成

如果断言路由为真,则说明请求的URL和配置匹配

3.2.2断言

Java8中的断言函数。Spring Cloud Gateway中的断言函数输入类型是Spring5.0框架中的ServerWebExchange。Spring Cloud Gateway中的断言函数允许开发者去定义匹配来自于http request中的任何信息,比如请求头和参数等。

3.2.3.过滤器

一个标准的Spring webFilter。Spring cloud gateway中的filter分为两种类型的Filter,分别是Gateway Filter和Global Filter。过滤器Filter将会对请求和响应进行修改处理

3.3实现网关转发功能

3.3.1创建网关模块

在ggkt_parent下创建service_gateway

3.3.2引入网关依赖

<dependencies>
    <dependency>
        <groupId>com.atguigu</groupId>
        <artifactId>service_util</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>

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

    <!-- 服务注册 -->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
</dependencies>

3.3.3创建启动类

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

3.3.4创建配置文件

编写application.properties

# 服务端口
server.port=8333

# 服务名
spring.application.name=service-gateway

# nacos服务地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848


#使用服务发现路由
spring.cloud.gateway.discovery.locator.enabled=true

#service-vod模块配置
#设置路由id 即Nacos中服务注册的名称
spring.cloud.gateway.routes[0].id=service-vod
#设置路由的uri  lb :loadbalance
spring.cloud.gateway.routes[0].uri=lb://service-vod
#设置路由断言,代理servicerId为auth-service的/auth/路径  /admin/vod/chapter
spring.cloud.gateway.routes[0].predicates= Path=/*/vod/**

3.4网关解决跨域问题

3.4.1跨域概述

跨域本质是浏览器对于ajax请求的一种安全限制:一个页面发起的ajax请求,只能是与当前页域名相同的路径,这能有效的阻止跨站攻击。因此:跨域问题 是针对ajax的一种限制。但是这却给我们的开发带来了不便,而且在实际生产环境中,肯定会有很多台服务器之间交互,地址和端口都可能不同。

之前我们通过服务器添加注解实现,现在我们跨域通过网关来解决跨域问题。

3.4.2创建配置类

过滤器实现

package com.jq.gateway.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.reactive.CorsWebFilter;
import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;
import org.springframework.web.util.pattern.PathPatternParser;

@Configuration
public class CorsConfig {
 
    //处理跨域
    @Bean
    public CorsWebFilter corsFilter() {
 
        CorsConfiguration config = new CorsConfiguration();
        config.addAllowedMethod("*");
        config.addAllowedOrigin("*");
        config.addAllowedHeader("*");
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(new PathPatternParser());
        source.registerCorsConfiguration("/**", config);
        return new CorsWebFilter(source);
    }
}

3.3.5修改前端

4. 后台管理系统-订单管理模块

4.1环境准备

4.1.1创建数据库表

4.1.2创建订单模块

4.1.3生成订单相关实体类

4.1.4创建启动类

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

4.1.5创建配置文件

# 服务端口
server.port=8302

# 服务名
spring.application.name=service-order

# 环境设置:dev、test、prod
spring.profiles.active=dev

# mysql数据库连接
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/glkt_order?characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456

#返回json的全局时间格式
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8

#mybatis日志
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImp
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/1014174
推荐阅读
相关标签
  

闽ICP备14008679号