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 云原生微服务实践
登录|注册
留言
6
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 92 | WWW服务
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 | 结课测试&结束语
登录 后留言

全部留言(6)

  • 最新
  • 精选
Geek_548191
波波老师,看了你写的关于kubernetes的几篇文章,包括pods网络,service网络,还有NodePort,LoadBalance,Ingress,有几点疑惑: 1.当k8s外部访问www.staffjoy-uat.local或者myacconapp.staffjoy-uat.local服务的时候,首先经过阿里云的LB,然后到达Faraday网关的30001端口,然后faraday-svc进行host->service-endpoint的路由映射,那么httpclient请求的时候,是如何将service-endpoint和clusterIp联系在一起的呢?kube DNS在这里起作用了吗?知道了clusterIp,最后httpclient再通过faraday-svc的80端口转发到clusterIp的某个pod的80端口,是这样吗? 2.如果company服务调用account服务,那么通过FeignClient,知道了serviceName和service-endpoint,它们和clusterIp又是怎么联系在一起的呢?这个问题其实和第一个类似。 2.阿里云的LB做负载均衡,是根据节点负载情况告诉faraday-svc应该要转发到某一个特定的节点的pods上吗?

作者回复: 你好,简单回复一下你的问题: 1. 假设请求已经到达faraday-svc,faraday-svc也是住在k8s集群的node中,每个node里头都有kube-dns和kube-proxy,kube-dns实现服务名到clusterIp的映射,kube-proxy则实现clusterIp到具体目标服务podIp的映射,也就是说faraday-svc通过本节点kube-dns找到目标服务的clusterIp,然后通过本节点kube-proxy转发到目标服务Pod上。 2. 一样,FeignClient通过节点上的kube-dns发现目标服务clusterIp,然后通过节点上的kube-proxy转发到目标服务Pod上。 3. 阿里云LB应该不清楚k8s集群内的负载和pod情况,它只是根据路由配置将流量转发到节点的NodePort上,之后由节点上的kube-proxy负责转发到pod。 建议再细看我的k8s网络三部曲文章,里头解释比较清楚,如还有疑问可以加我微信(bulldog2015,说明来自极客时间的用户)。

2019-11-28
1
黑山老妖
老师,为何聚合服务www不采用前后分离的模式?是否有什么需要顾忌的地方?

作者回复: 主要两点考虑: 1. 原版staffjoy的www就是mvc方式; 2. www站点还是一个营销站点,SEO很重要,如果www采用单页SPA,就要解决SEO的问题,增加复杂性。

2019-11-07
1
水浒山鬼
bobo老师您好: 请问,由多个开发团队开发的不同的微服务之间有依赖。比如,团队B开发的B服务,依赖于团队A开发的A服务。 1. 这种情况下,B通常应该采用什么方法调用A服务? 2. 课程中介绍的Feign强类型调用,本质上是通过HTTP访问服务吧? 3. B服务在实现时,在代码层面,能不能先通过网关,获取到A服务的访问地址,再按A服务的调用规则去调用? 谢谢老师~

作者回复: 你好,你的问题不是很清楚,我尽量回答: 1. 一般服务A会提供调用地址(具体实现要看企业内部服务发现的做法,常见nginx+域名),B通过A的服务地址去调用,如果A提供封装好的强类型客户端,那么B就可以直接用强类型客户端调用,如果A只是提供一个http/json服务,那么B可以用http client去调,然后自己解析json。 2. Feign底层是http调用。 3. A服务可以躲在网关(企业内部网关,比如nginx)后面,然后B通过网关再调用A,这种方式有不少企业采用。

2019-11-26
Dowen Liu
web-app module 里 staffjoy.css 是 staffjoy.scss 生成的,那么 main.css 是哪里生成的呢?手工写的吗?

作者回复: main.css大部分拷贝自谷歌的MDL(Material Design Lite) https://getmdl.io/

2019-10-09
和光同尘
波波老师,您好,请问您的注册激活流程图是用什么工具画的呀

作者回复: 我画图一般都是直接ppt画,win的话就用powerpoint,mac用keynote。

2019-09-09
和光同尘
波波老师,您好,想请问下SAAS多租户架构客户定制化这块的一些实现思路,例如我们有的租户表单字段是6个,另一个租户表单存在不关心其他租户的字段,他的表单字段可能是5个,有的租户校验的规则流程又不一样,我们的代码是部署在租户的私有云环境,像这类定制化需求有什么好的实现思路和资料查阅呢?您pom.xml里面的libsaas是指什么呀,有关于它的讲解吗?非常感谢

作者回复: 如果各个租户的客制化需求确实比较多,难以通用化(通用化的成本反而比客制化高),那还不如每个租户定制独立隔离部署,目前采用k8s+容器方式,自动化部署一套租户应用很快的,架构上也不难做到。当然,原则是尽量通用和重用,最终看成本、可维护性和可规模化能力。libsaas是将sass(一种css扩展语言)编译成普通css的一个库。

2019-09-09
2
收起评论