https://github.com/alibaba/canal/issues/3328
复杂与简单
当我们遇到一个复杂的问题时, 会尝试拆分成若干个子问题.
这些子问题会随着时间增长,而难以管理.
你有解决过类似这样的问题吗? 如何系统性的解决复杂问题?
如果你答不上来的话,那么我引导下你.
问题1. 你先说说什么是复杂?
问题2. 那什么是简单?
问题3(实战经验). 你遇到过复杂的问题吗,描述一下,不需要详细说业务,用A和B来代替即可?
复杂点在哪里,它因什么而变得复杂?
它的复杂度达到了多大的规模, 请量化说明?
你是如何解决? 为什么要这样做?
二面的问题铺垫.
微服务
场景1(独立开发): 员工A改某处地方, B不知道, 导致B出现了故障,但是A并不知道会影响到B.
场景2(减少耦合): 员工A改某处地方, B说我也需要要改. 于是A一直等待着B改完. 导致A延迟交付.
场景3(独立部署): 员工A需要发布新版本, 员工B说,我这里还不能发布,导致A延迟发布.
场景4(故障隔离): 员工A的程序突然故障了, 员工B的程序收到了牵连.导致员工B也扣绩效.
场景5(混合技术栈): 程序A技术栈是java, 来了个新需求, 市面上都是C++在做这个需求, 招不到java.
领域驱动(DDD)
映射领域
降低复杂性
可测试性
可维护性
知识丰富的设计
业务和服务结合
上下文集中
通用语言
什么是有界上下文?
是领域驱动设计的核心模式,DDD战略设计部门的重点是处理大型模型和团队.
DDD通过将大型模型划分为不同的有界上下文并明确其相互关系来处理大型模型.
架构师在微服务架构中的角色是什么?
架构师扮演以下角色
1. 决定整个软件系统的布局
2. 有助于确定组件的分区.因为,他们确保组件相互粘合,但不紧密耦合.
3. 与开发人员一起编写代码,了解日常面临的挑战.
4. 为开发微服务的团队提供某些工具和技术的建议.
5. 提供技术治理,以便技术开发团队遵循为服务原则.
springcloud或微服务框架解决了哪些问题?
分布式系统的复杂性. 包括网络问题,延迟开销,带宽问题,安全问题.
处理服务发现的能力.
解决了冗余问题.
负载均衡
减少性能问题. 减少各种操作开销导致的性能问题.