Spring Cloud 微服务项目实战
姚秋辰(姚半仙)
PayPal 研发经理
15861 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 38 讲
结束语 (1讲)
Spring Cloud 微服务项目实战
15
15
1.0x
00:00/00:00
登录|注册

03 | 初窥门径:我们要搭建一个怎样的微服务实战项目?

你好,我是姚秋辰。
在上一节课,我跟你介绍了 Spring Cloud 的发展背景以及各个组件库,此刻,你一定已经跃跃欲试想要立马开始动手编写实战项目了吧?别着急,今天咱先别忙着敲代码,让我先为你勾画出实战项目的全景蓝图。
这节课,我会跟你聊一聊我们这个优惠券平台项目的整体功能和模块,以及每个功能点的技术选型和背后的依据,让你从宏观的角度来了解一下我们整个项目的概貌和大致的走向,帮助你更轻松地学习后面的课程。首先,我来带你了解一下这个实战项目的业务功能。

优惠券平台项目介绍

相信你一定参与过双 11 或者 618 之类的电商大促活动,体验过各种眼花缭乱的优惠券和营销规则计算。而我们的实战项目,就是要搭建一个简化版的营销优惠计算系统,实现优惠券模板的创建、用户领取优惠券、下单核销优惠券和订单价格试计算等功能。
我曾经参与了一线电商新零售平台营销中心业务从 0 到 1 的搭建,与淘系营销优惠平台 UMP 对接过很多花式营销玩法。根据我过去的经验,如果我要实现一个“领取优惠券”的功能,那么我首先是要创建一个营销规则模板。这个模板就像是一个模具一样,每张优惠券都通过这个模具来铸造,并最终发放到用户手中。
使用模板的好处是可以对优惠券消费规则做一层抽象,比如满减类、打折类这些优惠券只是具体的优惠金额不同,但是玩法类似,我们把相类似的玩法功能抽象成一个模板,就可以简化具体优惠券的创建和核销流程。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文详细介绍了微服务架构下的规划和技术选型,涵盖了微服务通信、服务容错、配置管理、分布式链路追踪、消息驱动和分布式事务等关键技术。作者首先介绍了一个优惠券平台项目的整体功能和模块,包括优惠券模板服务、计算服务、用户服务和平台类组件。接着,作者规划了Spring Boot实战项目,包括项目搭建、数据操作和开放对外API等技术点。最后,作者提出了Spring Cloud实战项目的全景规划,分为三个阶段:搭建基础的微服务功能、构建服务容错和分布式配置中心、实现微服务网关和分布式事务。在第一阶段,作者介绍了使用Nacos注册中心、Loadbalancer客户端负载均衡组件和OpenFeign服务间调用组件实现微服务之间的通信。在第二阶段,重点是利用服务容错提高微服务架构的可用性,搭建全链路的分布式链路追踪能力,以及实现统一的配置管理和动态属性推送。第三阶段的实战重点包括搭建微服务网关作为统一流量入口,使用消息驱动组件对接RabbitMQ,以及通过分布式事务保证数据一致性。整体来看,本文涵盖了微服务架构的规划和技术选型,适合想要了解微服务实战项目的读者阅读。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Spring Cloud 微服务项目实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(35)

  • 最新
  • 精选
  • Pyr0man1ac
    姚老师 能否扩展下微服务中鉴权相关知识点

    作者回复: 行家,一眼就发现我漏掉的一个模块了,之前课程里我都会通过security组件做一个oauth鉴权模块。这次没有加上,我后期看考虑在代码里坐上这部分。 话说同学,你的头像和我一位同事一样,不会是同一个人吧

    2021-12-18
    5
    19
  • chon
    我看前面有同学留言讨论优雅下线。我也有个相关问题。如果容器应用突然挂了,由于上游应用和注册中心同步需要时间,流量一段时间内还是会打到挂了的应用。这样500错误很多很难看。dubbo因为基于zookeeper就没这问题,能很快发现应用挂了。sc有啥好的方案能快速发现下游应用挂了,避免流量打到挂了的下游吗?

    作者回复: 其实就是在CP和AP之间做一个选择。如果用长会话做健康检查,并且用CP方案在注册中心集群内做状态同步,那么就是一种偏向一致性的实现模式。而大部分注册中心在一致性和可用性之间选择的是偏向可用性,AP方案,对一致性采取了一定的容忍,只要最终一致即可。如果要适当提高一致性,你可以调整心跳频率和剔除判定的时间,提高服务剔除的响应速度 微服务下的很多场景都是偏向最终一致性

    2021-12-22
    11
  • 李嘉颖
    我想深入一点了解一下限流降级熔断

    作者回复: 后面会讲到sentinel的流控和熔断规则,以及扩展sentinel实现基于来源的限流,dashboard二次开发接入nacos做规则持久化

    2021-12-17
    9
  • 公号-技术夜未眠
    很接地气,请老师加餐讲讲基于k8s的微服务弹性落地方案,谢谢老师

    作者回复: 奥利给~

    2021-12-18
    8
  • Layne
    希望老师讲解一些微服务部署相关方面的知识内容,如容器类似的知识,怎么与微服务结合使用。

    作者回复: 我考虑后面用加餐的方式,添加一部分容器的知识介绍。课程里在日志系统搭建这里也会简单介绍一下docker的使用

    2021-12-17
    2
    8
  • 卡特
    非侵入的Skywalking可以替换Zipkin吗?SDK侵入比较严重

    作者回复: 可以,不光skywalking,像jaegertracing之类的都可以用(jaeger也是受zipkin启发搞出来的)。zipkin本身不用集成SDK到项目代码里,只要通过sleuth-zipkin插件就可以间接集成,我在项目中会通过RabbitMQ接收链路信息,服务将链路信息发送给RMQ,zipkin通过监听RMQ来获取数据。只用添加三两行配置就能实现

    2021-12-18
    7
  • 威威威小哥
    老师能在项目中顺带讲下接口幂等解决方案吗

    作者回复: 这部分我倒是没有涉及,很多公司是提供了一种平台化的服务来做幂等性检查,接口参数里带有的幂等ID字段,方法先用这个ID调用幂等校验服务做一层检查。我这里所说的平台化服务,就是公司层面开发的供给各个业务方使用的基础服务,比如像ID生成器这类服务。

    2021-12-20
    6
  • 破发者
    老师,如果一笔业务交易是调用了多个服务之后才完成,每个服务都能单独部署,是不是这样就可以称之为使用了微服务?

    作者回复: bingo,大体上就是这样。不过更深层次还要考虑以什么角度做服务切分,比如领域建模等等。像大厂里会供着一些领域建模的专家,比如订单域交易域这些核心领域的架构,还是挺吃经验的。 独立拆分部署是微服务表现形式,是表象,不过为了支持这种表象,我们还有很多infra层面的技术支持,这就是后面我们要介绍的各个组件了

    2021-12-18
    6
  • 胡杨
    能不能再加一个基础服务,就是ID生成器服务

    作者回复: ID生成器是个很复杂的平台类服务,高并发的ID分发要求分段批量获取+预加载模式,每个发号器预先领取一个号段,在即将消耗完之前从中心节点继续领号。而且对于订单类场景,还要设置特殊的号段分发规则,否则竞争对手可以根据ID来大致估算出你一天的订单量。对于某些金融行业要求的“非跳号”的ID分发就更加麻烦一些。 我们这个练手项目还不需要深入到发号器的业务逻辑,用DB incremental ID简单解决了

    2021-12-17
    6
  • 来来
    老师有没有spring cloud优雅下线的方面的讲解

    作者回复: 这部分没有单独展开讲,优雅退出方案就是尽可能减少nacos instance下线和后台服务下线之间的时间差。这里要结合你的部署方案来看。现在大多公司都会选择k8s容器编排,新建POD然后等完全启动好之后关停老的POD,那么你可以在老的pod关闭之前设置一个hook,主动调用nacos服务的Delete方法做下线/nacos/v1/ns/instance,然后在执行关停POD的操作。

    2021-12-17
    3
    5
收起评论
显示
设置
留言
35
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部