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

开篇词 | 跟着学,你也能成为微服务高手

讲述:姚秋辰大小:13.30M时长:14:34
你好,我是姚秋辰,网名姚半仙,欢迎和我一起进入《Spring Cloud 微服务项目实战》。
我硕士毕业于复旦大学,一直从事互联网电商和支付场景的系统架构与开发,曾先后任职于 SAP、阿里巴巴、eBay 和 PayPal。在这十余年里,我从一名 Java 程序员,逐渐成长为架构师和研发经理,这期间我一直在与微服务打交道,与 Spring Cloud 更是结下了不解之缘。
我曾经参与过一线互联网公司新零售业务从 0 到 1 的落地,并作为核心成员,负责商品中心和营销平台的微服务化建设。除此之外,在电商平台、互联网支付和互金领域,我也积累了不少大型微服务系统设计经验,负责了多个业务系统的微服务化改造、主链路高可用设计等项目。
我从早期版本开始,就一直在使用 Spring Cloud。期间,经历了 Spring Cloud 几个重要版本的迭代,也见证了曾经的王者 Spring Cloud Netflix 组件库的陨落,和后起之秀 Spring Cloud Alibaba 组件的强势崛起。在这个过程中,我也出品过几部 Spring Cloud 的体系课程,并在 2021 年出版了《微服务从小白到专家:Spring Cloud 与 Kubernetes 实战》一书。这些经历让我对微服务技术的发展和落地,有了更深刻的理解和体悟。
在我看来,经过多年的发布和迭代,Spring Cloud 在微服务架构领域已然奠定了自己江湖一哥的地位。它丰富的组件库就像哆啦 A 梦的口袋一样,你在微服务架构领域碰到的任何问题,都可以从 Spring Cloud 中找到对应的解决方案。
如今使用 Java 技术栈的各个大厂(比如阿里、美团点评、拼多多等),都在全面拥抱微服务。因此,微服务技术也已经成为一个 Java 工程师晋升到高阶技术专家所必须掌握的知识。

学习微服务技术面临哪些问题?

也许你早就打算学习微服务技术,可是自己的公司业务规模小,接触不到先进的微服务架构技术;又或者面对五花八门的微服务开源框架,和各个大厂自研的黑科技技术,一时间不知道如何下手。
我非常理解这种心情,在我刚开始从单体应用过渡到微服务框架的时候,也面临了同样的问题。体系庞大的微服务技术栈就像伫立在渺小的我面前的一座大山,站在山脚下的你是否和我一样在心里泛着这些嘀咕呢?
乱花渐欲迷人眼:微服务技术选型太多了,我该选择什么技术和组件来学习呢?网上很多文章都在介绍微服务框架,但大多不是业界的最佳实践,而且知识非常零散,学完了并不能对自己的实战能力和认知带来太多提升。
纸上得来终觉浅:微服务充斥着各种晦涩的理论,很多教学文章都只是 Hello World 式的随堂小 Demo,缺乏项目练手导致学完并不能学以致用,我该如何将理论应用到接地气的项目实战里呢?
路漫漫其修远兮:微服务体系庞大,框架组件就更多了,如果没有章法地去学习,无异于攀登一座很陡峭的山峰,学习效率低下不说,可能还会让你知难而退。我该从何下手,沿着什么途径学习才最有效率呢?
那怎么才能快速掌握好微服务技术呢?作为一个有十多年工作经验的老兵,我认为,与其一个猛子扎进去乱学一通,不如遵循一条由浅入深的学习路径。我们直接来看这张图就好了,简单来说,就是“三大功能,两大特性”。
微服务“三大功能,两大特性”
三大功能是指微服务核心组件的功能维度,由浅入深层次递进;而两大特性是构建在每个服务组件之上的高可用性和高可扩展性。
别看微服务框架组件多,其实你完全可以按照这三大功能模块,给它们有简入难对号入座,就像图中展示的那样:
服务间通信,包括服务治理、负载均衡、服务间调用;
服务容错和异常排查,包括流量整形、降级熔断、调用链追踪;
分布式能力建设,包括微服务网关、分布式事务、消息驱动、分布式配置中心。
从微服务组件的功能维度来讲,服务间通信是最基础的功能特性,这个功能模块是最适合作为初学者学习微服务技术的切入点。当我们构建起基础的通信能力之后,接下来就要考虑如何构建服务容错能力,提高服务调用的稳定性了。在这之后,我们就可以从全局的角度构建一些分布式支持特性。这样,你就有了一条难度平缓上升的学习曲线,再也不会从入门到放弃了。
除了功能特性以外,在学习每个微服务组件的时候,我们还会从高可用性和可扩展性两个维度来做扩展。
高可用性是系统设计的第一要素,它就像人的健康一样。健康好比数字 1,能赚多少钱都是后面的 0 来决定,甭管你多能赚钱,没有了健康一切归零。系统设计也一样,你的系统功能再厉害,都要构建在可用性之上才能发挥作用。所以,我们还需要了解各个微服务组件是如何保证高可用性的。
说到可扩展性,这就要考验你对框架原理的理解了。授人以鱼不如授人以渔,学会用一个组件顶多算是吃到了鱼,而学会“魔改”组件才算是会钓鱼。所以,了解组件的底层原理,学会如何基于开源项目的扩展点实现一些定制功能,才能真正用好微服务技术。
总之,抓住微服务的“三大功能,两大特性”,可以让你从庞杂的知识点中抽身出来,把握其中的关键。这样,我们的学习才是高效的。

