当前位置:文档之家› 微服务架构的基础框架选择

微服务架构的基础框架选择

微服务架构的基础框架选择
微服务架构的基础框架选择

微服务架构的基础框架选择:Spring Cloud还是Dubbo

最近一段时间不论互联网还是传统行业,凡是涉及信息技术范畴的圈子几乎都在讨论微服务架构。第一次实施微服务架构时,我们应该选择哪个基础框架更好呢?

Round 1:背景

Dubbo,是阿里巴巴服务化治理的核心框架,并被广泛应用于阿里巴巴集团的各成员站点。阿里巴巴近几年对开源社区的贡献不论在国内还是国外都是引人注目的,比如:JStorm捐赠给Apache 并加入Apache 基金会等,为中国互联网人争足了面子,使得阿里巴巴在国人眼里已经从电商升级为一家科技公司了。

Spring Cloud,从命名我们就可以知道,它是Spring Source 的产物,Spring 社区的强大背书可以说是Java 企业界最有影响力的组织了,除了Spring Source 之外,还有Pivotal 和Netfix是其强大的后盾与技术输出。其中Netflix 开源的整套微服务架构套件是Spring Cloud 的核心。

小结:如果拿Dubbo与Netflix 套件做对比,前者在国内影响力较大,后者在国外影响力较大,我认为在背景上可以打个平手;但是若要与Spring Cloud 做对比,由于Spring Source 的加入,在背书上,Spring Cloud 略胜一筹。不过,英雄不问出处,在背景这一点上,不能作为选择框架的主要因素,当您一筹莫展的时候,可以作为参考依据。

Round 2:社区活跃度

我们选择一个开源框架,社区的活跃度是我们极为关注的一个要点。社区越活跃,解决问题的速度越快,框架也会越来越完善,不然当我们碰到问题,就不得不自己解决。而对于团队来说,也就意味着我们不得不自己去维护框架的源码,这对于团队来说也将会是一个很大的负担。

下面看看这两个项目在github上的更新时间,

Dubbo:https://https://www.doczj.com/doc/be4750255.html,/dubbo

最后更新时间为:2016年5月6日

Spring Cloud :https://https://www.doczj.com/doc/be4750255.html,/spring-cloud

最后更新时间为:12分钟前

可以看到Dubbo的更新已经是几个月前,并且更新频率很低。而Spring Cloud 的更新是12分钟前,仍处于高速迭代的阶段。

小结:在社区活跃度上,Spring Cloud 毋庸置疑的优于Dubbo,这对于没有大量精力与财力维护这部分开源内容的团队来说,Spring Cloud 会是更优的选择。

Round 3:架构完整度

或许很多人会说Spring Cloud 和Dubbo的对比有点不公平,Dubbo只是实现了服务治理,而Spring Cloud 下面有17 个子项目(可能还会新增)分别覆盖了微服务架构下的方方面面,服务治理只是其中的一个方面,一定程度来说,Dubbo只是Spring Cloud Netflix 中的一个子集。但是在选择框架上,方案完整度恰恰是一个需要重点关注的内容。

根据Martin Fowler 对微服务架构的描述中,虽然该架构相较于单体架构有模块化解耦、可独立部署、技术多样性等诸多优点,但是由于分布式环境下解耦,也带出了不少测试与运维复杂度。

根据微服务架构在各方面的要素,看看Spring Cloud 和Dubbo都提供了哪些支持。

以上列举了一些核心部件,大致可以理解为什么之前说Dubbo只是类似Netflix 的一个子集了吧。当然这里需要申明一点,Dubbo对于上表中总结为“无”的组件不代表不能实现,而只是Dubbo框架自身不提供,需要另外整合以实现对应的功能,比如:

?分布式配置:可以使用淘宝的diamond、百度的disconf来实现分布式配置管理。但是Spring Cloud 中的Config组件除了提供配置管理之外,由于其存储可以使用git,因此它天然的实现了配置内容的版本管理,可以完美的与应用版本管理整合起来。

?服务跟踪:可以使用京东开源的Hydra

?批量任务:可以使用当当开源的Elastic-Job

?……

虽然,Dubbo自身只是实现了服务治理的基础,其他为保证集群安全、可维护、可测试等特性方面都没有很好的实现,但是几乎大部分关键组件都能找到第三方开源来实现,这些组件主要来自于国内各家大型互联网企业的开源产品。

RPC vs REST

另外,由于Dubbo是基础框架,其实现的内容对于我们实施微服务架构是否合理,也需要我们根据自身需求去考虑是否要修改,比如Dubbo的服务调用是通过RPC 实现的,但是如果仔细拜读过Martin Fowler 的Microservices一文,其定义的服务间通信是HTTP协议的REST API。那么这两种有何区别呢?

先来说说,使用Dubbo的RPC 来实现服务间调用的一些痛点:

?服务提供方与调用方接口依赖方式太强:我们为每个微服务定义了各自的service 抽象接口,并通过持续集成发布到私有仓库中,调用方应用对微服务提供的抽象接口存在强依赖关系,因此不论开发、测试、集成环境都需要严格的管理版本依赖,才不会出现服务方与调用方的不一致导致应用无法编译成功等一系列问题,以及这也会直接影响本地开发的环境要求,往往一个依赖很多服务的上层应用,每天都要更新很多代码并install 之后才能进行后续的开发。若没有严格的版本管理制度或开发一些自动化工具,这样的依赖关系会成为开发团队的一大噩梦。

而REST 接口相比RPC 更为轻量化,服务提供方和调用方的依赖只是依靠一纸契约,不存在代码级别的强依赖,当然REST 接口也有痛点,因为接口定义过轻,很容易导致定义文档与实际实现不一致导致服务集成时的问题,但是该问题很好解决,只需要通过每个服务整合swagger,让每个服务的代码与文档一体化,就能解决。所以在分布式环境下,REST 方式的服务依赖要比RPC 方式的依赖更为灵活。

?服务对平台敏感,难以简单复用:通常我们在提供对外服务时,都会以REST 的方式提供出去,这样可以实现跨平台的特点,任何一个语言的调用方都可以根据接口定义来实现。那么在Dubbo中我们要提供REST 接口时,不得不实现一层代理,用来将RPC 接口转换成REST 接口进行对外发布。若我们每个服务本身就以REST 接口方式存在,当要对外提供服务时,主要在API 网关中配置映射关系和权限控制就可实现服务的复用了。

