Spring Boot 与 Kubernetes 云原生微服务实践
杨波
前携程 / 拍拍贷技术总监,微服务技术专家
28227 人已学习
新⼈⾸单¥98
课程目录
已完结/共 94 讲
第一章:课程介绍和案例需求 (5讲)
第十章:项⽬复盘、应用和扩展环节 (2讲)
第十一章:附录 Staffjoy 项目源代码解析 (8讲)
时长 14:53
时长 10:29
时长 10:52
时长 05:09
时长 15:06
时长 16:17
Spring Boot 与 Kubernetes 云原生微服务实践
登录|注册
留言
7
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 08 | 数据和接口模型设计:账户服务
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.75x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
01 | 课程介绍
02 | 背景说明
03 | 课程目标和主要内容
04 | 课程案例需求
05 | 课程补充说明
06 | 为何采用微服务架构?
07 | 架构设计和技术栈选型
08 | 数据和接口模型设计:账户服务
09 | 数据和接口模型设计:业务服务
10 | Dubbo、Spring Cloud和Kubernetes该如何选型(上)
11 | Dubbo、Spring Cloud和Kubernetes该如何选型(中)
12 | Dubbo、Spring Cloud和Kubernetes该如何选型(下)
13 | 技术中台到底讲什么?
14 | Staffjoy项目结构组织
15 | 谷歌为何采用单体仓库(Mono-Repo)?
16 | 微服务接口参数校验为何重要?
17 | 如何实现统一异常处理?
18 | DTO和DMO为什么要互转?
19 | 如何实现基于Feign的强类型接口?
20 | 为什么框架层就要考虑分环境配置?
21 | 异步处理为何要复制线程上下文信息?
22 | 为你的接口添加Swagger文档
23 | 主流微服务框架概览
24 | 网关和BFF是如何演化出来的(上)
25 | 网关和BFF是如何演化出来的(下)
26 | 网关和反向代理是什么关系?
27 | 网关需要分集群部署吗?
28 | 如何设计一个最简网关?
29 | Faraday网关代码解析(上)
30 | Faraday网关代码解析(下)
31 | 生产级网关需要考虑哪些环节?
32 | 主流开源网关概览
33 | 安全认证架构演进:单块阶段(上)
34 | 安全认证架构演进:单块阶段(下)
35 | 安全认证架构演进:微服务阶段
36 | 基于JWT令牌的安全认证架构
37 | JWT的原理是什么?
38 | JWT有哪两种主要流程?
39 | Staffjoy安全认证架构和SSO
40 | 用户认证代码剖析
41 | 服务调用鉴权代码剖析
42 | 如何设计用户角色鉴权?
43 | Spring Boot微服务测试该如何分类?
44 | 什么是契约驱动测试?
45 | 什么是测试金字塔?
46 | 单元测试案例分析
47 | 集成测试案例分析
48 | 组件测试案例分析
49 | Mock vs Spy
50 | 何谓生产就绪(Production Ready)?
51 | Spring Boot如何实现分环境配置
52 | Apollo vs SpringCloudConfig vs K8s ConfigMap
53 | CAT vs Zipkin vs Skywalking(上)
54 | CAT vs Zipkin vs Skywalking(下)
55 | 结构化日志和业务审计日志
56 | 集中异常监控和Sentry
57 | EFK & Prometheus & Skywalking + Kubernetes 集成架构
58 | 本地开发部署架构和软件需求
59 | 手工服务部署和测试(上)
60 | 手工服务部署和测试(中)
61 | 手工服务部署和测试(下)
62 | SkyWalking调用链监控实验
63 | Docker和Docker Compose简介
64 | 容器镜像构建Dockerfile解析
65 | Docker Compose服务部署文件剖析
66 | 将Staffjoy部署到本地Docker Compose环境(上)
67 | 将Staffjoy部署到本地Docker Compose环境(下)
68 | 到底什么是云原生架构?
69 | Kubernetes背景和架构
70 | Kubernetes有哪些基本概念(上)
71 | Kubernetes有哪些基本概念(下)
72 | 理解Kubernetes节点网络和Pod网络
73 | 深入理解Service和ServiceDiscovery
74 | NodePort vs LoadBalancer vs Ingress
75 | 本地测试Kubernetes部署文件剖析
76 | 本地测试Kubernetes环境搭建
77 | 将Staffjoy部署到本地Kubernetes环境(上)
78 | 将Staffjoy部署到本地Kubernetes环境(下)
79 | 生产环境Kubernetes部署文件剖析
80 | 阿里云Kubernetes环境创建
81 | 将Staffjoy部署到阿里云Kubernetes环境
82 | Kubernetes应用动态配置实验
83 | Kubernetes应用金丝雀发布实验
84 | 阿里云资源释放
85 | 课程复盘
86 | 项目扩展和应用
87 | Account服务
88 | Company服务
89 | Mail、SMS和Bot服务
90 | Faraday服务
91 | WhoAmI服务
92 | WWW服务
93 | 前端应用
94 | 结课测试&结束语
登录 后留言

