专栏名称: 高可用架构
高可用架构公众号。
目录
相关文章推荐
字节跳动技术团队  ·  字节跳动技术副总裁洪定坤:TRAE 想做 ... ·  11 小时前  
java1234  ·  跟阿里P9学 画架构图,永久免费了 ·  17 小时前  
java1234  ·  跟阿里P9学 画架构图,永久免费了 ·  17 小时前  
字节跳动技术团队  ·  豆包大模型升级1.6版,视频模型上新 ·  昨天  
高可用架构  ·  4 年融资 1 ... ·  昨天  
51好读  ›  专栏  ›  高可用架构

模块化还是微服务 - 为什么说大部分团队微服务化都走入了陷阱

高可用架构  · 公众号  · 架构  · 2017-03-30 11:24

正文

请到「今天看啥」查看全文



Java 中,有几个可以帮助应用模块 化的 系统。 OSGi 是最知名的, 随着 Java 9 的发布,本地模块系统被添加到 Java 平台本身。模块现在是 Java 语言 平台的一部分 ,作为一级结构,Java 模块可以表达对其他模块的依赖关系,并在强制封装实现类的同时公开导出接口。甚至 Java 平台本身(一个巨大的代码库)已经使用新的 Java 模块系统进行了模块化。在即将出版的 Java 9 Modularity 一书 中,您可以 了解 使用 Java 9 来实现 模块化开发的更多信息。


其他语言提供类似的机制。例如,JavaScript 获得了 ES2015 的模块系统。在此之前,Node.js 已经提供了一个用于 JavaScript 后端的非标准模块系统。然而,作为一种动态语言,JavaScript 对于实现模块之间的接口(类型)和封装有较弱的支持。您可以考虑在 JavaScript之上使用 TypeScript 来再次获得这一优势。


Microsoft .Net 框架确实具有像 Java 这样的强类型,但是它 没有类似 Java 即将 到来 的模块系统, 没有程序集之间的显式依赖。尽管如此,通过使用 .Net Core 中标准化的 Inversion-of-Control 模式和通过创建逻辑相关的程序集,可以实现良好的模块化架构。即使 C++ 也正在考虑在将来的版本中添加模块系统。


综上所述,许多语言正对模块化表示 重视 ,这本身就是一个惊人的发展。


当你使用开发平台的模块化功能时,就可以实现微服务相同的模块化优势。基本上,模块系统越好,在开发过程中获得的帮助越多。不同的团队可以在不同的部分工作,只要明确定义团队之间交互的接口。


在部署时,所有模块组合在一个单独的单元中部署,这样可以防止微服务开发和管理带来的巨大复杂性和成本。当然,这也意味着您不能在不同的技术栈上构建每个模块。但是贵公司真的打算好使用异构技术栈来搭建同一个系统吗?


设计模块 的哲学


设计 模块需要与 设计 微服务一样保证设计 严谨性。







请到「今天看啥」查看全文