相信这些痛点也是为什么当当网在dubbox(基于Dubbo的开源扩展)中增加了对REST 支持的原因之一。

小结:Dubbo实现了服务治理的基础,但是要完成一个完备的微服务架构,还需要在各环节去扩展和完善以保证集群的健康,以减轻开发、测试以及运维各个环节上增加出来的压力,这样才能让各环节人员真正的专注于业务逻辑。而Spring Cloud 依然发扬了Spring Source 整合一切的作风,以标准化的姿态将一些微服务架构的成熟产品与框架揉为一体,并继承了Spring Boot 简单配置、快速开发、轻松部署的特点,让原本复杂的架构工作变得相对容易上

手一些。所以,如果选择Dubbo请务必在各个环节做好整套解决方案的准备,不然很可能随着服务数量的增长,整个团队都将疲于应付各种架构上不足引起的困难。而如果选择Spring Cloud,相对来说每个环节都已经有了对应的组件支持,可能有些也不一定能满足你所有的需求,但是其活跃的社区与高速的迭代进度也会是你可以依靠的强大后盾。

Round 4:文档质量

Dubbo的文档可以说在国内开源框架中算是一流的,非常全,并且讲解的也非常深入,由于版本已经稳定不再更新,所以也不太会出现不一致的情况,另外提供了中文与英文两种版本,对于国内开发者来说,阅读起来更加容易上手,这也是dubbo在国内更火一些的原因吧。

Spring Cloud 由于整合了大量组件,文档在体量上自然要比dubbo多很多,文档内容上还算简洁清楚,但是更多的是偏向整合,更深入的使用方法还是需要查看其整合组件的详细文档。另外由于Spring Cloud 基于Spring Boot,很多例子相较于传统Spring 应用要简单很多(因为自动化配置,很多内容都成了约定的默认配置),这对于刚接触的开发者可能会有些不适应,比较建议了解和学习Spring Boot 之后再使用Spring Cloud,不然可能会出现很多一知半解的情况。

小结:虽然Spring Cloud 的文档量大,但是如果使用Dubbo去整合其他第三方组件,实际也是要去阅读大量第三方组件文档的,所以在文档量上,我觉得区别不大。对于文档质量,由于Spring Cloud 的迭代很快,难免会出现不一致的情况,所以在质量上我认为Dubbo更好一些。而对于文档语言上,Dubbo自然对国内开发团队来说更有优势。

总结

通过上面再几个环节上的分析,相信大家对Dubbo和Spring Cloud 有了一个初步的了解。就我个人对这两个框架的使用经验和理解,打个不恰当的比喻:使用Dubbo构建的微服务架构就像组装电脑,各环节我们的选择自由度很高,但是最终结果很有可能因为一条内存质量不行就点不亮了,总是让人不怎么放心,但是如果你是一名高手,那这些都不是问题;而Spring Cloud 就像品牌机,在Spring Source 的整合下,做了大量的兼容性测试,保证了机器拥有更高的稳定性,但是如果要在使用非原装组件外的东西,就需要对其基础有足够的了解。

从目前Spring Cloud 的被关注度和活跃度上来看,很有可能将来会成为微服务架构的标准框架。

微服务框架的设计与实现