全部留言(7)

  • 最新
  • 精选
ella
对于老的项目转到微服务,数据库的拆分很难,有什么best practice可以遵循,可以不拆分数据库么?如果拆分开,原来的事务操作应该怎么处理呢

作者回复: 数据库能不拆尽量不要拆,除非万不得已。拆开以后就会面临分布式事务的问题。 但是业务和团队发展到一定阶段,解耦拆分在所难免。数据库拆分是个很大的主题,也是一个体力活,没有一招鲜的办法,就是一个制定拆分计划,按部就班不断执行拆分的过程。一般的思路是先做好服务化(所有应用都不能直接调用数据库,必须通过服务访问),服务化搞定,有了一层间接抽象以后,才可以考虑数据库拆分。数据库先做好读写分离:数据库端只有写入,然后变更数据同步到其它存储(其它DB/ES/HBase/...)再构建各种读视图。实现读写分离以后,DB只有一个写入端,这时候就可以考虑拆分甚至替换(从双写+比对开始)。拆分之后一定会引入不同数据源之间数据一致性和数据同步的问题,这个时候一定会需要引入可靠消息系统。 所以,根据个人经验,数据库拆分的几个关键是:1). 服务化,2)读写分离,3)可靠消息系统。 关于分布式事务,这个东西其实是具体业务相关,也没有简单一招鲜的框架。思路很多,简单常用的做法是先落地(类似WAL~Write Ahead Log)+子系统执行事务+协调器协调。推荐看ebay架构师写的关于微服务数据一致性的文章,讲得比较全面: https://dzone.com/articles/data-consistency-in-microservices-architecture

2020-01-16
6
Walking Man
波波大佬,服务之间或者网关调用服务的可靠性怎么考虑呢,数据一致性用一些xa方案好吗

作者回复: 服务之间调用(或者网关调后台服务)要做好限流容错,可以采用组件hystrix/resillience4j或者阿里开源的限流容错平台sentinel。 数据一致性,如果短事务要求强一致性,可以考虑阿里开源seata,它是一种2pc的变体实现。也可以考虑基于可靠消息的最终一致性。长事务一般考虑saga模式(类似一种基于可靠消息的协调机制)。

2020-03-26
2
grey927
杨老师,你好,staffjoy里面,会有一种场景是生成分布式唯一id的需求么?生成分布式唯一id有没有一些推荐的解决方案

作者回复: 你好,staffjoy里头持久层model的主键id都是用的system-uuid,这个应该是jpa/hibernate生成的uuid,类似java的UUID.randomUUID。 我的理解一般java的UUID.randomUUID就足够了(碰撞只是理论上,实际真碰撞了数据库会报错,也没有大问题),而且这个是无状态的,根据wikipedia的说法: Only after generating 1 billion UUIDs every second for the next 100 years, the probability of creating just one duplicate would be about 50%. Or, to put it another way, the probability of one duplicate would be about 50% if every person on earth owned 600 million UUIDs. 参考: https://stackoverflow.com/questions/24876188/how-big-is-the-chance-to-get-a-java-uuid-randomuuid-collision https://stackoverflow.com/questions/2513573/how-good-is-javas-uuid-randomuuid 当然如果你还是不放心,可以研究考虑分布式unique id生成系统,可以参考twitter snowflake: https://github.com/twitter-archive/snowflake/tree/snowflake-2010 https://github.com/sony/sonyflake

2019-10-21
2
黑夜骑士
波波老师,一直追随你的脚步,想问下这门课程会讲解Windows环境下如何部署doker kubernetes容器云部署么,我用的是windows系统

作者回复: 我演示用的是mac系统,不过会介绍windows环境下搭建docker/k8s的一些注意点。课程会采用docker desktop演示,它内置支持k8s,windows安装docker desktop的话,要求win10/64位环境(参考:https://docs.docker.com/docker-for-windows/install/)。如果不是win10的话,要装minikube,或者用vagrant镜像之类会比较麻烦。

2019-07-10
2
A
对于一个系统中存在微信用户、系统用户、会员用户该如何处理

作者回复: 这个每家企业做法不同,没有统一标准做法,有些整合在一个表中,通过字段区分,也有的放在不同表中,通过前面的微服务提供统一接口,屏蔽存储细节。

2020-04-18
1
lester
波波老师,您好,从业务或安全的角度来看,哪些场景适合使用POST,哪些适合GET,哪些使用PUT,这个有统一的标准么?

作者回复: 我认为这些HTTP方法和安全没有直接关系。 作为RESTful API,POST/GET/PUT有一些惯例语义,POST常表示创建新业务记录, PUT表示更新业务记录,GET则是获取业务记录。但这个只是一种惯例,不是统一标准。

2019-12-07
春哥
希望能学会kubernetes
2020-03-25
收起评论