
Spring Cloud Alibaba 微服务开发实战
用 24 篇内容让你掌握微服务设计
优惠券已抵扣
余额抵扣
还需支付
¥39.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
MavenTalk
这个作者很懒,什么都没留下…
展开
-
开篇导读
你好,我是码闻强。拥有 12 年软件开发管理经验,创业前服务于杭州知时信息科技有限公司,任高级系统架构师,带领团队研发出一套适合汽车流通行业的 SaaS 产品——指是金融及周边配套产品,为业内数十家机构提供线上支撑服务。你是不是有这样的困惑?知道微服务开发热门,但一直是外行看热闹,不知道里面具体有哪些内容。了解过 Spring Cloud 微服务开发理论,苦于没实战经验。知道单个技术点的...原创 2020-09-22 11:50:48 · 343 阅读 · 0 评论 -
以真实“商场停车”业务切入——需求分析
不管是传统开发模式还是时下推崇的敏捷开发模式,都要从源头——业务需求开始着手,缺少了需求获取分析环节或本环节做的不够好,由此造成的错误会随着软件迭代的步伐,逐步被放大,近而造成巨大的损失。有时金钱成本尚可接受,但由此造成的时间成本、机会成本则是无法估量的。为什么选取"商场停车业务"作为需求原型呢,有两个考量:一是场景熟知度比较高,业务理解上不存在很大障碍;二是能将我们所要表达的微服务特性融入进去...原创 2020-09-22 11:50:46 · 1451 阅读 · 0 评论 -
具象业务需求再抽象分解——系统设计
经过前篇需求梳理,商场停车收费业务需求情况已经十分明了,本节就依据前文的输出做为输入,开始系统设计工作,包括功能模块设计、存储设计、架构设计等,为后面的编码提供良好的基础保障。 有同学可能会有疑问,都使用敏捷了,怎么还要设计,直接上手编码不就行了?敏捷提倡响应变化,减少文档,很多朋友有误解,以为敏捷就是不需要设计,不需要文档,就是要快,凡是阻碍实施交付的都要省掉。其实,敏捷并不是消灭文档,消...原创 2020-09-22 11:50:45 · 1193 阅读 · 0 评论 -
第一个 Spring Boot 子服务——会员服务
经过上两个章节的分析、设计工作,相信你已经对项目的整体结构有了更清晰的认识,剩下的工作就是依据设计,将项目骨架拉出来,往里面直充血肉。搭建项目骨架约定项目名称为 parking-project ,建立 Maven 项目,packaging 方式 为 pom,用于管理所有模块。在 parking-project 项目下依据功能模块依次建立 maven module 子项目。IDE 工具采用 Ec...原创 2020-09-22 11:50:43 · 390 阅读 · 0 评论 -
如何维护接口文档供外部调用——在线接口文档管理
上个章节初步将一个应用运行起来,由于服务不会单独存在,服务开发团队必然与其他服务团队进行服务调用,暴露出对外接口势在必行。早期做开发的时候,大家习惯于以 word 或 excel 的形式,但弊端显而易见,一旦接口发生变动,文档需要同步更新,遗憾的是很多接口已经更新,但文档都没有跟上,相信你也有过痛苦的经历。本文带领你认识几款接口文档管理工具,并实现本案例实践中用到的在线接口文档管理。几款 API...原创 2020-09-22 11:50:42 · 1236 阅读 · 0 评论 -
认识 Spring Cloud 与 Spring Cloud Alibaba 项目
前面我们已经粗略的将项目的骨架搭建完成,并初步引入一些基础支撑功能,为后续的开发打好基础。本篇将介绍 Spring Cloud 及 Spring Cloud Alibaba 两个项目,从理论角度作个整体性掌握,后续进入开发实战作好铺垫工作。Spring Cloud Alibaba 是 Spring Cloud 的一个子项目,在介绍 Spring Cloud Alibaba 之前,先简单聊一聊 S...原创 2020-09-22 11:50:41 · 537 阅读 · 0 评论 -
服务多不易管理如何破——服务注册与发现
经过上一篇系统性的介绍 Spring Cloud 及 Spring Cloud Alibaba 项目,相信你已经对这两个项目有个整体直观的感受,本篇开始正式进入本课程的第二部分,一起进入业务的开发阶段。服务调用问题在分析业务需求时,其中有个简单的功能点:会员可以开通月卡,开通月卡的同时,需要增加相应的积分。开通月卡功能在会员服务模块维护,但增加积分功能在积分服务模块维护,这就涉及到两个模块间的...原创 2020-09-22 11:50:39 · 337 阅读 · 0 评论 -
如何调用本业务模块外的服务——服务调用
上篇已经引入 Nacos 基础组件,完成了服务注册与发现机制,可以将所有服务统一的管理配置起来,方便服务间调用。本篇将结合需求点,进行服务间调用,完成功能开发。几种服务调用方式服务间调用常见的两种方式:RPC 与 HTTP,RPC 全称 Remote Produce Call 远程过程调用,速度快,效率高,早期的 WebService 接口,现在热门的 Dubbo、gRPC 、Thrift、M...原创 2020-09-22 11:50:38 · 482 阅读 · 0 评论 -
服务响应慢或服务不可用怎么办——快速失败与服务降级
上个章节已经基于 OpenFeign 完成了微服务间的调用,并且在多实例集群的情况下,通过调整负载策略很好应对并发调用。网络产品开发时,网络有时可能是不可用的,服务亦有可能是不可用的,当调用服务响应慢或不可用时,大量的请求积压,会成为压倒系统骆驼的最后一根稻草。这种情况下,我们如何应对呢?本章节就带你走近 Hystrix 组件。什么是 Hystrix它是分布式系统提供的一个低时延容错机制的基础...原创 2020-09-22 11:50:36 · 826 阅读 · 0 评论 -
热更新一样更新服务的参数配置——分布式配置中心
几乎每个项目中都涉及到配置参数或配置文件,如何避免硬编码,通过代码外的配置,来提高可变参数的安全性、时效性,弹性化配置显得尤其重要。本篇就带你一起聊聊软件项目的配置问题,特别是微服务架构风格下的配置问题。参数配置的演变早期软件开发时,当然也包括现在某些小伙伴开发时,存在硬编码的情况,将一些可变参数写死在代码中。弊端也显而易见,当参数变更时,必须重新构建编译代码,维护成本相当高。后来,业界形成...原创 2020-09-22 11:50:34 · 577 阅读 · 0 评论 -
如何高效读取计费规则等热数据——分布式缓存
前几章节主要聚集于会员与积分模块的业务功能,引领大家尝试了服务维护、配置中心、断路器、服务调用等常见的功能点,本章节开始进入核心业务模块——停车计费,有两块数据曝光率特别高:进场前的可用车位数和计费规则,几乎每辆车都进出场都用到,这部分俗称为热数据:经常会用到。读关系库很明显不是最优解,引入缓存才是王道。分布式缓存这里仅讨论软件服务端的缓存,不涉及硬件部分。缓存作为互联网分布式开发两大杀器之一...原创 2020-09-22 11:50:33 · 349 阅读 · 0 评论 -
多实例下的定时任务如何避免重复执行——分布式定时任务
前面的章节,用户通过绑定手机号的注册为会员,并可以补充完个人信息,比如姓名、生日等信息,拿到用户的生日信息之后,就可以通过会员生日信息进行营销,此处就涉及到定时任务执行营销信息推送的问题。本篇就带你走入微服务下的定时任务的构建问题。定时任务选型常见的定时任务的解决方案有以下几种:右半部分基于 Java 或 Spring 框架即可支持定时任务的开发运行,左侧部分需要引入第三方框架支持。针对不...原创 2020-09-22 11:50:31 · 7598 阅读 · 0 评论 -
同一套服务如何应对不同终端的需求——服务适配
经过前几个章节的实践,会员已可以绑定手机号,更新个人信息,绑定个人车辆信息,开通月卡,签到等功能,下面从客户端查看自己的数据入手,再聊聊服务调用的问题。简单处理我们已经将用户数据进行垂直拆分,分布在不同数据库中,当客户端数据展现时,就需要分别调用不同服务的 API,由前端将数据重新组装展现在用户端。会员个人信息、车辆信息、月卡信息维护在会员库中,积分信息维护在积分库中。如果想一个页面同时展现...原创 2020-09-22 11:50:30 · 1092 阅读 · 0 评论 -
采用消息驱动方式处理扣费通知——集成消息中间件
缓存与队列,是应对互联网高并发高负载环境的常见策略,缓存极大地将数据读写,队列有效地将压力进行削峰平谷,降低系统的负载。实现队列较好的解决方案就是利用消息中间件,但消息中间件绝不止队列这一个特性,还可以应用于异步解耦、消息驱动开发等功能,本章节就带你走进微服务下的消息驱动开发。消息中间件产品消息中间件产品不可谓不多,常见的有 Apache ActiveMQ、RabbitMQ、ZeroMQ、Ka...原创 2020-09-22 11:50:29 · 229 阅读 · 0 评论 -
Spring Cloud 与 Dubbo 冲突吗——强强联合
微服务开发选型,到底是基于 Dubbo 还是 Spring Cloud,相信不少开发的小伙伴都有拿这两个项目作过作比较的经历。本章节就带你走近这两个项目,二者究竟是竞争发展还是融合共赢。项目发展简介我们还是先来看看 Dubbo 的发展历史:2012 年由阿里开源,在很短时间内,被许多互联网公司所采用。由于公司策略发生变更,2014 年 10 月项目停止维护,版本静止于 dubbo-2.4...原创 2020-09-22 11:50:27 · 587 阅读 · 0 评论 -
破解服务中共性问题的繁琐处理方式——接入 API 网关
由于服务粒度的不同以及数据包装因端而异的差异需求,我们在之前章节中引入了 BFF 层,调用端可以直接调用 BFF 层,由 BFF 层再将请求分发至不同微服务,进行数据组装。由于很多子服务都需要用户验证、权限验证、流量控制等,真的要在每个子服务中重复编写用户验证的逻辑吗?本章节就带你走近网关,在网关层统一处理这些共性需求。为什么引入网关如果没有网关的情况下,服务调用面临的几个直接问题:每个服...原创 2020-09-22 11:50:26 · 337 阅读 · 0 评论 -
服务压力大系统响应慢如何破——网关流量控制
由于服务粒度的不同以及数据包装因端而异的差异需求,我们在之前章节中引入了 BFF 层,调用端可以直接调用 BFF 层,由 BFF 层再将请求分发至不同微服务,进行数据组装。由于很多子服务都需要用户验证、权限验证、流量控制等,真的要在每个子服务中重复编写用户验证的逻辑吗?本章节就带你走近网关,在网关层统一处理这些共性需求。为什么要引入网关如果没有网关的情况下,服务调用面临的几个直接问题:每个...原创 2020-09-22 11:50:25 · 690 阅读 · 0 评论 -
集成网关后怎么做权限隔离——统一鉴权
商场停车场景中,除了极少数功能不需要用户登陆外(如可用车位数),其余都是需要用户在会话状态下才能正常使用的功能。上个章节中提到,要在网关层实现统一的认证操作,本篇就直接带你在网关层增加一个公共鉴权功能,来实现简单的认证,采用轻量级解决方案 JWT 的方式来完成。为什么选 JWTJSON Web Token(缩写 JWT)是比较流行的轻量级跨域认证解决方案,Tomcat 的 Session 方...原创 2020-09-22 11:50:23 · 1461 阅读 · 0 评论 -
多模块下的接口 API 如何统一管理——聚合 API
在《第一个 Spring Boot 子服务——会员服务》章节中已经实现了集成 Swagger2,通过 UI 进行接口的展现、测试功能,当单体项目或者对外只提供一个 API 接口文档时,采用 Swagger 的方式访问 API 还算简单,但当微服务项目增多,外部端接入 API 时,就要面对众多的 Swagger 界面——服务端口、接口路径各异,调用难度增大不少,这时迫切需要做一个整合,将所有 API...原创 2020-09-22 11:50:22 · 1857 阅读 · 0 评论 -
数据分库后如何确保数据完整性——分布式事务
如果你已经在学习本课程的过程中,将前面所有业务代码填充完整后,会发现某些涉及多服务调用过程中多个数据库写入操作,是存在漏洞的。通过 @Transactional 注解进行事务控制,服务内尚未保证数据的完整性,跨服务后数据的完整性无法得到保护。这里就涉及到分布式事务的问题,本篇我们一起使用 Seata 组件来进行来确保跨服务场景下的数据完整性问题。问题场景先拿一个关键场景来铺垫下主题。车辆交费...原创 2020-09-22 11:50:20 · 724 阅读 · 0 评论 -
优惠券如何避免超兑——引入分布式锁
会员办理月卡或签到累积的积分,可以在指定时间段内兑换商场优惠券,由于数量有限,时间有限,兑换操作相当集中,如果按正常流程处理的话,肯定会出现超兑的情况。比如只有 5000 张券,结果兑换出 8000 张,这对商场来说是一笔经济损失。为防止超兑,自然做法是按总量一个接一个兑换,至到兑换完,但多并发的情况下如何保证还一个一个兑换呢?自然而然就会想到锁上面来。提及锁,你脑海是不是出现了一堆关于锁的场景...原创 2020-09-22 11:50:19 · 1232 阅读 · 0 评论 -
如何查看各服务的健康状况——系统应用监控
各个微服务模块基本已经就位,但系统运行的情况是怎么样,有没有办法查看的到呢?本篇就带你一起看看如何查看系统运行时的一些信息。Actuator 插件细心的小伙伴发现了,每个微服务的 pom 文件配置中都有如下的 jar 引用,这是 Spring Boot 提供的一系列额外特性组件以帮助你监控管理运行中的系统应用。<dependency> <groupI...原创 2020-09-22 11:50:17 · 984 阅读 · 0 评论 -
如何确定一次完整的请求过程——服务链路跟踪
微服务体系下,一个请求会调用多个服务,整个请求就会形成一个调用链,普通的日志输出是无法将整个体系串联起来,调用过程中某一个节点出现异常,定位排查难度系数增高,这种情况下就需要一个组件,来分析系统性能、展现调用链路,以便出现故障时快速定位并解决问题,由此 APM 工具闪亮登场。APM 是什么全称是 Application Performance Management,关注于系统内部执行、系统间调...原创 2020-09-22 11:50:15 · 852 阅读 · 0 评论 -
结语
读到这里,相信你已经将本课程全部学完,对 Spring Cloud、Spring Cloud Alibaba 两个开源项目整体上有一个更加直观的认知,经过本次实际操作,是不是也没有想像中的那么难,一旦你将整个开发全貌有体系的接触之后,微服务思想也可以渗透到日常的开发工作中去。本篇,就带你做个简单复盘,回顾下整个课程体系。前景回顾本次实战选用的是常见的商场停车场景,旨在通过简单的场景融入微服务开...原创 2020-09-22 11:50:14 · 271 阅读 · 0 评论