这个专栏是如何设计的?

我们这个专栏会围绕 Spring Cloud 框架展开。我刚才提到过,Spring Cloud 在微服务领域中具有不可撼动的地位,它自孵化后就保持着极其旺盛的生命力和快节奏的更新迭代速度。Spring Cloud 内置了丰富的组件库,可谓是“十八般兵器”在手,像服务发现、流量整形、服务容错、分布式事务等等,你都可以在 Spring Cloud 组件库中找到对应的解决方案。
此外,它里面还囊括了一线大厂针对微服务各类问题的解决方案,比如注册中心加分布式配置中心二合一的 Nacos、在超高并发量下的高可用性神器 Sentinel、分布式事务一站式解决方案 Seata 等,大厂的最佳实践尽在其中。
当然,学好一门技术的最好方式就是动手实践。在这个专栏里,我会围绕一个可部署、可运行的“优惠券平台”实战项目,带你从 0 到 1 实践微服务改造的全过程,帮你快速掌握 Spring Cloud 微服务技术。同时,我会兼顾底层原理和源码部分的讲解,让你知其然而又知其所以然,学了就可以应用在实际项目中。
除此之外,专栏中的每个部分我都会尽可能朝着“最佳实践”的方向去设计。例如,我会使用目前业界主流的最新版 Spring Cloud 组件,抛弃 Spring Cloud Netflix 组件库的过时组件。更重要的是,我会把自己在一线开发和架构领域积累的经验、学习技术的建议等融合到专栏中,不光可以让你开拓视野,还可以在未来的工作中学以致用。
为了让你通过一条最为平坦的路径学习 Spring Cloud 技术,我把整个专栏划分为了 5 个模块:
第一个模块:课前必学
我将用四节课为你铺垫微服务和 Spring Cloud 的前置知识,帮助你平稳过渡到后面的项目实战阶段。具体来讲,我会介绍微服务架构在构建大型分布式应用中的优势,以及我们这个专栏的主角“Spring Cloud”框架的发展背景以及核心组件库。我还会带你深入了解实战项目的功能模块和背后的技术选型依据,并手把手带你安装实战环节所需要用到开发工具和中间件。
第二个模块:Spring Boot 急速落地篇
为了帮助你顺利过渡到 Spring Cloud 课程,我会手把手先带你搭建起这个 Spring Boot 实战项目,即便你是 Java 的初学者也不必担心门槛问题。在这个过程中,我会重点针对 Spring Boot 的数据库操作和 RESTFul API 开发做详细介绍。
第三个模块:Spring Cloud 基础篇
接着,我会详细介绍 Spring Cloud 如何实现服务治理、负载均衡和服务间调用,带你构建起跨服务之间的通信:
服务治理:掌握如何基于 Nacos 搭建注册中心集群,并实现微服务的服务注册、服务发现、服务下线、环境隔离等,深入了解 Nacos 自动装配机制是如何工作的;
负载均衡:学会如何使用 Loadbalancer 实现负载均衡,并通过自定义负载均衡策略实现金丝雀测试;
服务间调用:掌握如何使用 openfeign 组件在不同微服务间发起服务调用。
第四个模块:Spring Cloud 进阶篇
我会介绍微服务如何实现异常处理、调用链路追踪和远程配置管理,构建分布式环境下的配置管理和容错机制:
服务容错:了解微服务常见的服务容错手段,使用 Spring Cloud Sentinel 实现服务降级熔断和流量整形;
链路追踪:了解链路追踪的使用场景和实现原理,使用 Sleuth 完成链路打标,并集成 Zipkin 和 ELK 实现链路追踪和日志查询;
分布式配置中心:了解配置中心的使用场景,使用 Nacos 实现配置项管理、动态刷新参数和环境隔离。
第五个模块:Spring Cloud 高级篇
在最后这个模块,我会带你深入了解微服务网关、消息事件驱动和分布式事务的使用场景和原理,将微服务集群接入网关组件和消息组件,并实现分布式数据一致性方案:
服务网关:了解微服务网关的用途,使用 Spring Cloud Gateway 搭建微服务网关;
事件驱动:了解事件驱动在微服务中的应用场景,使用 Stream 集成消息组件,并实现异常容错、死信队列和延迟消息等场景;
分布式事务:了解分布式事务的主流方案,使用 Spring Cloud Seata 的 AT 模式和 TCC 模式实现分布式事务,并深入了解 Seata 的底层原理。

