Microservices with Martin Fowler

来源https://martinfowler.com/articles/microservices.html


Summary

The article “Microservices” by Martin Fowler discusses an architectural style for software systems that has been gaining popularity due to its flexibility and scalability. Here’s a summary highlighting the key points:

  • Microservice Architectural Style: This approach involves developing a single application as a suite of small, independent services. Each service runs in its own process and communicates with other services using lightweight mechanisms, often HTTP resource APIs.

  • Characteristics: Microservices are built around business capabilities and can be independently deployed through automated deployment processes. They may be written in different programming languages and use different data storage technologies, with minimal centralized management.

  • Comparison to Monolithic Architecture: Traditional monolithic applications are built as a single unit, making changes and scaling more challenging. Microservices, in contrast, allow for more granular updates and scaling as each service can be updated and scaled independently.

  • Componentization via Services: Unlike libraries that are linked into a program, services are out-of-process components that communicate over a network. This allows for independent deployment and updates of individual services.

  • Organized Around Business Capabilities: Microservices are organized around business capabilities rather than technical layers, leading to cross-functional teams that can develop and manage their services end-to-end.

  • Products, Not Projects: The microservice approach favors a product mentality where teams own a product throughout its lifecycle, as opposed to the project model where development ends and maintenance begins after delivery.

  • Smart Endpoints and Dumb Pipes: Communication between microservices is kept simple, often using RESTful APIs or lightweight messaging, avoiding complex protocols and centralized orchestration.

  • Decentralized Governance: Microservices allow for the use of different technologies best suited for each service, as opposed to a single standardized technology platform in monolithic architectures.

  • Decentralized Data Management: Each microservice manages its own database, a concept known as Polyglot Persistence, which allows for flexibility but also introduces challenges in managing data consistency.

  • Infrastructure Automation: Automation is crucial for building, deploying, and operating microservices. Continuous Delivery practices are key to managing the complexity of multiple services.

  • Design for Failure: Microservices must be designed to handle failures gracefully, as network calls between services can fail. This requires sophisticated monitoring and possibly the use of patterns like circuit breakers.

  • Evolutionary Design: The microservice architecture supports evolutionary design, allowing for frequent, controlled changes to the software. Services are designed to be replaceable, and teams expect some services to be scrapped rather than evolved.

  • Future of Microservices: While the article acknowledges the positive experiences with microservices, it also expresses cautious optimism about their future. The long-term effects of microservices architecture are not yet fully understood, and challenges such as defining service boundaries, managing complexity, and ensuring team skill are highlighted.

In essence, microservices offer a way to build and manage complex applications more flexibly and scalably than traditional monolithic architectures. However, they also introduce new challenges that must be carefully managed to be successful.


See

https://martinfowler.com/articles/microservices.html
https://martinfowler.com/articles/enterpriseREST.html#versioning

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/21164.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity内制作动画

Unity内制作动画 动画剪辑(Animation Clips) 创建动画剪辑:在Unity中,可以通过导入动画数据来创建动画剪辑。这些数据可以是FBX、OBJ等格式的3D模型文件,其中包含关键帧动画。 编辑动画剪辑:在Unity的Anim…

最新一站式AI创作中文系统网站源码+系统部署+支持GPT对话、Midjourney绘画、Suno音乐、GPT-4o文档分析等大模型

一、系统简介 本文将介绍最新的一站式AI创作中文系统(集成ChatGPTMidjourneySunoStable Diffusion)——星河易创AI系统,该系统基于ChatGPT的核心技术,融合了自然语言问答、绘画、音乐、文档分享、图片识别等创作功能,…

牛客热题:数组中出现一次的两个数字

📟作者主页:慢热的陕西人 🌴专栏链接:力扣刷题日记 📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言 文章目录 牛客热题:数组中出现一次的两个数字题目链…

集成学习算法笔记

一、引言 在机器学习和数据分析领域,集成学习算法因其能够显著提高模型预测性能而备受关注。然而,任何算法在应用过程中都不可避免地会遇到一些挑战和问题,集成学习算法也不例外。其中,最为常见且关键的两大问题便是欠拟合&#…

全国水系数据(更新到2024年5月)

上海市水系数据地图可视化 水系数据线图层(小河/溪流、江/河、运河、下水道/排水管) 水系数据面数据(水域、水库、河岸、湿地) 水系数据字段说明 可视化预览 北京市水系可视化 上海市水系可视化 广州市水系可视化 深圳市水系可视化…

考研数学考到110+分,到底有多难?

很难! 大家平时在网上上看到很多人说自己考了130,其实这些人只占参加考研数学人数的极少部分,有个数据可以展示出来考研数学到底有多难: 在几百万考研大军中,能考到120分以上的考生只有2%。绝大多数人的分数集中在30…