微服务框架的设计与实现① 张晶1, 黄小锋2, 李春阳3 1(北京中电普华信息技术有限公司, 北京100192) 2(中国电建集团国际工程有限公司, 北京100048) 3(国网信息通信产业集团有限公司, 北京100031) 摘 要: 相对于传统单块架构, 微服务框架具有技术选型灵活, 独立部署, 按需独立扩展等优点, 更适合当前互联网时代需求. 但微服务架构的使用引入了新的问题, 如服务注册发现、服务容错等. 对微服务框架引入的问题进行分析, 并给出了微服务框架的一种实现方案, 在框架层面解决服务注册发现、服务容错等共性问题, 使业务系统开发人员专注于业务逻辑实现, 简化系统开发的难度, 提高开发效率. 关键词: 微服务框架; 服务注册; 服务发现; 服务容错 Design and Implementation of Microservice Architecture ZHANG Jing1, HUANG Xiao-Feng2, LI Chun-Yang3 1(Beijing China Power Information Technology Co. Ltd., Beijing 100192, China) 2(PowerChina International Group Limited, Beijing 100048, China) 3(State Grid Information & Telecommunication Industry Group Co. Ltd., Beijing 100031, China) Abstract: Compared with traditional single block architecture, microservice architecture has many advantages, such as flexible technology selection, independent deployment, and independent scalability more suitability for the current needs of the internet age, etc. But microservice architecture also introduces new problems such as service registration, service discovery, service fault tolerance. On the basis of the analysis for problems mentioned above, this paper proposes one implementation of microservice framework, which can solve service registration, service discovery, service fault tolerance and other common problems. Based on this, developers only need to focus on the development of business functions, so that it can simplify the difficulty of system development and improve development effectiveness. Key words: microservice architecture; service registration; service discover; fault tolerance 传统信息化系统的典型架构是单块架构(Monolithic Architecture), 即将应用程序的所有功能都打包成一个应用, 每个应用是最小的交付和部署单元, 应用部署后运行在同一进程中. 单块架构应用具有IDE友好、易于测试和部署等优势, 但是, 随着互联网的迅速发展, 单块架构临着越来越多的挑战, 主要表现在维护成本高、持续交付周期长、可伸缩性差等方面[1]. 微服务架构(Microservices)的出现以及在国内外的成功应用, 成为系统架构的一种新选择. 很多大型宝等都已经从传统单块架构迁移到微服务架构[2]. 微服务架构提倡将单块架构的应用划分成一组小的服务, 互联网公司如Twitter、Netflix、Amazon 、eBay、淘服务之间互相协调、互相配合, 为用户提供最终价值. 1 微服务架构 微服务架构是一种架构模式, 采用一组服务的方式来构建一个应用, 服务独立部署在不同的进程中, 不同服务通过一些轻量级交互机制来通信, 例如RPC、HTTP等, 服务可独立扩展伸缩, 每个服务定义了明确的边界, 不同的服务甚至可以采用不同的编程语言来实现, 由独立的团队来维护[3]. 相对于传统的单体应用架构, 微服务架构具有单个服务易于开发、理解和维护; 复杂度可控; 技术选 ①收稿时间:2016-09-18;收到修改稿时间:2016-11-03 [doi: 10.15888/https://www.doczj.com/doc/be4750255.html,ki.csa.005796]

基于SpringCloud-微服务系统设计方案

微服务系统设计方案 1.微服务本质 微服务架构从本质上说其实就是分布式架构,与其说是一种新架构,不如说是一种微服务架构风格。 简单来说,微服务架构风格是要开发一种由多个小服务组成的应用。每个服务运行于独立的进程,并且采用轻量级交互。多数情况下是一个HTTP的资源API。这些服务具备独立业务能力并可以通过自动化部署方式独立部署。这种风格使最小化集中管理,从而可以使用多种不同的编程语言和数据存储技术。 对于微服务架构系统,由于其服务粒度小,模块化清晰,因此首先要做的是对系统整体进行功能、服务规划,优先考虑如何在交付过程中,从工程实践出发,组织好代码结构、配置、测试、部署、运维、监控的整个过程,从而有效体现微服务的独立性与可部署性。 本文将从微服务系统的设计阶段、开发阶段、测试阶段、部署阶段进行综合阐述。 理解微服务架构和理念是核心。 2.系统环境 名称版本说明 JDK 1.8 Spring Boot Spring Framework Ribbon kafka RabbitMQ

3.微服务架构的挑战 可靠性: 由于采用远程调用的方式,任何一个节点、网络出现问题,都将使得服务调用失败,随着微服务数量的增多,潜在故障点也将增多。 也就是没有充分的保障机制,则单点故障会大量增加。 运维要求高: 系统监控、高可用性、自动化技术 分布式复杂性: 网络延迟、系统容错、分布式事务 部署依赖性强: 服务依赖、多版本问题 性能(服务间通讯成本高): 无状态性、进程间调用、跨网络调用 数据一致性: 分布式事务管理需要跨越多个节点来保证数据的瞬时一致性,因此比起传统的单体架构的事务,成本要高得多。另外,在分布式系统中,通常会考虑通过数据的最终一致性来解决数据瞬时一致带来的系统不可用。 重复开发: 微服务理念崇尚每个微服务作为一个产品看待,有自己的团队开发,甚至可以有自己完全不同的技术、框架,那么与其他微服务团队的技术共享就产生了矛盾,重复开发的工作即产生了。

微服务架构介绍

微服务架构介绍

微服务是个说的挺长时间的概念,也是比较成熟的技术体系。像Spring Cloud,甚至提供了微服务所需要的全套框架,包括注册中心(Eureka)、配置中心(Config)、断路器(Hytrix)、API 网关(Zuul) 等组件。微服务体系庞杂,每个组件都能独自成章。 微服务与更早就起来的SOA 是什么关系? 个人觉得如果从概念上来说,微服务和SOA 都是一回事,强调把整个系统,按照多个服务的方式去组合及通信,而不是揉合在一起,但它们的内涵有很大的区别。 SOA 诞生在早期企业级的应用,其业务复杂、技术体系多样,SOA 强调的是各个服务之间,尤其是异构系统、遗留系统之间,建立起一套统一的协议和通信(SOAP),以及寻址服务(UDDI),它的侧重点在集成和兼容;与SOA 同期的另一种概念ESB(企业总线),强调通过一根总线服务,把所有服务串联起来,由ESB 总线来屏蔽各种不同业务系统自身业务/ 语言/ 协议的特殊性,各服务以一种统一的方式,与总线相连,从而降低接入成本。 这两种概念,我感觉在国内没有太发展起来。一是国内的软件起步相对较晚,系统的整体复杂度——多厂商、多语言/ 技术栈、历史遗留系统的问题,还不算突出。而对于公司内部的产品系,又没有必要使用SOA、UDDI 来做复杂的集成。随着互联网的兴起和用户量的迅速爆发,企业自身的产品的微服务化的需求,快速发展起来,而与此同时SOA 这种以XML 为基础的SOAP 协议、以寻址为主要作用的UDDI,不能使用互联网产品的发展——SOAP 的XML 协议内容太多,造成性能明显下降;HTTP 协议的效率不如RPC;UDDI 只有寻址,缺少服务治理等功能。 在此种大背景下,以服务切分+ 服务注册+ 服务治理+ 限流降级+RPC+ 监控等为主要内涵的微服务,就快速发展起来的。国内的阿里巴巴走在前列,以Dubbo 为代表在国内互联网企业中得到广泛应用;后来Spring 官方发布Spring Cloud,揉合了一系列自研或其他企业捐赠的开源项目,发布微服务领域的Spring Cloud 产品。各自都有各自的优势和劣势,而

微服务架构设计V1

微服务架构设计

目录 一、微服务架构介绍 (3) 二、微服务出现和发展 (3) 三、传统开发模式和微服务的区别 (4) 四、微服务的具体特征 (7) 五、SOA和微服务的区别 (9) 六、怎么具体实践微服务 (11) 七、常见的设计模式和应用 (17) 八、优点和缺点 (23) 九、思考:意识的转变 (26)

一、微服务架构介绍 微服务架构(Microservice Architecture)是一种架构概念,旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦。你可以将其看作是在架构层次而非获取服务的 类上应用很多SOLID原则。微服务架构是个很有趣的概念,它的主要作用是将功能分解到离散的各个服务当中,从而降低系统的耦合性,并提供更加灵活的服务支持。 概念:把一个大型的单个应用程序和服务拆分为数个甚至数十个的支持微服务,它可扩展单个组件而不是整个的应用程序堆栈,从而满足服务等级协议。 定义:围绕业务领域组件来创建应用,这些应用可独立地进行开发、管理和迭代。在分散的组件中使用云架构和平台式部署、管理和服务功能,使产品交付变得更加简单。 本质:用一些功能比较明确、业务比较精练的服务去解决更大、更实际的问题。 二、微服务出现和发展 微服务(Microservice)这个概念是2012年出现的,作为加快Web和移动应用程序开发进程的一种方法,2014年开始受到各方的关注,而2015年,可以说是微服务的元年; 越来越多的论坛、社区、blog以及互联网行业巨头开始对微服务进行讨论、实践,可以说这样更近一步推动了微服务的发展和创新。而微服务的流行,Martin Fowler功不可没。 这老头是个奇人,特别擅长抽象归纳和制造概念。特别是微服务这种新生的名词,都有一个特点:一解释就懂,一问就不知,一讨论就打架。

微服务架构技术规范-第一版V2.2

微服务架构技术规范(试行稿) 1总则 目前研发中心的后台开发中,基于Java/Spring MVC/Spring Boot框架开发,每个部门引入的支撑组件却各异,缺乏统一性,甚至每个部门都维护着一堆非业务组件,影响开发人员对快速变化业务支持的专注性。 这套方案的具有较好的可扩展性、可维护性、及良好的代码风格,可以为公司各类型的应用开发提供统一、通用、而强大的基础架构,完全能支持公司所有后台服务沉淀和演化出一个稳健企业中台。 2适用范围 本规范适用于创维数字本部及各分子公司,在使用微服务技术架构进行系统开发时,需遵循此技术规范 3微服务概述 3.1微服务定义 什么是微服务? 1.微服务- 也称为微服务架构- 是一种架构风格,它将应用程序构建为一组服务 2.高度可维护和可测试 3.松散耦合 4.可独立部署 5.围绕业务能力进行组织。 6.微服务架构支持大型复杂应用程序的持续交付/部署。它还使组织能够

发展其技术堆栈。 Chris Richardson 世界著名软件大师 3.2使用微服务 传统的单体服务,或者模块化不彻底的项目可能存在以下弊端:1.团队职责不清晰 2.构建和部署耗时长 3.全量部署耗时长、影响范围广 4.单体只能按整体横向扩展,无法分模块垂直扩展 5.受技术栈限制,团队成员使用同一框架和语言 6.升级和变革技术框架变得困难 随着软件行业的发展和演变,服务器软件进入了微服务化阶段。对服务的可维护性、可扩展性、可用性这些维度更加让从业人员关注。而微服务化正是解决这些观注的良好的解决方案。所以微服务化正是软件发展演化的结果。在新的目项目应该微服务化解决方案。微服务化的程度可以具体项目具体场景决定。 4开发规范 4.1基本理念 4.1.1无状态服务(Stateless) 无状态就是一次操作,不能保存数据。

2019最受欢迎的13个Java微服务框架

曾经的服务器领域有许多不同的芯片架构和操作系统,经过长期发展,Java的“一次编译,到处运行”使得它在服务器领域找到一席之地,成为程序员们的最爱 本文,我们将和大家分享13个可靠的Java微服务架构 1、Spring Boot Java构建Spring应用程序已经有很长一段时间了,Spring Boot是Spring的一个特定版本,它通过对配置细节的处理,使微服务构建更加简便。创建Spring Boot旨在自启动任何类型的Spring项目,而不仅仅是微服务。应用程序完成后,Spring Boot将在web服务器中混合,并输出一个JAR文件,JVM除外。你可以将其视为原始Docker容器。这也是许多负责构建微服务的开发者都非常喜欢Spring Boot的原因。 使用Spring 开发微服务遵循与Web 应用相同的MVC 理念。该框架享有多年Java开发中建立的所有深度连接,包括所有主要和次要数据存储、LDAP服务器和Apache Kafka等消息传递工具的集成。还有许多用于维护运行服务器集合的小特性,比如Spring Vault,这是一种用于维护生产环境中服务器所需的密码的工具。所有这些优点都说明了为什么Java程序员多年来一直喜欢Spring Boot的原因。

2、Eclipse MicroProfile 2016年,Java Enterprise社区决定清理Java Enterprise Edition中的内容,以便人们可以使用经典部件构建简单的微服务。他们去除了大量的库,但保留了处理REST请求,解析JSON和管理依赖注入的功能代码,最终被称为Eclipse MicroProfile,其特性为快速而简单。 从那以后,MicroProfile社区制定了一个协议,每季度发布一个新版本,同时添加新代码以保持微服务平稳安全地运行。任何Java EE开发者都会非常熟悉开发过程和代码结构,而且还吧配置麻烦给省去了。 3、Dropwizard 当Dropwizard在2011年出现时,Dropwizard框架为开发者提供了一个非常简单的模型,里面包含了许多重要的模块,你可以根据需求添加一些业务逻辑,或者配置其他内容,最后你会发现JAR文件非常小,并且能够快速启动。

微服务架构的核心要点和实现原理

微服务架构的核心要点和实现原理

目录 一、微服务架构中职能团队的划分 (3) 二、微服务的去中心化治理 (5) 三、微服务的交互模式 (6) 四、微服务的分解和组合模式 (11) 五、微服务的容错模式 (32) 六、微服务的粒度 (43)

一、微服务架构中职能团队的划分 传统单体架构将系统分成具有不同职责的层次,对应的项目管理也倾向于将大的团队分成不同的职能团队,主要包括:用户交互UI团队、后台业务逻辑处理团队与数据存取ORM团队、DBA团队等。每个团队只对自己分层的职责负责,并对使用方提供组件服务质量保证。如果其中一个模块化组件需要升级、更新,那么这个变更会涉及不同的分层团队,即使升级和变更的改变很小,也需要进行跨团队沟通:需求阶段需要跨团队沟通产品功能,设计阶段需要跨团队沟通设计方案,开发阶段需要跨团队沟通具体的接口定义,测试阶段需要沟通业务回归等事宜,甚至上线都需要跨团队沟通应用的上线顺序。可见在传统的整体架构下,后期的维护成本很高,出现事故的风险很大。 根据康威定律,团队的交流机制应该与架构设计机制相对应。因此,在微服务架构下,职能团队的划分方法是我们首先要考虑的一个核心要素。 微服务时代的团队沟通方式如图1-9所示。

图1-9 微服务架构按照业务的功能进行划分,每个单一的业务功能叫作一个服务,每个服务对应一个独立的职能团队,团队里包含用户交互UI设计师、后台服务开发人员、DBA、运营和运维人员。

在传统的整体架构中,软件是有生命周期的,经历需求分析、开发和测试,然后被交付给运维团队,这时开发团队将会解散,这是对软件的一个“放手”。而在微服务架构中,提倡运维人员也是服务项目团队的一员,倡导谁开发、谁维护,实施终生维护制度。 在业务服务的内部实现需要升级或者变更时,团队内的各角色成员进行沟通即可,而不需要进行跨团队沟通,这大大提高了沟通效率。只有服务之间的接口需要变更时才需要跨部门沟通,如果前期在服务之间的交互上定义了良好的接口,则接口变更的概率并不大,即使接口模式有变更,也可以通过一定的设计模式和规范来解决,可参考1.3.3节。 二、微服务的去中心化治理 笔者曾经在一个互联网平台上工作,平台的决策者倡导建设API网关,所有外部服务和内部服务都由统一的API网关进行管理。在项目初期,中心化的API网关统一了所有API的入口,这看起来很规范,但从技术角度来看限制了API的多样化。随着业务的发展,API网关开始暴露问题,每个用户请求经过机房时只要有服务之间的交互,则都会从API网关进行路由,服务上量以后,由于内部服务之间的交互都会叠加在API网关的调用上,所以在很大程度上放大了API网关的调用TPS,API网关很快就遇到了性能瓶颈。 这个案例是典型的微服务的反模式,微服务倡导去中心化的治理,不推荐每个微服务都使用相同的标准和技术来开发和使用服务。在微服务架构下可以使用C++开发一个服务,来对接Java 开发的另外一个服务,对于异构系统之间的交互标准,通常可以使用工具来补偿。开发者可以开发共用的工具,并分享给异构系统的开发者使用,来解决异构系统不一致的问题,例如:Thrift 远程调用框架使用中间语言(IDL)来定义接口,中间语言是独立于任何语言的,并提供了工具来生成中间语言,以及在中间语言与具体语言之间的代码转换。

微服务架构的部署

微服务架构的部署本文从以下几个方面简要说明微服务架构项目的实践经验:架构选型、开发测试环境下的相关工具支持、人员分工及开发部署流程、相关设计及注意事项。最后,将根据实践经验讨论提高微服架构下的开发和运维效率的切实需求,进一步理清本项目所实现的容器服务管理平台的完善性需求。 本项目是一个企业级的容器服务管理平台,该平台的功能是基于容器实现的应用运行环境管理,以及应用开发阶段的持续集成和持续发布。简单的理解该平台的核心功能之一就是管理复杂应用的开发和运维环境,提高微服务架构下的开发和运维效率。项目的开发背景如下: 首先,该系统具有典型分布式应用系统特征: 该平台所运行的服务器配置不高,例如华为RH1288这类低配置服务器,允许硬件失败; 系统平台要求可根据实际用户数的规模进行伸缩部署,保证硬件资源的合理利用; 由于系统平台之上需要运行若干企业应用的开发和运行环境,可靠性是非常重要的,不允许单点失效。 其次,本系统功能复杂,从架构的角度需要将系统分成多个层次和若干个子系统。不同的层次、子系统根据具体情况需要采用不同的开发语言,由不同的开发小组完成。 第三,项目组成员由几个城市的异地团队协同开发,统一的开发环境和协同工具是必不可少的。 针对上述项目背景的考虑,本项目选择基于微服务架构进行项目开发。 开发、测试、部署使用到的工具集 “工欲善其事、必先利其器”,借助适合的流程和相关工具集,才能提高微服务架构下的应用开发效率。本项目利用DevOPs流程并选用一套相关工具集实现应用开发管理,提高开发、测试、部署的效率。 代码库:本项目使用分布式代码库Gitlab,它的功能不限于代码仓库,还包括reviews(代码审查), issue tracking(问题跟踪)、wiki等功能,是代码管理和异地团队沟通、协作工具的首选。 Docker镜像仓库、Docker:本项目用容器贯穿整个软件开发流程,以容器作为应用发布的载体,应用的开发环境和测试发版环境都运行在Docker容器中。对于复杂的开发和运维环境管理Docker具有先天的优势,目前国内外的互联网公司有大多数都已经将Docker应用到了他们的开发或者生产环境中了。 K8s:本项目采用Kubernates作为容器调度管理的基础环境,开发环境、测试环境的Docker容器都由K8s负责调度管理。 Jenkins:快速的部署发布离不开老牌持续集成明星Jenkins,本项目通过Jenkins任务构建代码、将应用打包成Docker镜像,最终发布到K8s环境中将容器运行起来。 Shell脚本:编写Shell脚本将项目打分支、发布应用等开发阶段的配置管理工作自动化,降低运维门槛、提高配置管理和运维的效率。

微服务架构设计方案

微服务架构设计方案

引言:“微服务”是当前软件架构领域非常热门的词汇,能找到很多关于微服务的定义、准则,以及如何从微服务中获益的文章,在企业的实践中去应用“微服务”的资源却很少。本篇文章中,会介绍微服务架构(Microservices Architecture)的基础概念,以及如何在实践中具体应用。 1.单体架构(Monolithic Architecture ) 企业级的应用一般都会面临各种各样的业务需求,而常见的方式是把大量功能堆积到同一个单体架构中去。比如:常见的ERP、CRM等系统都以单体架构的方式运行,同时由于提供了大量的业务功能,随着功能的升级,整个研发、发布、定位问题,扩展,升级这样一个“怪物”系统会变得越来越困难。单体架构的初期效率很高,应用会随着时间推移逐渐变大。在每次的迭代中,开发团队都会面对新功能,然后开发许多新代码,随着时间推移,这个简单的应用会变成了一个巨大的怪物。 图1:单体架构 大部分企业通过SOA来解决上述问题,SOA的思路是把应用中相近的功能聚合到一起,以服务的形式提供出去。因此基于SOA架构的应用可以理解为一批服务的组合。SOA带来的问题是,引入了大量的服务、消息格式定义和规范。 多数情况下,SOA的服务直接相互独立,但是部署在同一个运行环境中(类似于一个Tomcat实例下,运行了很多web应用)。和单体架构类似,随着业务功能的增多SOA的服务会变得越来越复杂,本质上看没有因为使用SOA而变的更好。图1,是一个包含多种服务的在线零售网站,所有的服务部署在一个运行环境中,是一个典型的单体架构。

单体架构的应用一般有以下特点: ?设计、开发、部署为一个单独的单元。 ?会变得越来越复杂,最后导致维护、升级、新增功能变得异常困难 ?很难以敏捷研发模式进行开发和发布 ?部分更新,都需要重新部署整个应用 ?水平扩展:必须以应用为单位进行扩展,在资源需求有冲突时扩展变得比较困难(部分服务需要更多的计算资源,部分需要更多内存资源) ?可用性:一个服务的不稳定会导致整个应用出问题 ?创新困难:很难引入新的技术和框架,所有的功能都构建在同质的框架之上 2.微服务架构(Microservices Architecture) 微服务架构的核心思想是,一个应用是由多个小的、相互独立的、微服务组成,这些服务运行在自己的进程中,开发和发布都没有依赖。 多数人对于微服务的定义是, 把本来运行在单体架构中的服务拆分成相互独立的服务,并运行在各自的进程中。在我看来,不仅如此。最关键的地方在于,不同的服务能依据不同的业务需求,构建的不同的技术架构之上,并且聚焦在有限的业务功能之上。 因此,在线零售网站可以用图2的微服务架构来简单概括。基于业务需求,需要增加一个账户服务微服务,因此构建微服务绝不是在单体架构中把服务拆分开这么简单。

基于SpringCloud微服务系统设计方案

微服务系统设计方案 1. 微服务本质 微服务架构从本质上说其实就是分布式架构,与其说是一种新架构,不如说是一种微服 务架构风格。 简单来说,微服务架构风格是要开发一种由多个小服务组成的应用。每个服务运行于独立的进程,并且采用轻量级交互。多数情况下是一个HTTP的资源APl。这些服务具备独立业务能力并可以通过自动化部署方式独立部署。这种风格使最小化集中管理,从而可以使用多种不同的编程语言和数据存储技术。 对于微服务架构系统,由于其服务粒度小,模块化清晰,因此首先要做的是对系统整体进行功能、服务规划,优先考虑如何在交付过程中,从工程实践出发,组织好代码结构、 配置、测试、部署、运维、监控的整个过程,从而有效体现微服务的独立性与可部署性。 本文将从微服务系统的设计阶段、开发阶段、测试阶段、部署阶段进行综合阐述。 理解微服务架构和理念是核心。 2. 系统环境

3. 微服务架构的挑战 可靠性: 由于采用远程调用的方式,任何一个节点、网络出现问题,都将使得服务调用失败,随着微服务数量 的增多,潜在故障点也将增多。也就是没有充分的保障机制,则单点故障会大量增加。 运维要求高:系统监控、高可用性、自动化技术分布式复杂性: 网络延迟、系统容错、分布式事务 部署依赖性强: 服务依赖、多版本问题 性能(服务间通讯成本高):无状态性、进程间调用、跨网络调用数据一致性: 分布式事务管理需要跨越多个节点来保证数据的瞬时一致性,因此比起传统的单体架构的事务,成本要高得多。另外,在分布式系统中,通常会考虑通过数据的最终一致性来解决数据瞬时一致带来的系统不可用。 重复开发: 微服务理念崇尚每个微服务作为一个产品看待,有自己的团队开发,甚至可以有自己完全不同的技术、框架,那 么与其他微服务团队的技术共享就产生了矛盾,重复开发的工作即产生了。

微服务架构分布式事务设计方案

微服务- 分布式事务概念澄清 事务补偿机制:在事务链中的任何一个正向事务操作,都必须存在一个完全符合回 滚规则的可逆事务. CAP理论:CAP(Consistency, Availability, Partition Toleranee), 阐述了一个分布式系统的三个主要方面,只能同时择其二进行实现?常见的有CP系统,AP系 统. 幂等性:简单的说,?业务操作支持重试,不会产生不利影响.常见的实现方式:为消息额外增加唯一 ID. BASEBasically avaliable, soft state, eve ntually con siste nt): 是分布式事务实现的一种理论标准. 柔性事务vs.刚性事务 刚性事务是指严格遵循 ACID原则的事务,例如单机环境下的数据库事务. 柔性事务是指遵循 BASE S论的事务,通常用在分布式环境中,常见的实现方式有: 两阶段提交(2PC), TCC补偿型提交,基于消息的异步确保型,最大努力通知型. 通常对本地事务采用刚性事务,分布式事务使用柔性事务.