开启这个专栏的正确姿势

最后,关于怎么学习这个专栏,我还想给你一些建议。
第一,多动手!学习技术只靠眼看口读是掌握不了真功夫的,书读百遍其义自见这句话在技术领域行不通。所以呢,这个专栏不是一部看完就忘的“爽文”,而是一部需要你亲手实操去搭建项目的实战专栏。
第二,先尝试自己解决问题!碰到问题可不能先想着去搜索引擎上找答案,或者到处求医问药,这样并不能提高自己解决问题的能力。当你碰到问题时,我建议你先从报错日志和源码开始,尝试自己解决问题。毕竟大部分问题的表象体现在 Error 日志中,而底层解法就藏在源码里。在解决问题的过程中,你既能锻炼 troubleshoot 的能力,又能理解源码的底层逻辑,你解决的问题越多,你收获的成长也会越多。
第三,不要在一个问题上死磕太久!当你在一个问题上尝试过各种解法,可又不得要领的时候,就不用钻牛角尖死磕了,毕竟这不是搞科研,我们也要提高学习效率和学习体验。你不妨在课程的评论区和我、还有其他小伙伴一起来探讨碰到的难题,有时候轻轻一点拨就能让你走出迷雾。但是,别忘了在这之后做复盘,思考一下自己排查问题的方向还可以做哪些优化。大牛都是在一次次跌倒和一次次总结中成长起来的。
好啦,从现在开始,跟我一起开启这趟充满挑战的 Spring Cloud 项目实战之旅吧!If not now, when? If not you, who?此时此刻,非你莫属!
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文是关于学习微服务技术的实战经验和学习路径的指南。作者姚秋辰分享了自己对Spring Cloud技术的深刻理解,并提出了一条由浅入深的学习路径,即“三大功能,两大特性”。文章围绕Spring Cloud框架展开,介绍了其在微服务领域中的重要性和丰富的组件库。作者还承诺通过一个实战项目带领读者从0到1实践微服务改造的全过程,并将专栏划分为5个模块,涵盖了Spring Boot、Spring Cloud基础、进阶和高级内容。此外,作者还给出了学习建议,强调了动手实操和自己解决问题的重要性。整篇文章以作者丰富的实战经验为基础,结合了对微服务技术的深刻理解,为读者提供了一条清晰的学习路径和方法。

2021-12-1395人觉得很赞给文章提建议

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

