Spring Cloud Alibaba 示例项目 Integerated-example 程序执行过程

Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案(https://gitee.com/mirrors/Spring-Cloud-Alibaba)。此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。项目中还包含了示例代码 spring-cloud-alibaba-examples 用于帮助开发者理解和使用项目的功能。

下面介绍的是 集成应用示例 Integerated-example 的程序执行过程。以订单功能实现为例进行介绍。

首先访问:http://integrated-frontend:8080/ordericon-default.png?t=N7T8http://integrated-frontend:8080/order

 请求被下面的控制器处理

@Controller
public class IntegrationController {

	@RequestMapping("/order")
	public String order() {
		return "order";
	}

	@RequestMapping("/rocketmq")
	public String rocketmq() {
		return "rocketmq";
	}

	@RequestMapping("/sentinel")
	public String sentinel() {
		return "sentinel";
	}

}

打开视图order.html:

显示界面如下:

点击“提交”按钮,触发 JavaScript代码:

通过ajax请求服务:http://gateway-service:30010/storage/

Integerated-gateway 模块是路由模块,它的配置文件中配置了路由规则:

从nacos中导入下面的配置文件中定义了路由规则:

其中

- id: queryStorage

          uri: lb://integrated-storage

          predicates:

            - Path=/storage/

是一个配置片段,用于服务路由或请求代理的配置。根据提供的配置,我们可以分析如下:

id: queryStorage    —— id 是这个路由或代理规则的标识符,通常用于标识或引用这个特定的规则。

uri: lb://integrated-storage —— uri 表示当这个规则被触发时,请求应该被转发到的目标地址(服务),完整的请求是服务名加上predicates 的Path的内容。lb:// 表示这是一个负载均衡的URI,意味着请求可能会被转发到多个后端服务中的一个,以实现负载均衡和高可用性。integrated-storage 是后端服务的名称或标识符。

predicates: predicates 是用于确定何时应用此路由或代理规则的条件列表。

- Path=/storage/  —— 这是一个具体的条件(predicate),表示只有当请求的路径(Path)以 /storage/ 开头时,这个路由或代理规则才会被应用。

所以,综上所述,这个配置片段定义了一个名为 queryStorage 的路由或代理规则。当请求的路径以 /storage/ 开头时,这个规则会被触发,并将请求转发到名为 integrated-storage 的负载均衡后端服务。这种配置通常出现在微服务架构中,特别是在使用API网关或服务网格时,用于控制请求的路由和转发。

        将 /storage 变为 lb://integrated-storage 调用,通过nacos服务发现,找到integrated-storage服务,执行 getRemainCount方法,获取库存数量。

接下来,查询显示账户余额后,执行

$.ajax({
   type: "POST",
   url: "http://gateway-service:30010/order/create",

去下订单:

 - id: placeOrder

          uri: lb://integrated-order

          predicates:

            - Path=/order/create

完整的请求是服务名加上predicates 的Path的内容,也就是 integrated-order 服务的 /order/create 。

再找到 integrated-order 服务,执行下面的createOrder方法。

上面控制器代码调用service代码的 createOrder 方法

其中通过 FeignCLient 调用 reduceStock 方法

这个请求没有走 gateway 模块(integrated-gateway.yaml 中没有定义),通过服务发现integrated-storage 服务,执行reduceStock方法。

上面的过程没有讲账户操作,过程与库存操作是一样的。也没有介绍数据库操作。数据库访问通过mybatis实现。

  • 17
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

因上精进,果上随缘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值