最佳实践 先上结论,再分别介绍分布式事务的各种实现方式如果业务场景需要强一致性,那么尽量避免将它们放在不同服务中,也就是尽量使用本地事务,避免使用强一致性的分布式事务? 如果业务场景能够接受最终一致性,那么最好是使用基于消息的最终一致性的方案 (异步确保型)来解决? 如果业务场景需要强一致性,并且只能够进行分布式服务部署,那么最好是使用 TCC方案而不是2PC方案来解决. 注意:以下每种方案都有不同的适用场合,需要根据实际业务场景来选择? 两阶段提交(2PC) 两阶段提交(Two Phase Commit, 2PC), 具有强一致性,是CP系统的一种典型实 现. 两阶段提交,常见的标准是XA, JTA等.例如Oracle的数据库支持XA. 示意图 图的上半是两阶段提交成功的演示,下半是两阶段提交失败的演示?关于两阶段提交网上有很多经典的讲解,这里就不细说了,可以参考前面的链接? 缺点

支付场景的微服务架构介绍

支付场景的微服务架构介绍

目录 一、SOA与微服务 (3) 二、老支付架构遇到的挑战 (7) 三、基于微服务怎么做的改造 (9) 四、未来规划 (21)

一、SOA与微服务 在我看来,微服务虽是国外传进来的技术,却和咱们中国的一些理论是挂钩的。所以在正式进入主题之前,先给大家简单介绍一下麦田理论。 1.关于麦田理论 古代周朝时期,老百姓种地实际是没有任何规划的,也没有任何区域的限制,一般来说在地里一会种水稻,一会种小麦,一会种蔬菜地交叉来种,可收成之后发现庄稼受阳光程度非常低,营养非常不均