全部留言(37)

  • 最新
  • 精选
  • 灰太狼
    每天 coding 一小时,健康工作50年! 我是从别的地方来的,依然还是半仙老师的小迷弟!

    作者回复: 同学一看就是老铁了,我现在口号改版了叫“每天coding一小时,整整少活50年”。coding啥啊?赶紧趁着年轻少写代码多泡妞,不然老了肯定就后悔。我就后悔年轻的时候太专注技术,现在结婚了没法泡妞,哎

    2022-01-08
    4
    29
  • Nico
    SpringCloud和Dubbo怎么选?现在在用SpringCloud,马上准备做领域服务,想着领域服务是不是用Dubbo更合适,SpringCloud在业务服务/API服务落地

    作者回复: Dubbo只是完成了服务治理和服务间调用的部分,这只是微服务中的一个领域,但是整个微服务体系是很庞大的话题,远不止dubbo所提供的功能。比如你还需要降级熔断、配置中心、分布式事务、鉴权等很多功能组件来支持一个庞大的微服务架构体系。 不过如果想应用dubbo,可以很方便的把spring cloud里的openfeign换成dubbo,它也可以和Nacos合作的比较愉快。

    2021-12-14
    18
  • rookie_coder
    之前学习spring cloud杂乱无章,买专栏跟老师深入学习 希望老师多多分享干货 !!

    作者回复: Join us! 应用层这些框架跟着半仙上手实操那么几下就会发现so tmd easy

    2021-12-27
    11
  • 未聞花名
    老师有关于微服务间调用保证数据一致性会讲吗

    作者回复: 我后面会讲如何通过阿里系的Seata组件实现分布式事务,从DB层面保证数据一致性。 对业务层面来说,如果要做幂等性的话,通常我们会传递一个幂等性ID。打个简单的比方,下单支付,你可以用order id作为支付域的幂等ID,避免重复支付。简单的幂等需求你用redis自己写code可以实现,有的大公司会从平台的角度提供一个单独的幂等性组件来实现这类需求。

    2021-12-14
    2
    9
  • 宁静致远
    老师,希望能讲讲网关安全性加密解密最佳实践,谢谢!

    作者回复: 网关层安全加密解密,我估计同学指的是调用源防篡改,这部分的常用做法是在网关层加一个“签名验签”。举个例子,对于用户端接入的场景,提高接入安全性的一个常用做法是,由用户制作公私钥并将公钥注册到企业的业务系统,每个来往服务请求使用这个keypair进行签名验签。比如用户端对request body签名后把signature放到header里,服务端网关接到这个请求之后对signature进行验签,证明这段签名和request body是一致的,这样就能保证请求未被篡改。同理,服务端返回给用户的response也需要生成一段签名,由用户接收端进行验签。

    2021-12-26
    2
    6
  • CrossOrigin
    大致看了老师的整体课程安排情况,整体很棒 1 服务调用框架的选择上openfeign,dubbo,grpc,等等服务框架能否比较对比,或者选择多几个方案 2 分布式事务这块,能否新增分布式事务的事务消息解决方案, 3 同时在加一章sc的运维部署篇等,

    作者回复: 1. grpc我们公司在用,纯云原生(grpc+istio+k8s这类)上的grpc,外企里面用的比较广泛,但是这套路子在国内落地经验还比较缺乏,而且protobuf语言其实很多国内程序员会用的不习惯,定义起来贼麻烦束手束脚。而dubbo的受众市场又反过来了,国内用的多国外几乎没太多应用,所以我才选择了比较亲民的中立派openfeign,但是如果想替换成dubbo是很方便的,可以和nacos无缝集 2. transactional queue很简单,我的经验是如果能用补偿和事务消息解决的场景,尽量不要上分布式事务来增加复杂度。 3. sc的运维部署我可以考虑以后通过加餐的方式来做,结合k8s落地

    2021-12-15
    3
    5
  • 1900
    没有java基础 只有go开发经验的同学可以学习这门课吗?

    作者回复: 还是需要一定的java基础的,我建议同学先从Spring官网上了解一下spring boot框架,做几个hello world程序感受一下。

    2022-01-18
    3
  • 微扰理论
    哈哈哈 看起来是 spring cloud alibaba 的粉丝呀 支持一波~ 我也为 Nacos 贡献过代码;还是非常值得学习的中间件;在我的专栏里可能也会加餐介绍Nacos的一致性协议:distro协议。

    作者回复: 欢迎黄老师莅临指导,推荐同学们也去选一波黄老师的算法课。现在面试算法比重越来越高,黄老师大纲里的很多topic都是面试高频的问题:)

    2021-12-23
    3
  • Geek_9c1390
    老师,技术人,工作几年了后,再考个研究生值得吗,考个非全的

    作者回复: 其实是不错的,这就像在职了之后读MBA一样,现在很多学校都有双证研究生,周末上课,低成本刷学历可以考虑

    2022-07-14归属地:上海
    2
  • 54Lanedy
    看完了回来第一节课报到,老师的课让我受益匪浅,特别喜欢老师理论+实战经验的讲课方式,仿佛当年的那个你就是我

    作者回复: 感谢同学认可哈哈

    2022-03-31
    2
收起评论
大纲
固定大纲
学习微服务技术面临哪些问题?
这个专栏是如何设计的?
开启这个专栏的正确姿势
显示
设置
留言
37
收藏
60
沉浸
阅读
分享
手机端
快捷键
回顶部