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 云原生微服务实践
登录|注册
留言
18
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 18 | DTO和DMO为什么要互转?
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 | 结课测试&结束语
登录 后留言

全部留言(18)

  • 最新
  • 精选
数据对象传输,哈哈,想起我们团队中有各种O DTO DAO CO VO PO EO 而且我们喜欢自己转换,清晰明了灵活,只是代码会多出许多,我觉得可以尝试一下modleMapper。

作者回复: 尽量不要搞很多XXO,一般DTO(数据传输对象)+Entity(数据存储实体)就够了,XXO不在于多,而在于保持风格一致性。

2020-03-16
4
request/response这是很标准的做法,在经典的soa中叫文档消息模式。其实定义一个通用的响应结果类加泛型也可以支持feign,序列化和反序列化也是没问题的。另外service层是直接复用控制器中的request/response对象,不需要再多定义一套dto吧?其实不建议“偷懒”通过这种反射工具做映射,有时候某层的模型字段变更了(虽然db只让加字段不让改字段),编译器和ide不直接感知可能会有风险...

作者回复: 谢谢你的反馈! 1. 经过和学员交流,Response<T>方式也可以实现基于feign的强类型客户端,后面会再开发一个项目,采用这种方式,供大家参考。 2. 直接复用DMO也可以做到,而且可以减少转换,但是有些复杂场景,将DTO/DMO分开定义,也有好处,课程中也有提到,这样两边比较清晰,可以根据需要灵活裁剪或添加字段,可以减少依赖和判断逻辑。 3. 映射工具的确也是有利有弊的,使用时要了解其弊端,并针对性防范(比如单测)。

2019-07-18
2
4
Wyatt
老师,我们用得dozer来进行拷贝的,不知道性能和modelmapper哪个更好?

作者回复: 网上有对5种mapping框架的性能比对,可以参考一下:https://www.baeldung.com/java-performance-mapping-frameworks

2019-08-15
2
3
wind
spring自带的BeanUtils也可以,没必要用第三方的吧

作者回复: BeanUtils只能做简单的一对一的字段映射和克隆,ModelMapper之类是专业的Java Mapping框架,具有很灵活的配置和智能映射能力,常见的专业Mapping框架可以参考:https://www.baeldung.com/java-performance-mapping-frameworks

2019-12-31
2
永旭
老师你好, dto 和 vo 有用法上的推荐吗 ?

作者回复: DTO数据传输对象,VO值对象,它们的用途大致类似,主要用于在进程间传递数据,不同程序员习惯称谓不同而已,没有必要太纠结,根据你的习惯选择并且保持一致性即可。

2019-07-18
2
Kian.Lee
我们目前应用服务层入参和返回值采用DTO,领域服务层一般采用实体对象、值对象或简单参数,两层之间的数据传递采用对象映射,也是采用Model Mapper ,然后通过多层基类继承和泛型分别实现通用的增删改查方法和通用业务状态管理,以及代码自动生成技术,现在做到只要数据模型定义完成,一键生成各层代码,然后根据应用服务层产生的DTO类,根据业务需求定义各个DTO的类属性(各个业务入参和返回值数据)一个模块的通用业务功能就实现了。引用阿里前端委员会的四大技术方向定义“在前端的体系中,习惯把 To B 看成是中后台,它的特质是布局、表单、可视化图表等都是高度标准化的,在这样的体系中,如何用低代码或者无代码体系来完成重塑是关键,其中包含了大量的组件、元件、模块。”我们基本实现了“低代码或者无代码体系来完成重塑”。

作者回复: 不错,已经做到自动化和精细化阶段,值得借鉴。

2019-07-17
3
2
grey927
杨老师,我们现在微服务改造想把项目中的velocity改掉(用于发短信/邮件的模板引擎,由于最新的Spring boot对Velocity支持不太好),目前可供选择的是freemarker和Thymeleaf ,您认为用这两个用哪个会相对好一点。

作者回复: freemarker和thymeleaf这些模版引擎都差不多,邮件模版的话,可能freemarker更合适一些,个人看法。

2019-08-28
2
1
Thomas Yang
波波老师有一个点比较纠结,基于rest的微服务下,服务的controller本身就是一个 service的角色了而不是传统的mvc的交互逻辑了,那是不是DTO到controller就可以了,内部子service全部用DO会更方便。

作者回复: 这些代码组织方式都是逻辑性的,形成规范保持一致就好,没必要纠结拘泥于形式。

2019-07-24
1
男朋友
org.mapstruct.Mapper这个包吗?用来映射DTO和DMO

作者回复: 对,项目用了mapstruct(https://github.com/mapstruct/mapstruct),做DTO和DMO之间的映射。

2019-07-18
1
深山小书童
波波老师,请教两个问题。1⃣️为什么dto package下既有request结尾的类,也有response结尾的类,还有dto和list结尾的类,看起来有点不那么优雅,这方面大厂有什么规范吗?2⃣️我们在使用feign的时候都是返回一个统一带泛型resonse,好像没有序列化问题,像波波老师的做法,response对象会不会无比的多。

作者回复: 1. 对,每个服务操作严格有一对Request/Response消息对应,这个是grpc/protobuf的规范做法,可以参考https://github.com/Staffjoy/v2/tree/master/protobuf。之前大厂ebay的trading api(https://developer.ebay.com/devzone/xml/docs/reference/ebay/index.html),也是采用这种接口风格。这是一种类rpc编程风格,我的staffjoy项目中的微服务虽然是RESTful的,但是沿用了这种类似谷歌grpc的编程风格,目的是实现类似rpc的强类型接口,request/response是会多一点,但是只要规范,不是大问题。 2. 具体要看你怎么实现的,能否贴一个带范型response示例和客户端feign接口示例?

2019-07-16
1
收起评论