衡,后期维护成本非常高。直到战国时期,有一位农业专家把地划分为多个区域,每一个区域种一种庄稼,地跟地隔开,形成最初的微服务理念。 过去我们看到的很多文章都只是讲到SOA和微服务之间的比较,我今天在这个基础上加了一个DDD。下面就DDD、SOA以及微服务的演进过程先做个引子。 2.DDD、SOA与微服务

SOA架构 SOA是上一个时代的产物,大概是在2010年之前出现的,最早提出时是提供给传统行业计算领域的解决方案,当时Oracle、IBM也提了很多方案,包括出现的很多流程引擎。

它的思想是将紧耦合的系统,划分为面向业务的粗粒度、松耦合、无状态的服务。在这之后,微服务的提出者基于SOA做了一个改进,就把它变成单一职责、独立部署、细小的微服务,是一个相反的概念。 微服务与DDD 今天我们一说到微服务就会想到DDD,有不少朋友认为DDD就是为微服务而生的。其实不是这样的,我在接触DDD时它最早是用来做UML设计、领域建模的。 DDD讲究充血模型,而J2EE模型以传统的分层架构和Spring架构捆绑在一起形成了以贫血模型为主的架构模式,贫血模型的优点是容易入门、分层清晰,而充血模型要求设计者前期对业务理解较深,不然后期项目会产生混乱。 另外就是DDD思想比较宽泛,导致形成百家争鸣的姿态,没有形成一套固定的方法论。开发者不容易理解,所以后面关注DDD的人变少了,而微服务的提出巧妙地借鉴了DDD里面的限界上下文、子域、领域事件等关键词,在微服务得到越来越多业界认可的情况下,也给DDD带来了重新的焕发。

