再读Microservices-A definition of this new architectural term

2024-01-05 08:50

本文主要是介绍再读Microservices-A definition of this new architectural term,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

文章就是那种隔一段时间拿出来看看,总能获得新收获的文章。James Lewes和Martin Flower这篇就应该属于这一类,第一次读这篇文章应该是在2015年吧,读完了感觉云里雾里的,感觉懂了又感觉有点蒙,尤其是关于Product not Project那部分以及围绕业务组织团队。经过三年再看的时候才感觉到确实如此,所以本周就把重读一遍的收获在这里写一下,也算是一种特别的体验

核心内容

1.组件化的服务
服务这个概念本身就没有明确的定义,这里定义了组件化的方式,并非是函数或模块或库而是独立的服务。
在文章中首先探讨了微服务与意外模块化设计的本质却别是将服务作为组件来对待的,这样的组件粒度是之前比较少见的。
2.围绕业务组织团队
与传统的前端,后端,数据库的划分不同,微服务主张以业务为划分的依据而非技术
When teams are separated along these lines, even simple changes can lead to a cross-team project taking time and budgetary approval.
这里写图片描述
这一点得益于技术的发展使得技术本身不再是开发中的最大瓶颈,而以往根据技术来划分团队带来的弊端渐渐超过了其技术优势,这一点是与传统开发模式最大的不同一点。
3.以产品而非项目
where the aim is to deliver some piece of software which is then considered to be completed.
主要是因为对于项目团队和公司没有优化和改进的动力,这样微服务带来的动态设计以及对于扩展的良好支撑则完全发挥不出来。因此在微服务技术初期,微服务是不适合用于项目开发的。
但现在情景已经不同了,基于Spring生态体系构建的SpringCloud等微服务一站式框架的成熟为微服务架构走向项目开发开启了道路。
4.端点更厉害,简化通道Smart endpoints and dumb pipes
这一点主要是与沉重的ESB相互对比的特性。
5.去中心化的管理
这里的管理主要是组织机构的管理,这一点有反应了康威定律。
6.去中心化的数据管理
各个微服务各自管理数据以及业务模型,一切围绕业务
7.基础设施的自动化
用以解决服务增多造成的测试,联调,部署的复杂性问题,这一大块在14年确实是个巨大的痛点,这也是限制微服务项目应用的关键点,但现在各种框架的出现大大减少了这方面的 复杂度,当然对比单体应用要复杂。
8.主动应对故障
这是分布式系统所必然面对的问题,这个不是针对微服务而出现的,实际上故障是分布式系统中最为古老的棘手问题。
9.动态设计
业务是动态的,设计也并非是静止的,动态的设计和扩展性是微服务最大的优势之一。

总结

关键还是看人,
A poor team will always create a poor system - it’s very hard to tell if microservices reduce the mess in this case or make it worse.

这篇关于再读Microservices-A definition of this new architectural term的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/572326

相关文章

java线程深度解析(一)——java new 接口?匿名内部类给你答案

http://blog.csdn.net/daybreak1209/article/details/51305477 一、内部类 1、内部类初识 一般,一个类里主要包含类的方法和属性,但在Java中还提出在类中继续定义类(内部类)的概念。 内部类的定义:类的内部定义类 先来看一个实例 [html]  view plain copy pu

string字符会调用new分配堆内存吗

gcc的string默认大小是32个字节,字符串小于等于15直接保存在栈上,超过之后才会使用new分配。

List list = new ArrayList();和ArrayList list=new ArrayList();的区别?

List是一个接口,而ArrayList 是一个类。 ArrayList 继承并实现了List。 List list = new ArrayList();这句创建了一个ArrayList的对象后把上溯到了List。此时它是一个List对象了,有些ArrayList有但是List没有的属性和方法,它就不能再用了。而ArrayList list=new ArrayList();创建一对象则保留了A

vue原理分析(六)--研究new Vue()

今天我们来分析使用new Vue() 之前研究时,只是说是在创建一个实例。并没有深入进行研究 在vue的源码中找下Vue的构造函数 function Vue(options) {if (!(this instanceof Vue)) {warn$2('Vue is a constructor and should be called with the `new` keyword');}thi

GTK中创建线程函数g_thread_new和g_thread_create的区别

使用GThread函数,需要引用glib.h头文件。 这两个接口的核心区别就是  g_thread_create 是旧的接口,现在已经不使用了,而g_thread_new是新的接口,建议使用。 g_thread_create: g_thread_create has been deprecated since version 2.32 and should not be used in n

New的VC编译器实现

当我们调用 new 的时候,例如 int *p = new int; 时,编译器到底作了什么工作呢?跟进断点看一看。   (在 vc debug模式下 ) double *p1 = new double ; 00411A6E  push        8    00411A70  call        operator new (4111B8h) 00411A75  add

Python方法:__init__,__new__,__class__的使用详解

转自:https://blog.csdn.net/qq_26442553/article/details/82464682 因为python中所有类默认继承object类。而object类提供了了很多原始的内建属性和方法,所以用户自定义的类在Python中也会继承这些内建属性。可以使用dir()函数可以查看,虽然python提供了很多内建属性但实际开发中常用的不多。而很多系统提供的内建属性实际

linux 环境下使用PHP OpenSSL扩展函数openssl_pkey_new(),返回false的原因

<?php$config = array('private_key_bits' => 2048,);$res = openssl_pkey_new($config); $res返回false的时候,检查发现,是linux系统缺少了openssl的配置,解决方法如下: 直接将php -m 中 Openssl 中的xx.conf 配置移动到对应的目录,然后重启php-fpm 完美解决

【硬刚ES】ES入门 (13)Java API 操作(4)DQL(1) 请求体查询/term 查询,查询条件为关键字/分页查询/数据排序/过滤字段/Bool 查询/范围查询/模糊查询/高亮查询/聚合查

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的ES部分补充。 1 请求体查询 2 高亮查询 3 聚合查询 package com.atguigu.es.test;import org.apache.http.HttpHost;import org.apache.lucene.search.TotalHits;import org.elasticse