Django 注册应用

上一章Django 创建项目及应用-CSDN博客 创建的应用,需要在主项目的myshop.settings.py 文件下注册 INSTALLED_APPS [django.contrib.admin,django.contrib.auth,django.contrib.contenttypes,django.contrib.sessions,django.contrib.messages,django.contrib.sta…

[DDR5 Jedec 4-1] 预充电命令 Precharge

依公知及经验整理,原创保护,禁止转载。 专栏 《深入理解DDR》 1. 预充电(Precharge)含义 由于SDRAM的寻址具体独占性,因此在进行完读写操作后,若需对同一L-Bank的另一行进行寻址,则必须先关闭原…

如何创建一个线程池,为什么不推荐使用Executors去创建呢?

我们在学线程的时候了解了几种创建线程的方式,比如继承Thread类,实现Runnable接口、Callable接口等,那对于线程池的使用,也需要去创建它,在这里我们提供2种构造线程池的方法: 方法一: 通过Thre…

【vue】vue2项目将npm包管理器修改为yarn包管理器

【vue】vue2项目将npm包管理器修改为yarn包管理器 1.删除node_modules文件夹、package-lock.json文件 2.全局安装yarn npm install -g yarn3.安装项目依赖 yarn install如果执行yarn install 报类似以下这种版本不兼容错误,执行 yarn config set ignore-engines …

【Qt】探索Qt绘图世界:自定义控件与视觉效果的全面指南

文章目录 前言:1. 绘图基本概念2. 绘制各种形状3. 绘制文字(显示文字)、设置画笔4. 画刷5. 绘制图片6. 特殊的绘图设备总结: 前言: 在软件开发中,图形用户界面(GUI)的设计是至关重要…

Unity中帧动画素材的切割设置

有几个问题,美术在给我们帧动画的时候,一般都是给一个比较大的图,然后进行切割成多个sprite,导入到animation中 一般来说,进行那个autoSlide,自动切割就可以了 这个自动切割的图片会沿着有像素的最小包围…

【1】AI介绍

迎接 AGI 时代 AGI(Artificial General Intelligence),人工通用智能,AGI是一种可以执行复杂任务的人工智能,能够完全模仿人类智能的行为。应用领域涉及医疗、交通、智能家居等多个与人类活动密切相关的领域。 AGI 多久会到来? 乐观预测:明年(未来已来)主流预测:3-5…

RHEL7.9修改分区

系统RHEL7.9 他因为安装软件,需要修改分区 进入超级用户root,输入lsblk 查看分区,可见465.8G系统盘sda下有三个物理卷,其中sda3下/home有410.6G,需要这部分拆分出200G软件和100G的数据库分区 备份/home 目录下文件 c…

GDPU unity游戏开发 动画状态机

每一个动画状态都演绎着你的奔赴。 动画混合 1) 前往 Mixamo选择适合的角色模型和idle/walking/backward动画并下载。确保下载时选择FBX for Unity格式。 2) 新建Unity项目,导入下载的模型。 3) 在导入模型的Inspector窗口中,选择Materials选项卡&a…

分治策略的实现

目录 前言 分治策略的应用 最大子数组问题 矩阵乘法问题 求解递归式的三种方法 代入法求递归式 用递归树求递归式 主方法求递归式 前言 分治三个步骤: 分解:分解原问题为子问题,这些子问题为原问题的较小规模的问题。 解决&#xf…

浅谈SpringBoot日志文件

文章目录 一、日志的作用二、如何在SpringBoot中使用日志2.1、在程序中得到日志对象。2.2、通过日志对象中提供的内置方法操打印日志信息2.2.1 日志级别2.2.1.1、日志级别有什么作用??2.2.1.2、日志级别的分类2.2.1.2、在配置文件中设置日志级别[!] 三、…

Linux线程:线程分离

目录 一、什么是线程分离 1.1pthread_detach 1.2pthread线程库存在的意义 1.3__thread线程的局部存储 1.4系统调用clone 一、什么是线程分离 1.1pthread_detach 默认情况下,新创建的线程是joinable的,线程退出后,需要对其进行pthread_joi…

非对称密钥:应用场景

public class EncryptionAndSignatureExample { public static void main(String[] args) throws Exception {// 生成公私钥对KeyPairGenerator keyPairGenerator KeyPairGenerator.getInstance("RSA");keyPairGenerator.initialize(1024);KeyPair keyPair keyPai…

路由策略实验2

对R7,重发布直连路由 对R2,做双向 对R3同样 先不改优先级 查看,知道所有给R3的路由为151,全部为OSPF。 知道了是错误的,先把3,4之间的线路断掉 接着对R3,让优先级全部回到100(displa…