微服务核心架构梳理

微服务核心架构梳理

目录 1.什么是微服务 (3) 2.微服务的利与弊 (5) 3.什么组织适合使用微服务? (6) 4.微服务技术架构体系 (10)

本文从头到尾梳理一下,有关微服务架构的核心内容。阅读本文你将看到业界主流微服务框架的核心原理,包括服务发现,网关,配置中心,监控等组件,功能和架构原理的简单介绍。 1.什么是微服务 微服务之父Martin Fowler,对微服务大概的概述如下: 就目前而言,对于微服务业界并没有一个统一的、标准的定义(While there is no precise definition of this architectural style ) 。但通常而言,微服务架构是一种架构模式或者说是一种架构风格,它提倡将单一应用程序划分成一组小的服务,每个服务运行独立的自己的进程中,服务之间互相协调、互相配合,为用户提供最终价值。服务之间采用轻量级的通信机制互相沟通(通常是基于HTTP的RESTful API ) 。每个服务都围绕着具体业务进行构建,并且能够被独立地部署到生产环境、类生产环境等。另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建,可以有一个非常轻量级的集中式管理来协调这些服务。可以使用不同的语言来编写服务,也可以使用不同的数据存储。 根据Martin Fowler的描述,我总结了一下几点:

?小服务,没有特定的标准或者规范,但他在总体规范上一定是小的。 ?进程独立,每一组服务都是独立运行的,可能我这个服务运行在Tomcat容器,而另一个服务运行在Jetty上。可以通过进程方式,不断的横向扩展整个服务。 ?通信,过去的协议都是很重的,就像ESB,就像SOAP,轻通信,着意味着相比过去更智能更轻量的服务相互调用,就所谓smart endpoints and dumb pipes,这些Endpoint都是解耦的,完成一个业务通信调用串起这些micro service就像是Linux系统中通过管道串起一系列命令业务。过去的业务,我们通常会考虑各种各

