2022年3月22日
微服务架构通常采用前后端分离的设计方式。作为企业级的中台,在完成单体应用拆分和微服务建设后,前端项目团队会同时面对多个中台微服务项目团队,这时候的前端人员就犹如维修电工一样了。 面对如此多的微服务暴露出来的 API 服务,如何进行正确的连接和拼装,才能保证不出错?这显然不是一件很容易的事情……
阅读全文
2022年3月22日
在 DDD 分层架构和微服务代码模型里,我们根据领域对象的属性和依赖关系,将领域对象进行分层,定义了与之对应的代码对象和代码目录结构。分层架构确定了微服务的总体架构,微服务内的主要对象有服务和实体等,它们一起协作完成业务逻辑。 那在运行过程中,这些服务和实体在微服务各层是如何协作的呢?今天……
阅读全文
2022年3月20日
前几讲我们已经介绍过了,在用 DDD 进行微服务设计时,我们可以通过事件风暴来确定领域模型边界,划定微服务边界,定义业务和系统运行边界,从而保证微服务的单一职责和随需而变的架构演进能力。 那重点落到边界的时候,总结一下就是,微服务的设计要涉及到逻辑边界、物理边界和代码边界等等。 那么这些边界……
阅读全文
2022年3月20日
一个成功的事件风暴会议——以及一个成功的软件项目——需要同等的艺术、知识和技术技能。此外,对便笺进行更改比对生产代码进行更改要便宜得多。通过编写代码来了解您的系统是理解和完善所涉及的业务流程的一种非常昂贵的方法。 本文中的任何内容都不需要技术专业知识或以前使用反应式事件驱动系统……
阅读全文
2022年3月19日
在 [第 12 讲] 中,我们了解了如何用事件风暴来构建领域模型,在构建领域模型的过程中,我们会提取出很多的领域对象,比如聚合、实体、命令和领域事件等。到了 [第 13 讲],我们又根据 DDD 分层架构模型,建立了标准的微服务代码模型,为代码对象定义好了分层和目录结构。 那要想完成微服务的设计和落地,这之……
阅读全文
2022年3月19日
上一讲我们完成了领域模型的设计,接下来我们就要开始微服务的设计和落地了。那微服务落地时首先要确定的就是微服务的代码结构,也就是我今天要讲的微服务代码模型。 只有建立了标准的微服务代码模型和代码规范后,我们才可以将领域对象所对应的代码对象放在合适的软件包的目录结构中。标准的代码模型可……
阅读全文
2022年3月19日
还记得我在 [第 01 讲] 中说过,微服务设计为什么要选择 DDD 吗?其中有一个非常重要的原因,就是采用 DDD 方法建立的领域模型,可以清晰地划分微服务的逻辑边界和物理边界。可以说,在 DDD 的实践中,好的领域模型直接关乎微服务的设计水平。因此,我认为 DDD 的战略设计是比战术设计更为重要的,也正是这个原因,我……
阅读全文
2022年3月15日
JavaScript Start-up Performance|JavaScript 启动性能瓶颈分析与解决方案 Chrome 插件 Console Importer 推荐:Easily import JS and CSS resources from Chrome console. (可以在浏览器控制台安装 loadsh、moment、jQuery 等库,在控制台直接验证、使用这些库。) 参考资料: v8 官方文档 图解 Google V8 浏览器工作原理与实践 V8、Chrome、Node.js【知乎专栏】 JavaScript 引擎 V8……
阅读全文
2022年3月15日
对象属性的顺序: 在实例化你的对象属性的时候一定要使用相同的顺序,这样隐藏类和随后的优化代码才能共享; 动态属性: 在对象实例化之后再添加属性会强制使得隐藏类变化,并且会减慢为旧隐藏类所优化的代码的执行。所以,要在对象的构造函数中完成所有属性的分配; 方法: 重复执行相同的方法会运行的比不……
阅读全文
2022年3月15日
Daniel Clifford 在 Google I/O2012 上做了一个精彩的演讲 “Breaking the JavaScript Speed Limit with V8”。在演讲中,他深入解释了 13 个简单的代码优化方法,可以让你的 JavaScript 代码在 Chrome V8 引擎编译 / 运行时更加快速。在演讲中,他介绍了怎么优化,并解释了原因。下面简明的列出了 13 个 JavaScript 性能提升技巧: 在构造函数里初始化所有对象的成员 (所以这些……
阅读全文