微服务架构-分布式事务设计方案

微服务架构-分布式事务设 计方案 -标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

微服务–分布式事务 概念澄清 事务补偿机制: 在事务链中的任何一个正向事务操作, 都必须存在一个完全符合回滚规则的可逆事务. CAP理论: CAP(Consistency, Availability, Partition Tolerance), 阐述了一个分布式系统的三个主要方面, 只能同时择其二进行实现. 常见的有CP系统, AP系统. 幂等性: 简单的说, 业务操作支持重试, 不会产生不利影响. 常见的实现方式: 为消息额外增加唯一ID. BASE(Basically avaliable, soft state, eventually consistent): 是分布式事务实现的一种理论标准. 柔性事务 vs. 刚性事务 刚性事务是指严格遵循ACID原则的事务, 例如单机环境下的数据库事务. 柔性事务是指遵循BASE理论的事务, 通常用在分布式环境中, 常见的实现方式有: 两阶段提交(2PC), TCC补偿型提交, 基于消息的异步确保型, 最大努力通知型. 通常对本地事务采用刚性事务, 分布式事务使用柔性事务. 最佳实践 先上结论, 再分别介绍分布式事务的各种实现方式. 如果业务场景需要强一致性, 那么尽量避免将它们放在不同服务中, 也就是尽量使用本地事务, 避免使用强一致性的分布式事务. 如果业务场景能够接受最终一致性, 那么最好是使用基于消息的最终一致性的方案(异步确保型)来解决. 如果业务场景需要强一致性, 并且只能够进行分布式服务部署, 那么最好是使用TCC方案而不是2PC方案来解决. 注意: 以下每种方案都有不同的适用场合, 需要根据实际业务场景来选择. 两阶段提交(2PC) 两阶段提交(Two Phase Commit, 2PC), 具有强一致性, 是CP系统的一种典型实现. 两阶段提交, 常见的标准是XA, JTA等. 例如Oracle的数据库支持XA.

13个最热开源微服务 Java 框架

13个最热开源微服务Java 框架 本文列举了13 大可在JVM 上构建可靠轻量级微服务的Java 框架 经过长期发展,Java 最终在服务器领域找到一席之地,不同芯片架构和操作系统对“一次编写,到处运行”的承诺很感兴趣。与此同时,JavaScript 一直在挑战Java 的地位,前者因为高吞吐量和速度快接管了大批网络流量。Node.js 不仅提高了速度和资源效率,还简化了客户端和服务器运行代码的复杂度。 尽管竞争激烈,许多负责微服务架构开发的团队依旧在继续使用Java,这可能有多方面原因,比如Java 经过多年测试,Sun 创建了稳定的虚拟机,Oracle 大力培养和支持,用户使用习惯等。 本文列举了Java 开发人员正在使用的13 大开源项目,这些框架构成各地微服务架构基础。 Spring Boot Java 一直在构建Spring 应用程序,Spring Boot 是Spring 的特定版本,通过对配置细节进行处理,Spring Boot 可以自动化微服务配置过程,其创建是为了自启动所有类型Spring 项目,而不仅仅是微服务。一旦应用程序完成,Spring Boot 会混合在Web 服务器中,并发出JAR 文件,可以想象成原始Docker 容器。 使用Spring 开发微服务遵循与Web 应用相同的MVC 理念。该框架享有多年Java 开发所构建的深层连接,包括所有主要和次要数据存储,LDAP 服务器以及Apache Kafka 等

消息传递工具集成,众多维护运行服务器集合的小功能,比如Spring Vault,维护生产服务器所需密码等。 Eclipse MicroProfile 2016 年,Java Enterprise 社区决定清除Java Enterprise Edition 中的部分内容,以便用户可使用经典部件构建简单微服务。在去掉大量库之后,社区保留了处理REST 请求、解析JSON 和管理依赖注入等功能,最终版本被称为Eclipse MicroProfile,其特点是快速且简单。 从那时起,MicroProfile 社区就制定了一个协议,“每季度发布一次新版本,同时添加新代码以保持微服务平稳安全运行”。对于使用Java EE 的人来说,开发过程和代码结构将非常熟悉,但无休止的配置麻烦已被去除。 Dropwizard 2011 年,Dropwizard 问世并开启Java Enterprise 开发人员的视野,其提供非常简单的开发模型,用户可添加业务逻辑,并根据惯例配置其他内容。整个JAR 文件非常苗条,并且可以快速启动。 Dropwizard 的最大限制可能是缺乏依赖注入,如果想使用依赖注入保持代码干净和松散耦合,用户需要自己添加库。与Spring 不同,没有Dropwizard 方法可以做到这一点。但是,Dropwizard 支持大多数功能,比如日志记录、健康检查和提供弹性代码。WildFly Thorntail

微服务架构概述

1.微服务架构概述 1.1.单体应用架构存在的问题 1.2.如何解决单体应用架构存在的问题 1.3.什么是微服务 1.4.微服务架构的优点与挑战 1.4.1.微服务架构的优点 1.4. 2.微服务架构面临的挑战 1.5.微服务设计原则 1.6.如何实现微服务? 1.6.1.微服务技术选型 1.6. 2.微服务架构图及常用组件 2.微服务开发框架—— 2.1.简介及其特点 2.2.的版本简介 3.开始使用实战微服务 3.1.实战前提 3.1.1.需要的技术储备 3.1.2.使用的工具及软件版本 3.2.服务提供者与服务消费者 3.3.编写服务提供者 3.3.1.手动编写项目

3.3.2.使用快速创建项目 3.4.编写服务消费者 3.5.为项目整合 3.6.硬编码有哪些问题 4.微服务注册与发现 4.1.服务注册与发现简介 4.2.简介 4.3.原理 4.4.编写 4.5.将微服务注册到上 4.6.的高可用 4.7.为添加用户认证 4.8.理解的元数据 4.9.的端点 4.10.的自我保护模式 4.11.多网卡环境下的选择 4.12.的健康检查 5.使用实现客户端侧负载均衡 5.1.简介 5.2.为服务消费者整合 5.3.使用代码自定义配置

5.4.使用属性自定义配置 5.5.脱离使用 6.使用实现声明式调用 6.1.简介 6.2.为服务消费者整合 6.3.自定义配置 6.4.手动创建 6.5.对继承的支持 6.6.对压缩的支持 6.7.的日志 6.8.使用构造多参数请求 7.使用实现微服务的容错处理 7.1.实现容错的手段 7.1.1.雪崩效应 7.1.2.如何容错 7.2.使用实现容错 7.2.1.简介 7.2.2.通用方式整合 7.2.3.断路器的状态监控与深入理解 7.2.4.线程隔离策略与传播上下文 7.2.5.使用

微服务架构

什么是微服务?就目前而言,对于微服务业界并没有一个统一的、标准的定义。但通常在其而言,微服务架构是一种架构模式或者说是一种架构风格,它提倡将单一应用程序划分成一组小的服务,每个服务运行独立的自己的进程中,服务之间互相协调、互相配合,为用户提供最终价值。服务之间采用轻量级的通信机制互相沟通(通常是基于 HTTP 的 RESTful API ) 。每个服务都围绕着具体业务进行构建,并且能够被独立地部署到生产环境、类生产环境等。另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建,可以有一个非常轻量级的集中式管理来协调这些服务。可以使用不同的语言来编写服务,也可以使用不同的数据存储。 总结了以下几点: ①小服务 小服务,没有特定的标准或者规范,但他在总体规范上一定是小的。 ②进程独立 每一组服务都是独立运行的,可能我这个服务运行在 Tomcat 容器,而 另一个服务运行在 Jetty 上。可以通过进程方式,不断的横向扩展整 个服务。 ③通信 过去的协议都是很重的,就像 ESB,就像 SOAP,轻通信,这意味着相 比过去更智能更轻量的服务相互调用,就所谓 smart endpoints and dumb pipes。

这些 Endpoint 都是解耦的,完成一个业务通信调用串起这些 Micro Service 就像是 Linux 系统中通过管道串起一系列命令业务。 过去的业务,我们通常会考虑各种各样的依赖关系,考虑系统耦合带来 的问题。微服务,可以让开发者更专注于业务的逻辑开发。 ④部署 不止业务要独立,部署也要独立。不过这也意味着,传统的开发流程会 出现一定程度的改变,开发的适合也要有一定的运维职责。 ⑤管理 传统的企业级 SOA 服务往往很大,不易于管理,耦合性高,团队开发 成本比较大。 微服务,可以让团队各思其政的选择技术实现,不同的 Service 可以 根据各自的需要选择不同的技术栈来实现其业务逻辑。 微服务的利与弊 ?优点是每个服务足够内聚,足够小,代码容易理解这样能聚焦一个指定的业务功能或业务需求。 ?开发简单、开发效率提高,一个服务可能就是专一的只干一件事。 ?微服务能够被小团队单独开发,这个小团队是 2 到 5 人的开发人员组成。?微服务是松耦合的,是有功能意义的服务,无论是在开发阶段或部署阶段都是独立的。 ?微服务能使用不同的语言开发。 ?易于和第三方集成,微服务允许容易且灵活的方式集成自动部署,通过持续集成工具,如 Jenkins,Hudson,bamboo。 ?微服务易于被一个开发人员理解,修改和维护,这样小团队能够更关注自己的工作成果。无需通过合作才能体现价值。微服务允许你利用融合最新技术。 ?微服务只是业务逻辑的代码,不会和 HTML,CSS 或其他界面组件混合。?每个微服务都有自己的存储能力,可以有自己的数据库,也可以有统一数据库。 总的来说,微服务的优势,就是在于,面对大的系统,可以有效的减少复杂程度,使服务架构的逻辑更清晰明了。 但是这样也会带来很多问题,就譬如分布式环境下的数据一致性,测试的复杂性,运维的复杂性。 什么组织适合使用微服务? 微服务带了种种优点,种种弊端,那么什么组织适合使用微服务? ①墨菲定律(设计系统)和康威定律(系统划分) 设计系统的组织,其产生的设计等同于组织之内、组织之间的沟通结构。

相关主题
文本预览
相关文档 最新文档